Subversion Repositories spk

Rev

Rev 196 | Rev 203 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 196 Rev 197
Line 119... Line 119...
119
		}
119
		}
120
 
120
 
121
		if ( m_pPackage->icon() )
121
		if ( m_pPackage->icon() )
122
		{
122
		{
123
			C_File *f = m_pPackage->icon();
123
			C_File *f = m_pPackage->icon();
124
			f->setFilename(_S(System::IO::Path::GetTempPath()) + "/package_icon." + m_pPackage->iconExt());
124
			f->setFilename(_WS(System::IO::Path::GetTempPath()) + L"/package_icon." + m_pPackage->iconExt());
125
			f->setFullDir(_S(System::IO::Path::GetTempPath()));
125
			f->setFullDir(_WS(System::IO::Path::GetTempPath()));
126
			long size;
126
			long size;
127
			unsigned char *data = f->UncompressData(&size, 0);
127
			unsigned char *data = f->UncompressData(&size, 0);
128
			if ( data && size )
128
			if ( data && size )
129
			{
129
			{
130
				f->writeFilePointer(data, size);
130
				f->writeFilePointer(data, size);
Line 643... Line 643...
643
		System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(PackageForm::typeid));
643
		System::ComponentModel::ComponentResourceManager^  resources = (gcnew System::ComponentModel::ComponentResourceManager(PackageForm::typeid));
644
		this->ButPicBack->Enabled = false;
644
		this->ButPicBack->Enabled = false;
645
		this->ButPicNext->Enabled = false;
645
		this->ButPicNext->Enabled = false;
646
		if ( m_pDisplayFile )
646
		if ( m_pDisplayFile )
647
		{
647
		{
648
			Utils::String filePointer = m_pDisplayFile->filePointer();
648
			Utils::WString filePointer = m_pDisplayFile->filePointer();
649
			filePointer = filePointer.findReplace("/", "\\");
649
			filePointer = filePointer.findReplace(L"/", L"\\");
650
			filePointer = filePointer.findReplace("\\\\", "\\");
650
			filePointer = filePointer.findReplace(L"\\\\", L"\\");
651
			if ( System::IO::File::Exists(_US(filePointer)) )
651
			if ( System::IO::File::Exists(_US(filePointer)) )
652
			{
652
			{
653
				Bitmap ^myBitmap = gcnew Bitmap(_US(filePointer));
653
				Bitmap ^myBitmap = gcnew Bitmap(_US(filePointer));
654
				if ( myBitmap )
654
				if ( myBitmap )
655
					this->DisplayPicture->Image = dynamic_cast<Image ^>(myBitmap);
655
					this->DisplayPicture->Image = dynamic_cast<Image ^>(myBitmap);
Line 708... Line 708...
708
		this->ButIconDel->Enabled = false;
708
		this->ButIconDel->Enabled = false;
709
 
709
 
710
		if ( m_pPackage->icon() )
710
		if ( m_pPackage->icon() )
711
		{
711
		{
712
			this->ButIconDel->Enabled = true;
712
			this->ButIconDel->Enabled = true;
713
			Utils::String filePointer = m_pPackage->icon()->filePointer();
713
			Utils::WString filePointer = m_pPackage->icon()->filePointer();
714
			filePointer = filePointer.findReplace("/", "\\");
714
			filePointer = filePointer.findReplace(L"/", L"\\");
715
			filePointer = filePointer.findReplace("\\\\", "\\");
715
			filePointer = filePointer.findReplace(L"\\\\", L"\\");
716
			String ^file = _US(filePointer);
716
			String ^file = _US(filePointer);
717
			if ( System::IO::File::Exists(file) )
717
			if ( System::IO::File::Exists(file) )
718
			{
718
			{
719
				Bitmap ^myBitmap = gcnew Bitmap(file);
719
				Bitmap ^myBitmap = gcnew Bitmap(file);
720
				if ( myBitmap )
720
				if ( myBitmap )
Line 747... Line 747...
747
 
747
 
748
		this->TextExactVersion->Hide();
748
		this->TextExactVersion->Hide();
749
 
749
 
750
		SGameExe *exe = NULL;
750
		SGameExe *exe = NULL;
751
		if ( ButGame->ImageIndex >= 0 )
751
		if ( ButGame->ImageIndex >= 0 )
752
			exe = m_pP->GetGameExe()->GetGame((m_pPackage) ? ButGame->ImageIndex : -1);
752
			exe = m_pP->GetGameExe()->game((m_pPackage) ? ButGame->ImageIndex : -1);
753
		if ( exe )
753
		if ( exe )
754
		{			
754
		{			
755
			ComboVersion->Items->Add("Original");
755
			ComboVersion->Items->Add("Original");
756
			for ( int i = 0; i < exe->lVersions.size(); i++ )
756
			for ( int i = 0; i < exe->lVersions.size(); i++ )
757
			{
757
			{
Line 889... Line 889...
889
		this->ToolGame->DropDownItems->Add(_removeGameItem);
889
		this->ToolGame->DropDownItems->Add(_removeGameItem);
890
 
890
 
891
		newItem = this->ToolGame->DropDownItems->Add("------");
891
		newItem = this->ToolGame->DropDownItems->Add("------");
892
		newItem->Enabled = false;
892
		newItem->Enabled = false;
893
 
893
 
894
		for ( int i = 0; i < m_pP->GetGameExe()->GetNumGames(); i++ )
894
		for ( int i = 0; i < m_pP->GetGameExe()->numGames(); i++ )
895
		{
895
		{
896
			SGameExe *gameExe = m_pP->GetGameExe()->GetGame(i);
896
			SGameExe *gameExe = m_pP->GetGameExe()->game(i);
897
			if ( gameExe )
897
			if ( gameExe )
898
			{
898
			{
899
				System::Windows::Forms::ToolStripMenuItem ^newItem = gcnew System::Windows::Forms::ToolStripMenuItem;
899
				System::Windows::Forms::ToolStripMenuItem ^newItem = gcnew System::Windows::Forms::ToolStripMenuItem;
900
				newItem->Text = _US(gameExe->sName);
900
				newItem->Text = _US(gameExe->sName);
901
				newItem->Tag = Convert::ToString(i + 1);
901
				newItem->Tag = Convert::ToString(i + 1);
Line 1030... Line 1030...
1030
			item->SubItems->Add("All Games");
1030
			item->SubItems->Add("All Games");
1031
		else
1031
		else
1032
		{
1032
		{
1033
			if (file->game() & (1 << 31))
1033
			if (file->game() & (1 << 31))
1034
			{			
1034
			{			
1035
				Utils::String sGames = "";
1035
				Utils::WString sGames = L"";
1036
				for (int i = 0; i < 31; ++i)
1036
				for (int i = 0; i < 31; ++i)
1037
				{
1037
				{
1038
					int gameMask = 1 << i;
1038
					int gameMask = 1 << i;
1039
					if (file->game() & gameMask)
1039
					if (file->game() & gameMask)
1040
					{
1040
					{
1041
						Utils::String sGame;
1041
						Utils::WString sGame;
1042
						SGameExe *exe = _pPackages->GetGameExe()->GetGame(i - 1);
1042
						SGameExe *exe = _pPackages->GetGameExe()->game(i - 1);
1043
						if (exe)
1043
						if (exe)
1044
							sGame = exe->sName;
1044
							sGame = exe->sName;
1045
						else
1045
						else
1046
							sGame = "Game: " + Utils::String::Number(i);
1046
							sGame = L"Game: " + Utils::WString::Number(i);
1047
 
1047
 
1048
						if (sGames.empty())
1048
						if (sGames.empty())
1049
							sGames = sGame;
1049
							sGames = sGame;
1050
						else
1050
						else
1051
							sGames = sGames + ", " + sGame;
1051
							sGames = sGames + L", " + sGame;
1052
					}
1052
					}
1053
				}
1053
				}
1054
				item->SubItems->Add(_US(sGames));
1054
				item->SubItems->Add(_US(sGames));
1055
			}
1055
			}
1056
			else
1056
			else
1057
			{
1057
			{
1058
				SGameExe *exe = _pPackages->GetGameExe()->GetGame(file->game() - 1);
1058
				SGameExe *exe = _pPackages->GetGameExe()->game(file->game() - 1);
1059
				if (exe) {
1059
				if (exe) {
1060
					item->SubItems->Add(_US(exe->sName));
1060
					item->SubItems->Add(_US(exe->sName));
1061
				}
1061
				}
1062
				else {
1062
				else {
1063
					item->SubItems->Add("Game: " + file->game());
1063
					item->SubItems->Add("Game: " + file->game());
Line 1256... Line 1256...
1256
		if ( m_pPackage->GetType() == TYPE_XSP )
1256
		if ( m_pPackage->GetType() == TYPE_XSP )
1257
			ofd->Filter = "Ship Files (*.xsp)|*.xsp";
1257
			ofd->Filter = "Ship Files (*.xsp)|*.xsp";
1258
		else
1258
		else
1259
			ofd->Filter = "Package Files (*.spk)|*.spk";
1259
			ofd->Filter = "Package Files (*.spk)|*.spk";
1260
		ofd->AddExtension = true;
1260
		ofd->AddExtension = true;
1261
		Utils::String filename = m_pPackage->filename();
1261
		Utils::WString filename = m_pPackage->filename();
1262
		if (filename.empty())
1262
		if (filename.empty())
1263
			filename = m_pPackage->getAutosaveName();
1263
			filename = m_pPackage->getAutosaveName().toWString();
1264
		filename = filename.findReplace("/", "\\");
1264
		filename = filename.findReplace(L"/", L"\\");
1265
		ofd->FileName = _US(filename);
1265
		ofd->FileName = _US(filename);
1266
		ofd->FilterIndex = 1;
1266
		ofd->FilterIndex = 1;
1267
		ofd->RestoreDirectory = true;
1267
		ofd->RestoreDirectory = true;
1268
		if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
1268
		if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
1269
		{
1269
		{
1270
			m_pPackage->setFilename(_S(ofd->FileName));
1270
			m_pPackage->setFilename(_WS(ofd->FileName));
1271
			m_sFilename = ofd->FileName;
1271
			m_sFilename = ofd->FileName;
1272
			m_pTabPage->Text = _US(CFileIO(m_pPackage->filename()).filename());
1272
			m_pTabPage->Text = _US(CFileIO(m_pPackage->filename()).filename());
1273
			m_pMenuItem->Text = m_pTabPage->Text;
1273
			m_pMenuItem->Text = m_pTabPage->Text;
1274
			this->Save();
1274
			this->Save();
1275
		}
1275
		}
Line 1312... Line 1312...
1312
						 e->Cancel = true;
1312
						 e->Cancel = true;
1313
						 return;
1313
						 return;
1314
					}
1314
					}
1315
				}
1315
				}
1316
 
1316
 
1317
				if ( !m_pPackage->writeFile(m_pPackage->filename()) )
1317
				if ( !m_pPackage->writeFile(m_pPackage->filename().toString()) )
1318
				{
1318
				{
1319
					e->Cancel = true;
1319
					e->Cancel = true;
1320
					MessageBox::Show("Unable to save package\n" + _US(m_pPackage->filename()), "Save Error", MessageBoxButtons::OK, MessageBoxIcon::Error);
1320
					MessageBox::Show("Unable to save package\n" + _US(m_pPackage->filename()), "Save Error", MessageBoxButtons::OK, MessageBoxIcon::Error);
1321
					return;
1321
					return;
1322
				}
1322
				}
Line 1430... Line 1430...
1430
			// if its a cat file, lets load the text
1430
			// if its a cat file, lets load the text
1431
			Hashtable ^catText = gcnew Hashtable();
1431
			Hashtable ^catText = gcnew Hashtable();
1432
 
1432
 
1433
			if ( String::Compare(IO::FileInfo(ofd->FileName).Extension, ".cat") == 0 )
1433
			if ( String::Compare(IO::FileInfo(ofd->FileName).Extension, ".cat") == 0 )
1434
			{
1434
			{
1435
				Utils::CStringList readText;
1435
				Utils::WStringList readText;
1436
				if ( m_pP->readTextPage(_S(ofd->FileName), readText, false, 17) )
1436
				if ( m_pP->readTextPage(_S(ofd->FileName), readText, false, 17) )
1437
				{
1437
				{
1438
					for(auto itr = readText.begin(); itr != readText.end(); itr++)
1438
					for(auto itr = readText.begin(); itr != readText.end(); itr++)
1439
					{
1439
					{
1440
						String ^key = _US((*itr)->str);
1440
						String ^key = _US((*itr)->str);
Line 1642... Line 1642...
1642
				}
1642
				}
1643
				break;
1643
				break;
1644
		 }
1644
		 }
1645
	}
1645
	}
1646
 
1646
 
1647
	void PackageForm::DropGetDirectories(String ^dir, Utils::CStringList *list, bool packages)
1647
	void PackageForm::DropGetDirectories(String ^dir, Utils::WStringList *list, bool packages)
1648
	{
1648
	{
1649
		cli::array<String ^> ^dirList = IO::Directory::GetFileSystemEntries(dir);
1649
		cli::array<String ^> ^dirList = IO::Directory::GetFileSystemEntries(dir);
1650
		for ( int j = 0; j < dirList->Length; j++ )
1650
		for ( int j = 0; j < dirList->Length; j++ )
1651
		{
1651
		{
1652
			if ( IO::DirectoryInfo(dirList[j]).Exists )
1652
			if ( IO::DirectoryInfo(dirList[j]).Exists )
1653
				this->DropGetDirectories(dirList[j], list, packages);
1653
				this->DropGetDirectories(dirList[j], list, packages);
1654
			else
1654
			else
1655
			{
1655
			{
1656
				if ( packages )
1656
				if ( packages )
1657
					list->pushBack(_S(dirList[j]), "-1");
1657
					list->pushBack(_WS(dirList[j]), L"-1");
1658
				else
1658
				else
1659
					list->pushBack(_S(dirList[j]), Utils::String::Number(SPK::GetAutomaticFiletype(_S(dirList[j]), NULL,false)));
1659
					list->pushBack(_WS(dirList[j]), Utils::WString::Number(SPK::GetAutomaticFiletype(_WS(dirList[j]), NULL,false)));
1660
			}
1660
			}
1661
		}
1661
		}
1662
	}
1662
	}
1663
 
1663
 
1664
	void PackageForm::RemoveSelectedFiles()
1664
	void PackageForm::RemoveSelectedFiles()
Line 1694... Line 1694...
1694
		
1694
		
1695
		if ( String::Compare(IO::FileInfo(file).Extension, ".pck") == 0 )
1695
		if ( String::Compare(IO::FileInfo(file).Extension, ".pck") == 0 )
1696
		{
1696
		{
1697
			C_File F(_S(file));
1697
			C_File F(_S(file));
1698
			F.UnPCKFile();
1698
			F.UnPCKFile();
1699
			if ( F.writeToFile(CPackages::tempDirectory() + "tmp.dat") )
1699
			if ( F.writeToFile(CPackages::tempDirectory().toString() + "tmp.dat"))
1700
				return _US(CPackages::tempDirectory() + "tmp.dat");
1700
				return _US(CPackages::tempDirectory() + L"tmp.dat");
1701
		}
1701
		}
1702
		else if ( String::Compare(IO::FileInfo(file).Extension, ".cat") == 0 )
1702
		else if ( String::Compare(IO::FileInfo(file).Extension, ".cat") == 0 )
1703
		{
1703
		{
1704
			CCatFile cat;
1704
			CCatFile cat;
1705
			if ( cat.open(_S(file), "", CATREAD_CATDECRYPT, false) == CATERR_NONE )
1705
			if ( cat.open(_S(file), "", CATREAD_CATDECRYPT, false) == CATERR_NONE )
1706
			{
1706
			{
1707
				if ( cat.extractFile(_S("types\\" + type + ".pck"), CPackages::tempDirectory() + "tmp.dat") )
1707
				if ( cat.extractFile(_S("types\\" + type + ".pck"), CPackages::tempDirectory().toString() + "tmp.dat"))
1708
					return _US(CPackages::tempDirectory() + "tmp.dat");
1708
					return _US(CPackages::tempDirectory() + L"tmp.dat");
1709
			}
1709
			}
1710
		}
1710
		}
1711
 
1711
 
1712
		return "";
1712
		return "";
1713
	}
1713
	}