Subversion Repositories spk

Rev

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

Rev 158 Rev 160
Line 258... Line 258...
258
			}
258
			}
259
		}
259
		}
260
		else if ( System::IO::File::Exists(filename) )
260
		else if ( System::IO::File::Exists(filename) )
261
		{
261
		{
262
			CyString sF = CyStringFromSystemString(filename);
262
			CyString sF = CyStringFromSystemString(filename);
263
			if ( CFileIO(sF).CheckFileExtension("bmp") )
263
			if ( CFileIO(sF).isFileExtension("bmp") )
264
			{
264
			{
265
				list->Images->Add(key, Bitmap::FromFile(filename));
265
				list->Images->Add(key, Bitmap::FromFile(filename));
266
				added = true;
266
				added = true;
267
			}
267
			}
268
			else
268
			else
Line 535... Line 535...
535
			return;
535
			return;
536
 
536
 
537
		AddDialog ^ad = gcnew AddDialog(m_pPackage, m_pMultiPackage);
537
		AddDialog ^ad = gcnew AddDialog(m_pPackage, m_pMultiPackage);
538
		ad->SetRemove();
538
		ad->SetRemove();
539
 
539
 
540
		int pos = CyStringFromSystemString(cli::safe_cast<System::String ^>(item->Tag)).ToInt();
540
		int pos = _S(cli::safe_cast<System::String ^>(item->Tag)).toInt();
541
		C_File *f = m_pPackage->GetFileList()->Get(pos);
541
		C_File *f = m_pPackage->GetFileList()->Get(pos);
542
		if ( f )
542
		if ( f )
543
			ad->AddFile(SystemStringFromCyString(f->GetName()), SystemStringFromCyString(f->GetDir()), f->GetFileType(), f->GetGame());
543
			ad->AddFile(_US(f->name()), _US(f->dir()), f->GetFileType(), f->GetGame());
544
 
544
 
545
		// remove the dat or cat file as well
545
		// remove the dat or cat file as well
546
		if ( f->GetFileType() == FILETYPE_MOD )
546
		if ( f->GetFileType() == FILETYPE_MOD )
547
		{
547
		{
548
			if ( f->CheckFileExt("cat") )
548
			if ( f->CheckFileExt("cat") )
549
			{
549
			{
550
				C_File *datFile = m_pPackage->FindFile(CFileIO(f).ChangeFileExtension("dat"), FILETYPE_MOD, "", f->GetGame());
550
				C_File *datFile = m_pPackage->FindFile(CFileIO(f).changeFileExtension("dat"), FILETYPE_MOD, "", f->GetGame());
551
				if ( datFile )
551
				if ( datFile )
552
					ad->AddFile(SystemStringFromCyString(datFile->GetName()), SystemStringFromCyString(datFile->GetDir()), datFile->GetFileType(), datFile->GetGame());
552
					ad->AddFile(_US(datFile->name()), _US(datFile->dir()), datFile->GetFileType(), datFile->GetGame());
553
			}
553
			}
554
			else if ( f->CheckFileExt("dat") )
554
			else if ( f->CheckFileExt("dat") )
555
			{
555
			{
556
				C_File *datFile = m_pPackage->FindFile(CFileIO(f).ChangeFileExtension("cat"), FILETYPE_MOD, "", f->GetGame());
556
				C_File *datFile = m_pPackage->FindFile(CFileIO(f).changeFileExtension("cat"), FILETYPE_MOD, "", f->GetGame());
557
				if ( datFile )
557
				if ( datFile )
558
					ad->AddFile(SystemStringFromCyString(datFile->GetName()), SystemStringFromCyString(datFile->GetDir()), datFile->GetFileType(), datFile->GetGame());
558
					ad->AddFile(_US(datFile->name()), _US(datFile->dir()), datFile->GetFileType(), datFile->GetGame());
559
			}
559
			}
560
		}
560
		}
561
		ad->ShowDialog(this);
561
		ad->ShowDialog(this);
562
		this->UpdateView(true);
562
		this->UpdateView(true);
563
	}
563
	}
Line 569... Line 569...
569
		AddDialog ^ad = gcnew AddDialog(m_pPackage, m_pMultiPackage);
569
		AddDialog ^ad = gcnew AddDialog(m_pPackage, m_pMultiPackage);
570
		ad->SetRemove();
570
		ad->SetRemove();
571
 
571
 
572
		for ( int i = 0; i < this->listView1->SelectedItems->Count; i++ )
572
		for ( int i = 0; i < this->listView1->SelectedItems->Count; i++ )
573
		{
573
		{
574
			int pos = CyStringFromSystemString(cli::safe_cast<System::String ^>(this->listView1->SelectedItems[i]->Tag)).ToInt();
574
			int pos = _S(cli::safe_cast<System::String ^>(this->listView1->SelectedItems[i]->Tag)).toInt();
575
			C_File *f = m_pPackage->GetFileList()->Get(pos);
575
			C_File *f = m_pPackage->GetFileList()->Get(pos);
576
			if ( f )
576
			if ( f )
577
				ad->AddFile(SystemStringFromCyString(f->GetName()), SystemStringFromCyString(f->GetDir()), f->GetFileType(), f->GetGame());
577
				ad->AddFile(_US(f->name()), _US(f->dir()), f->GetFileType(), f->GetGame());
578
 
578
 
579
			// remove the dat or cat file as well
579
			// remove the dat or cat file as well
580
			if ( f->GetFileType() == FILETYPE_MOD )
580
			if ( f->GetFileType() == FILETYPE_MOD )
581
			{
581
			{
582
				if ( f->CheckFileExt("cat") )
582
				if ( f->CheckFileExt("cat") )
583
				{
583
				{
584
					C_File *datFile = m_pPackage->FindFile(CFileIO(f).ChangeFileExtension("dat"), FILETYPE_MOD, "", f->GetGame());
584
					C_File *datFile = m_pPackage->FindFile(CFileIO(f).changeFileExtension("dat"), FILETYPE_MOD, "", f->GetGame());
585
					if ( datFile )
585
					if ( datFile )
586
						ad->AddFile(SystemStringFromCyString(datFile->GetName()), SystemStringFromCyString(datFile->GetDir()), datFile->GetFileType(), datFile->GetGame());
586
						ad->AddFile(_US(datFile->name()), _US(datFile->dir()), datFile->GetFileType(), datFile->GetGame());
587
				}
587
				}
588
				else if ( f->CheckFileExt("dat") )
588
				else if ( f->CheckFileExt("dat") )
589
				{
589
				{
590
					C_File *datFile = m_pPackage->FindFile(CFileIO(f).ChangeFileExtension("cat"), FILETYPE_MOD, "", f->GetGame());
590
					C_File *datFile = m_pPackage->FindFile(CFileIO(f).changeFileExtension("cat"), FILETYPE_MOD, "", f->GetGame());
591
					if ( datFile )
591
					if ( datFile )
592
						ad->AddFile(SystemStringFromCyString(datFile->GetName()), SystemStringFromCyString(datFile->GetDir()), datFile->GetFileType(), datFile->GetGame());
592
						ad->AddFile(_US(datFile->name()), _US(datFile->dir()), datFile->GetFileType(), datFile->GetGame());
593
				}
593
				}
594
			}
594
			}
595
		}
595
		}
596
 
596
 
597
		ad->ShowDialog(this);
597
		ad->ShowDialog(this);
598
 
598
 
599
		this->UpdateView(true);
599
		this->UpdateView(true);
600
	}
600
	}
601
 
601
 
602
	void SpkForm::RemoveSelectedPackage()
602
	void SpkForm::RemoveSelectedPackage()
603
	{
603
	{
Line 627... Line 627...
627
		int game = 0;
627
		int game = 0;
628
		if ( m_pPackage->IsMultipleGamesInPackage() ) {
628
		if ( m_pPackage->IsMultipleGamesInPackage() ) {
629
			Creator::SelectGame ^selGame = gcnew Creator::SelectGame("Select game to extract", NULL);
629
			Creator::SelectGame ^selGame = gcnew Creator::SelectGame("Select game to extract", NULL);
630
			if ( selGame->ShowDialog(this) == Windows::Forms::DialogResult::OK ) {
630
			if ( selGame->ShowDialog(this) == Windows::Forms::DialogResult::OK ) {
631
				game = selGame->GetGame() + 1;
631
				game = selGame->GetGame() + 1;
632
			}
632
			}
633
			else
633
			else
634
				return;
634
				return;
635
 
635
 
636
		}
636
		}
637
		else if ( m_pPackage->IsAnyGameInPackage() ) {
637
		else if ( m_pPackage->IsAnyGameInPackage() ) {
638
			game = m_pPackage->FindFirstGameInPackage();
638
			game = m_pPackage->FindFirstGameInPackage();
639
		}
639
		}
640
		this->DoExtract(m_pPackage->GetFileList(), toDir, game);
640
		this->DoExtract(m_pPackage->GetFileList(), toDir, game);
641
	}
641
	}
642
 
642
 
643
	void SpkForm::ExtractAllPackage(System::String ^toDir)
643
	void SpkForm::ExtractAllPackage(System::String ^toDir)
644
	{
644
	{
645
		if ( !m_pMultiPackage )
645
		if ( !m_pMultiPackage )
646
			return;
646
			return;
647
		this->DoPackageExtract(m_pMultiPackage->GetFileList(), toDir);
647
		this->DoPackageExtract(m_pMultiPackage->GetFileList(), toDir);
648
	}
648
	}
649
 
649
 
650
	System::Void SpkForm::DragEnterEvent(System::Object ^Sender, DragEventArgs ^E)
650
	System::Void SpkForm::DragEnterEvent(System::Object ^Sender, DragEventArgs ^E)
651
	{
651
	{
652
		E->Effect = DragDropEffects::None;
652
		E->Effect = DragDropEffects::None;
653
 
653
 
654
		if ( !m_pPackage )
654
		if ( !m_pPackage )
655
			return;
655
			return;
656
 
656
 
657
		if ( ((Form1 ^)this->MdiParent)->DragFromForm() && ((Form1 ^)this->MdiParent)->DragFromForm() != this )
657
		if ( ((Form1 ^)this->MdiParent)->DragFromForm() && ((Form1 ^)this->MdiParent)->DragFromForm() != this )
658
		{
658
		{
659
			if ((E->KeyState & 4) == 4 && (E->AllowedEffect & DragDropEffects::Move) == DragDropEffects::Move) 
659
			if ((E->KeyState & 4) == 4 && (E->AllowedEffect & DragDropEffects::Move) == DragDropEffects::Move) 
660
				E->Effect = DragDropEffects::Move;
660
				E->Effect = DragDropEffects::Move;
661
			else if ((E->KeyState & 8) == 8 && (E->AllowedEffect & DragDropEffects::Copy) == DragDropEffects::Copy) 
661
			else if ((E->KeyState & 8) == 8 && (E->AllowedEffect & DragDropEffects::Copy) == DragDropEffects::Copy) 
Line 685... Line 685...
685
	}
685
	}
686
 
686
 
687
	System::Void SpkForm::listView2_DragDrop(System::Object^  sender, System::Windows::Forms::DragEventArgs^  E)
687
	System::Void SpkForm::listView2_DragDrop(System::Object^  sender, System::Windows::Forms::DragEventArgs^  E)
688
	{
688
	{
689
		if ( !m_pMultiPackage )
689
		if ( !m_pMultiPackage )
690
			return;
690
			return;
691
 
691
 
692
		if ( E->Data->GetDataPresent(DataFormats::FileDrop) )
692
		if ( E->Data->GetDataPresent(DataFormats::FileDrop) )
693
		{
693
		{
694
			CyStringList fileList;
694
			CyStringList fileList;
695
			cli::array<String ^> ^a = (cli::array<String ^> ^)E->Data->GetData(DataFormats::FileDrop, false);
695
			cli::array<String ^> ^a = (cli::array<String ^> ^)E->Data->GetData(DataFormats::FileDrop, false);
696
			int i;
696
			int i;
Line 709... Line 709...
709
				for ( SStringList *str = fileList.Head(); str; str = str->next )
709
				for ( SStringList *str = fileList.Head(); str; str = str->next )
710
				{
710
				{
711
					if ( str->data != "-1" )
711
					if ( str->data != "-1" )
712
						continue;
712
						continue;
713
 
713
 
714
					CyString ext = CFileIO(str->str).GetFileExtension();
714
					Utils::String ext = CFileIO(str->str).extension();
715
					if ( !ext.Compare("xsp") && !ext.Compare("spk") )
715
					if ( !ext.Compare("xsp") && !ext.Compare("spk") )
716
						continue;
716
						continue;
717
					
717
					
718
					ad->AddFile(SystemStringFromCyString(str->str), "", -1, 0);
718
					ad->AddFile(SystemStringFromCyString(str->str), "", -1, 0);
719
				}
719
				}
Line 911... Line 911...
911
			else if ( m_pSelectedPackage )
911
			else if ( m_pSelectedPackage )
912
			{
912
			{
913
				if ( !m_pMultiPackage->ReadSpk(m_pSelectedPackage, SPKREAD_ALL) )
913
				if ( !m_pMultiPackage->ReadSpk(m_pSelectedPackage, SPKREAD_ALL) )
914
					return false;
914
					return false;
915
			}
915
			}
916
		}
916
		}
917
		else
917
		else
918
			m_pPackage->ReadAllFilesToMemory();
918
			m_pPackage->ReadAllFilesToMemory();
919
		return true;
919
		return true;
920
	}
920
	}
921
 
921
 
Line 1004... Line 1004...
1004
				case FILETYPE_MOD:
1004
				case FILETYPE_MOD:
1005
					if ( m_pPackage->ExtractFile(f, CyStringFromSystemString(IO::Path::GetTempPath()), false) )
1005
					if ( m_pPackage->ExtractFile(f, CyStringFromSystemString(IO::Path::GetTempPath()), false) )
1006
					{
1006
					{
1007
						if ( f->CheckFileExt("cat") )
1007
						if ( f->CheckFileExt("cat") )
1008
						{
1008
						{
1009
							C_File *datFile = m_pPackage->FindFile(CFileIO(f).ChangeFileExtension("dat"), FILETYPE_MOD, "");
1009
							C_File *datFile = m_pPackage->FindFile(CFileIO(f).changeFileExtension("dat"), FILETYPE_MOD, "");
1010
							if ( datFile )
1010
							if ( datFile )
1011
							{
1011
							{
1012
								if ( m_pPackage->ExtractFile(datFile, CyStringFromSystemString(IO::Path::GetTempPath()), false) )
1012
								if ( m_pPackage->ExtractFile(datFile, CyStringFromSystemString(IO::Path::GetTempPath()), false) )
1013
									process->StartInfo->FileName = IO::Path::GetTempPath() + "\\" + SystemStringFromCyString(f->GetName());
1013
									process->StartInfo->FileName = IO::Path::GetTempPath() + "\\" + _US(f->name());
1014
							}
1014
							}
1015
						}
1015
						}
1016
						else if ( f->CheckFileExt("dat") )
1016
						else if ( f->CheckFileExt("dat") )
1017
						{
1017
						{
1018
							C_File *catFile = m_pPackage->FindFile(CFileIO(f).ChangeFileExtension("cat"), FILETYPE_MOD, "");
1018
							C_File *catFile = m_pPackage->FindFile(CFileIO(f).changeFileExtension("cat"), FILETYPE_MOD, "");
1019
							if ( catFile )
1019
							if ( catFile )
1020
							{
1020
							{
1021
								if ( m_pPackage->ExtractFile(catFile, CyStringFromSystemString(IO::Path::GetTempPath()), false) )
1021
								if ( m_pPackage->ExtractFile(catFile, CyStringFromSystemString(IO::Path::GetTempPath()), false) )
1022
									process->StartInfo->FileName = IO::Path::GetTempPath() + "\\" + SystemStringFromCyString(catFile->GetName());
1022
									process->StartInfo->FileName = IO::Path::GetTempPath() + "\\" + _US(catFile->name());
1023
							}
1023
							}
1024
						}
1024
						}
1025
					}
1025
					}
1026
					break;
1026
					break;
1027
 
1027
 
1028
				case FILETYPE_MAP:
1028
				case FILETYPE_MAP:
1029
					break;
1029
					break;
1030
 
1030
 
1031
				default:
1031
				default:
1032
					if ( m_pPackage->ExtractFile(f, CyStringFromSystemString(IO::Path::GetTempPath()), false) )
1032
					if ( m_pPackage->ExtractFile(f, CyStringFromSystemString(IO::Path::GetTempPath()), false) )
1033
						process->StartInfo->FileName = IO::Path::GetTempPath() + "\\" + SystemStringFromCyString(f->GetName());
1033
						process->StartInfo->FileName = IO::Path::GetTempPath() + "\\" + _US(f->name());
1034
			}
1034
			}
1035
 
1035
 
1036
			if ( process->StartInfo->FileName && process->StartInfo->FileName->Length )
1036
			if ( process->StartInfo->FileName && process->StartInfo->FileName->Length )
1037
			{
1037
			{
1038
				process->StartInfo->CreateNoWindow = true;
1038
				process->StartInfo->CreateNoWindow = true;