Subversion Repositories spk

Rev

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

Rev 126 Rev 127
Line 7... Line 7...
7
#include "SaveDialog.h"
7
#include "SaveDialog.h"
8
 
8
 
9
#include <Package/InstallText.h>
9
#include <Package/InstallText.h>
10
 
10
 
11
namespace Creator {
11
namespace Creator {
-
 
12
	PackageForm::PackageForm(System::Windows::Forms::Form ^parent, System::Windows::Forms::TabControl ^ctrl, System::Windows::Forms::TabPage ^page, System::Windows::Forms::ToolStripMenuItem ^tool, CPackages *p, Windows::Forms::ImageList ^imagelist, SSettings *set) 
-
 
13
		: BaseForm(parent, ctrl, page, tool, p, imagelist, set),
-
 
14
		_addGameItem(nullptr),
-
 
15
		_removeGameItem(nullptr)
-
 
16
	{
-
 
17
		InitializeComponent();
-
 
18
		this->LabelShipWarning->Visible = false;
-
 
19
		this->TextExactVersion->Visible = false;
-
 
20
		this->DoToolTips();
-
 
21
 
-
 
22
		this->ListDep->LargeImageList = this->imageList1;
-
 
23
		this->ListDep->SmallImageList = this->imageList1;
-
 
24
 
-
 
25
		m_pSettings = set;
-
 
26
		m_iFormType = FORMTYPE_SINGLE;
-
 
27
		m_pDisplayFile = NULL;
-
 
28
 
-
 
29
		this->NumTextID->Visible = false;
-
 
30
 
-
 
31
		m_iSelectedGame = -1;
-
 
32
 
-
 
33
		this->Closing += gcnew CancelEventHandler(this, &PackageForm::PackageForm_Closing);
-
 
34
 
-
 
35
		_pPackages = new CPackages();
-
 
36
		_pPackages->startup(".", ".", ".");
-
 
37
		m_pPackage = NULL;
-
 
38
		m_pTypeList = new CyStringList;
-
 
39
 
-
 
40
		this->ComboShipPart->SelectedIndex = 0;
-
 
41
 
-
 
42
		m_bLoading = false;
-
 
43
	}
-
 
44
 
-
 
45
	PackageForm::~PackageForm()
-
 
46
	{
-
 
47
		if (components)
-
 
48
			delete components;
-
 
49
 
-
 
50
		delete m_pTypeList;
-
 
51
		if (m_pPackage)
-
 
52
			delete m_pPackage;
-
 
53
		if (_pPackages)
-
 
54
			delete _pPackages;
-
 
55
	}
-
 
56
 
-
 
57
 
12
	bool PackageForm::LoadPackage(CBaseFile *base, System::String ^filename)
58
	bool PackageForm::LoadPackage(CBaseFile *base, System::String ^filename)
13
	{
59
	{
14
		m_sFilename = filename;
60
		m_sFilename = filename;
15
 
61
 
16
		if ( !base )
62
		if ( !base )
Line 673... Line 719...
673
 
719
 
674
		ComboVersion->BeginUpdate();
720
		ComboVersion->BeginUpdate();
675
		ComboVersion->Items->Clear();
721
		ComboVersion->Items->Clear();
676
 
722
 
677
		this->TextExactVersion->Hide();
723
		this->TextExactVersion->Hide();
678
 
724
 
679
		SGameExe *exe = NULL;
725
		SGameExe *exe = NULL;
680
		if ( ButGame->ImageIndex >= 0 )
726
		if ( ButGame->ImageIndex >= 0 )
681
			exe = m_pP->GetGameExe()->GetGame((m_pPackage) ? ButGame->ImageIndex : -1);
727
			exe = m_pP->GetGameExe()->GetGame((m_pPackage) ? ButGame->ImageIndex : -1);
682
		if ( exe )
728
		if ( exe )
683
		{			
729
		{			
Line 687... Line 733...
687
				SGameExeVersion *v = exe->lVersions[i];
733
				SGameExeVersion *v = exe->lVersions[i];
688
				ComboVersion->Items->Add(SystemStringFromCyString(v->sName));
734
				ComboVersion->Items->Add(SystemStringFromCyString(v->sName));
689
			}
735
			}
690
			ComboVersion->Items->Add("Exact (Custom)");
736
			ComboVersion->Items->Add("Exact (Custom)");
691
			ComboVersion->Enabled = true;
737
			ComboVersion->Enabled = true;
692
		}
738
		}
693
		else
739
		else
694
		{
740
		{
695
			ComboVersion->Enabled = false;
741
			ComboVersion->Enabled = false;
696
		}
742
		}
697
		
743
		
Line 701... Line 747...
701
		if ( !restoreLoad )
747
		if ( !restoreLoad )
702
			m_bLoading = false;
748
			m_bLoading = false;
703
	}
749
	}
704
 
750
 
705
	void PackageForm::UpdateRatings()
751
	void PackageForm::UpdateRatings()
706
	{
752
	{
707
		this->PicEase1->BackColor = System::Drawing::Color::Transparent;
753
		this->PicEase1->BackColor = System::Drawing::Color::Transparent;
708
		this->PicEase2->BackColor = System::Drawing::Color::Transparent;
754
		this->PicEase2->BackColor = System::Drawing::Color::Transparent;
709
		this->PicEase3->BackColor = System::Drawing::Color::Transparent;
755
		this->PicEase3->BackColor = System::Drawing::Color::Transparent;
710
		this->PicEase4->BackColor = System::Drawing::Color::Transparent;
756
		this->PicEase4->BackColor = System::Drawing::Color::Transparent;
711
		this->PicEase5->BackColor = System::Drawing::Color::Transparent;
757
		this->PicEase5->BackColor = System::Drawing::Color::Transparent;
Line 757... Line 803...
757
 
803
 
758
		if ( m_pPackage->easeOfUse() < 0 )
804
		if ( m_pPackage->easeOfUse() < 0 )
759
			this->GroupEase->Text = "Ease of Use";
805
			this->GroupEase->Text = "Ease of Use";
760
		else
806
		else
761
			this->GroupEase->Text = "Ease of Use (" + System::Convert::ToString(m_pPackage->easeOfUse()) + ")";
807
			this->GroupEase->Text = "Ease of Use (" + System::Convert::ToString(m_pPackage->easeOfUse()) + ")";
762
 
808
 
763
		if ( m_pPackage->gameChanging() < 0 )
809
		if ( m_pPackage->gameChanging() < 0 )
764
			this->GroupChange->Text = "Game Changing";
810
			this->GroupChange->Text = "Game Changing";
765
		else
811
		else
766
			this->GroupChange->Text = "Game Changing (" + System::Convert::ToString(m_pPackage->gameChanging()) + ")";
812
			this->GroupChange->Text = "Game Changing (" + System::Convert::ToString(m_pPackage->gameChanging()) + ")";
767
 
813
 
768
		if ( m_pPackage->recommended() < 0 )
814
		if ( m_pPackage->recommended() < 0 )
769
			this->GroupRec->Text = "Recommended";
815
			this->GroupRec->Text = "Recommended";
770
		else
816
		else
771
			this->GroupRec->Text = "Recommended (" + System::Convert::ToString(m_pPackage->recommended()) + ")";
817
			this->GroupRec->Text = "Recommended (" + System::Convert::ToString(m_pPackage->recommended()) + ")";
772
	}
818
	}
773
 
819
 
774
	void PackageForm::Setup()
820
	void PackageForm::Setup()
775
	{
821
	{
776
		m_bLoading = true;
822
		m_bLoading = true;
777
 
823
 
778
		this->ComboFileType->Items->Add("All Files");
824
		this->ComboFileType->Items->Add("All Files");
779
		for ( int i = 0; i < FILETYPE_MAX; i++ )
825
		for ( int i = 0; i < FILETYPE_MAX; i++ )
780
			this->ComboFileType->Items->Add(SystemStringFromCyString(GetFileTypeString(i)));
826
			this->ComboFileType->Items->Add(_US(GetFileTypeString(i)));
781
		this->ComboFileType->SelectedIndex = 0;
827
		this->ComboFileType->SelectedIndex = 0;
782
 
828
 
783
		this->PanelShip->Hide();
829
		this->PanelShip->Hide();
784
 
830
 
785
		m_bSortingAsc = true;
831
		m_bSortingAsc = true;
786
		m_iSortingCol = 1;
832
		m_iSortingCol = 1;
787
 
833
 
788
		this->ListFiles->ColumnClick += gcnew ColumnClickEventHandler(this, &Creator::PackageForm::SortList);
834
		this->ListFiles->ColumnClick += gcnew ColumnClickEventHandler(this, &Creator::PackageForm::SortList);
789
		this->ListFiles->ItemChecked += gcnew ItemCheckedEventHandler(this, &PackageForm::Event_FileChecked);
835
		this->ListFiles->ItemChecked += gcnew ItemCheckedEventHandler(this, &PackageForm::Event_FileChecked);
790
 
836
 
791
		this->ContextGames->Items->Clear();
837
		this->ContextGames->Items->Clear();
792
 
838
 
793
		this->ComboGameFilter->Items->Clear();
839
		this->ComboGameFilter->Items->Clear();
794
		this->ToolGame->DropDownItems->Clear();
840
		this->ToolGame->DropDownItems->Clear();
795
 
841
 
796
		this->ComboGameFilter->Items->Add("- None -");
842
		this->ComboGameFilter->Items->Add("- None -");
797
		this->ComboGameFilter->Items->Add("- All Games -");
843
		this->ComboGameFilter->Items->Add("- All Games -");
-
 
844
 
-
 
845
		ToolStripItem ^newItem = this->ToolGame->DropDownItems->Add("- All Games -");
-
 
846
		newItem->Tag = Convert::ToString(0);
-
 
847
		newItem->Click += gcnew System::EventHandler(this, &PackageForm::SetGame_Selected);
-
 
848
 
-
 
849
		newItem = this->ToolGame->DropDownItems->Add("------");
-
 
850
		newItem->Enabled = false;
-
 
851
 
-
 
852
		if (!_addGameItem)
-
 
853
		{
-
 
854
			_addGameItem = gcnew System::Windows::Forms::ToolStripMenuItem;
-
 
855
			_addGameItem->Text = "Add Game";
-
 
856
		}
-
 
857
		this->ToolGame->DropDownItems->Add(_addGameItem);
-
 
858
 
-
 
859
		if (!_removeGameItem)
-
 
860
		{
-
 
861
			_removeGameItem = gcnew System::Windows::Forms::ToolStripMenuItem;
-
 
862
			_removeGameItem->Text = "Remove Game";
-
 
863
		}
-
 
864
		this->ToolGame->DropDownItems->Add(_removeGameItem);
-
 
865
 
-
 
866
		newItem = this->ToolGame->DropDownItems->Add("------");
-
 
867
		newItem->Enabled = false;
798
 
868
 
799
		for ( int i = 0; i < m_pP->GetGameExe()->GetNumGames(); i++ )
869
		for ( int i = 0; i < m_pP->GetGameExe()->GetNumGames(); i++ )
800
		{
870
		{
801
			SGameExe *gameExe = m_pP->GetGameExe()->GetGame(i);
871
			SGameExe *gameExe = m_pP->GetGameExe()->GetGame(i);
802
			if ( gameExe )
872
			if ( gameExe )
803
			{
873
			{
804
				System::Windows::Forms::ToolStripMenuItem ^newItem = gcnew System::Windows::Forms::ToolStripMenuItem;
874
				System::Windows::Forms::ToolStripMenuItem ^newItem = gcnew System::Windows::Forms::ToolStripMenuItem;
805
				newItem->Text = SystemStringFromCyString(gameExe->sName);
875
				newItem->Text = _US(gameExe->sName);
806
				newItem->Tag = Convert::ToString(i + 1);
876
				newItem->Tag = Convert::ToString(i + 1);
807
				if (i < this->imageListGames->Images->Count)
877
				if (i < this->imageListGames->Images->Count)
808
					newItem->Image = this->imageListGames->Images[i];
878
					newItem->Image = this->imageListGames->Images[i];
809
				newItem->Click += gcnew System::EventHandler(this, &PackageForm::ContextGame_Selected);
879
				newItem->Click += gcnew System::EventHandler(this, &PackageForm::ContextGame_Selected);
810
				this->ContextGames->Items->Add(newItem);
880
				this->ContextGames->Items->Add(newItem);
811
 
881
 
812
				System::Windows::Forms::ToolStripMenuItem ^newItem2 = gcnew System::Windows::Forms::ToolStripMenuItem;
882
				System::Windows::Forms::ToolStripMenuItem ^newItem2 = gcnew System::Windows::Forms::ToolStripMenuItem;
813
				newItem2->Text = SystemStringFromCyString(gameExe->sName);
883
				newItem2->Text = _US(gameExe->sName);
814
				newItem2->Tag = Convert::ToString(i + 1);
884
				newItem2->Tag = Convert::ToString(i + 1);
815
				if (i < this->imageListGames->Images->Count)
885
				if (i < this->imageListGames->Images->Count)
816
					newItem2->Image = this->imageListGames->Images[i];
886
					newItem2->Image = this->imageListGames->Images[i];
817
				newItem2->Click += gcnew System::EventHandler(this, &PackageForm::SetGame_Selected);
887
				newItem2->Click += gcnew System::EventHandler(this, &PackageForm::SetGame_Selected);
818
				this->ToolGame->DropDownItems->Add(newItem2);
888
				this->ToolGame->DropDownItems->Add(newItem2);
-
 
889
				this->ComboGameFilter->Items->Add(_US(gameExe->sName));
819
 
890
 
-
 
891
				newItem2 = gcnew System::Windows::Forms::ToolStripMenuItem;
820
				this->ComboGameFilter->Items->Add(SystemStringFromCyString(gameExe->sName));
892
				newItem2->Text = _US(gameExe->sName);
-
 
893
				newItem2->Tag = Convert::ToString(i + 1);
-
 
894
				if (i < this->imageListGames->Images->Count)
-
 
895
					newItem2->Image = this->imageListGames->Images[i];
-
 
896
				newItem2->Click += gcnew System::EventHandler(this, &PackageForm::AddGame_Selected);
-
 
897
				_addGameItem->DropDownItems->Add(newItem2);
-
 
898
 
-
 
899
				newItem2 = gcnew System::Windows::Forms::ToolStripMenuItem;
-
 
900
				newItem2->Text = _US(gameExe->sName);
-
 
901
				newItem2->Tag = Convert::ToString(i + 1);
-
 
902
				if (i < this->imageListGames->Images->Count)
-
 
903
					newItem2->Image = this->imageListGames->Images[i];
-
 
904
				newItem2->Click += gcnew System::EventHandler(this, &PackageForm::RemoveGame_Selected);
-
 
905
				_removeGameItem->DropDownItems->Add(newItem2);
821
			}
906
			}
822
		}
907
		}
823
 
908
 
824
		this->ComboGameFilter->SelectedIndex = 0;
909
		this->ComboGameFilter->SelectedIndex = 0;
825
 
910
 
826
		this->ButGame->Text = "- Select Game -";
911
		this->ButGame->Text = "- Select Game -";
Line 828... Line 913...
828
 
913
 
829
		m_pTypeList->Clear();
914
		m_pTypeList->Clear();
830
		for ( int i = 0; i < CSpkFile::SCRIPTTYPE_MAX; i++ )
915
		for ( int i = 0; i < CSpkFile::SCRIPTTYPE_MAX; i++ )
831
		{
916
		{
832
			m_pTypeList->PushBack(CSpkFile::GetScriptTypeStringStatic(i).c_str());
917
			m_pTypeList->PushBack(CSpkFile::GetScriptTypeStringStatic(i).c_str());
833
			ComboType->Items->Add(SystemStringFromCyString(CSpkFile::GetScriptTypeStringStatic(i)));
918
			ComboType->Items->Add(_US(CSpkFile::GetScriptTypeStringStatic(i)));
834
		}
919
		}
835
 
920
 
836
		this->CreationDate->Value = DateTime::Today;
921
		this->CreationDate->Value = DateTime::Today;
837
 
922
 
838
		m_bLoading = false;
923
		m_bLoading = false;
Line 865... Line 950...
865
		this->ListFiles->Items->Clear();
950
		this->ListFiles->Items->Clear();
866
		if ( m_pPackage ) {
951
		if ( m_pPackage ) {
867
			for ( C_File *file = m_pPackage->GetFileList()->First(); file; file = m_pPackage->GetFileList()->Next() )
952
			for ( C_File *file = m_pPackage->GetFileList()->First(); file; file = m_pPackage->GetFileList()->Next() )
868
			{
953
			{
869
				file->SetPos(pos++);
954
				file->SetPos(pos++);
870
				if ( this->;ComboGameFilter->SelectedIndex > 0 ) {
955
				if (this->;ComboGameFilter->SelectedIndex == 1)
-
 
956
				{
-
 
957
					if (file->game() > 0 && file->game() != 1 << 31)
-
 
958
						continue;
-
 
959
				}
-
 
960
				else if (this->ComboGameFilter->SelectedIndex > 0)
-
 
961
				{
871
					if ( this-&gt;ComboGameFilter->;SelectedIndex - 1 != file->GetGame() )
962
					if (!(1 << (this-&gt;ComboGameFilter->;SelectedIndex - 1) & file->game()))
872
						continue;
963
						continue;
873
				}
964
				}
874
				if ( this->ComboFileType->SelectedIndex == 0 || (this->ComboFileType->SelectedIndex - 1) == file->GetFileType() )
965
				if ( this->ComboFileType->SelectedIndex == 0 || (this->ComboFileType->SelectedIndex - 1) == file->GetFileType() )
875
					this->AddFile(file);
966
					this->AddFile(file);
876
			}
967
			}
Line 902... Line 993...
902
 
993
 
903
		if ( !file->GetDir().Empty() )
994
		if ( !file->GetDir().Empty() )
904
			item->SubItems->Add(SystemStringFromCyString(file->GetDir()));
995
			item->SubItems->Add(SystemStringFromCyString(file->GetDir()));
905
		else
996
		else
906
			item->SubItems->Add("");
997
			item->SubItems->Add("");
907
 
998
 
908
		if ( file->IsSigned() )
999
		if ( file->IsSigned() )
909
			item->SubItems->Add("Yes");
1000
			item->SubItems->Add("Yes");
910
		else
1001
		else
911
			item->SubItems->Add("No");
1002
			item->SubItems->Add("No");
912
 
1003
 
913
		if ( !file->GetGame() )
1004
		if ( !file->game() || file->game() == (1 << 31))
914
			item->SubItems->Add("All Games");
1005
			item->SubItems->Add("All Games");
915
		else {
1006
		else
-
 
1007
		{
-
 
1008
			if (file->game() & (1 << 31))
-
 
1009
			{			
-
 
1010
				Utils::String sGames = "";
-
 
1011
				for (int i = 0; i < 31; ++i)
-
 
1012
				{
916
			CPackages p;
1013
					int gameMask = 1 << i;
-
 
1014
					if (file->game() & gameMask)
-
 
1015
					{
917
			p.Startup(".", ".", ".");
1016
						Utils::String sGame;
918
			SGameExe *exe = p.GetGameExe()->GetGame(file->GetGame() - 1);
1017
						SGameExe *exe = _pPackages->GetGameExe()->GetGame(i - 1);
919
			if ( exe ) {
1018
						if (exe)
-
 
1019
							sGame = exe->sName;
-
 
1020
						else
-
 
1021
							sGame = "Game: " + Utils::String::Number(i);
-
 
1022
 
-
 
1023
						if (sGames.empty())
-
 
1024
							sGames = sGame;
-
 
1025
						else
-
 
1026
							sGames = sGames + "\n" + sGame;
-
 
1027
					}
-
 
1028
				}
920
				item->SubItems->Add(SystemStringFromCyString(exe->sName));
1029
				item->SubItems->Add(_US(sGames));
921
			}
1030
			}
-
 
1031
			else
-
 
1032
			{
-
 
1033
				SGameExe *exe = _pPackages->GetGameExe()->GetGame(file->game() - 1);
-
 
1034
				if (exe) {
-
 
1035
					item->SubItems->Add(_US(exe->sName));
-
 
1036
				}
922
			else {
1037
				else {
923
				item->SubItems->Add("Game: " + file->GetGame());
1038
					item->SubItems->Add("Game: " + file->game());
-
 
1039
				}
924
			}
1040
			}
925
		}
1041
		}
926
 
1042
 
927
		item->Tag = SystemStringFromCyString(CyString::Number(file->GetPos()));
1043
		item->Tag = SystemStringFromCyString(CyString::Number(file->GetPos()));
928
		if ( file->IsFakePatch() )
1044
		if ( file->IsFakePatch() )
Line 966... Line 1082...
966
					filter += "*.cat";
1082
					filter += "*.cat";
967
					break;
1083
					break;
968
 
1084
 
969
				case FILETYPE_SOUND:
1085
				case FILETYPE_SOUND:
970
					filter += "*.wav";
1086
					filter += "*.wav";
971
					break;
1087
					break;
972
 
1088
 
973
				case FILETYPE_SCREEN:
1089
				case FILETYPE_SCREEN:
974
				case FILETYPE_ADVERT:
1090
				case FILETYPE_ADVERT:
975
					filter += "*.jpg;*.png";
1091
					filter += "*.jpg;*.png";
976
					break;
1092
					break;
Line 1004... Line 1120...
1004
			}
1120
			}
1005
			array<System::String ^> ^fileArray = ofd->FileNames;
1121
			array<System::String ^> ^fileArray = ofd->FileNames;
1006
			for ( int i = 0; i < fileArray->Length; i++ )
1122
			for ( int i = 0; i < fileArray->Length; i++ )
1007
			{
1123
			{
1008
				System::String ^file = fileArray[i];
1124
				System::String ^file = fileArray[i];
1009
				int filetype = m_pP->AdjustFileType(CyStringFromSystemString(file), ofd->FilterIndex - 1);
1125
				int filetype = m_pP->AdjustFileType(CyStringFromSystemString(file), ofd->FilterIndex - 1);				
1010
				C_File *f = m_pPackage->AddFile(CyStringFromSystemString(file), dir, filetype);
1126
				C_File *f = m_pPackage->AddFile(CyStringFromSystemString(file), dir, filetype, this->ComboGameFilter->SelectedIndex > 1 ? (1 << (this->ComboGameFilter->SelectedIndex - 1) | 1 << 31) : 0);
1011
				if ( (ofd->FilterIndex - 1) == FILETYPE_MOD )
1127
				if ( (ofd->FilterIndex - 1) == FILETYPE_MOD )
1012
					m_pPackage->AddFile(CFileIO(CyStringFromSystemString(file)).ChangeFileExtension("dat"), dir, filetype);
1128
					m_pPackage->AddFile(CFileIO(CyStringFromSystemString(file)).ChangeFileExtension("dat"), dir, filetype);
1013
			}
1129
			}
1014
			m_pPackage->UpdateSigned(false);
1130
			m_pPackage->UpdateSigned(false);
1015
			this->UpdateFileList();
1131
			this->UpdateFileList();
Line 1050... Line 1166...
1050
					if ( ((CSpkFile *)m_pPackage)->version().compareVersion(n->sMinVersion) != COMPARE_OLDER )
1166
					if ( ((CSpkFile *)m_pPackage)->version().compareVersion(n->sMinVersion) != COMPARE_OLDER )
1051
					{
1167
					{
1052
						MessageBox::Show(this, "The depencay vesion (" + _US(n->sMinVersion) + ") is too high, it must be lower than the current version (" + _US(m_pPackage->version()) + ")", "Invalid Entry", MessageBoxButtons::OK, MessageBoxIcon::Stop);
1168
						MessageBox::Show(this, "The depencay vesion (" + _US(n->sMinVersion) + ") is too high, it must be lower than the current version (" + _US(m_pPackage->version()) + ")", "Invalid Entry", MessageBoxButtons::OK, MessageBoxIcon::Stop);
1053
						return false;
1169
						return false;
1054
					}
1170
					}
1055
				}
1171
				}
1056
			}
1172
			}
1057
			else if ( ((CSpkFile *)m_pPackage)->IsCustomStart() )
1173
			else if ( ((CSpkFile *)m_pPackage)->IsCustomStart() )
1058
			{
1174
			{
1059
				if ( !((CSpkFile *)m_pPackage)->CheckValidCustomStart() )
1175
				if ( !((CSpkFile *)m_pPackage)->CheckValidCustomStart() )
1060
				{
1176
				{
1061
					MessageBox::Show(this, "For a custom start, you must include an initplayer script", "Invalid Entry", MessageBoxButtons::OK, MessageBoxIcon::Stop);
1177
					MessageBox::Show(this, "For a custom start, you must include an initplayer script", "Invalid Entry", MessageBoxButtons::OK, MessageBoxIcon::Stop);
1062
					return false;
1178
					return false;
1063
				}
1179
				}
Line 1077... Line 1193...
1077
 
1193
 
1078
		return true;
1194
		return true;
1079
	}
1195
	}
1080
 
1196
 
1081
	void PackageForm::Save()
1197
	void PackageForm::Save()
1082
	{
1198
	{
1083
		if ( !this->CheckSave() )
1199
		if ( !this->CheckSave() )
1084
			return;
1200
			return;
1085
 
1201
 
1086
		if ( m_pPackage->filename().empty() )
1202
		if ( m_pPackage->filename().empty() )
1087
		{
1203
		{
1088
			this->SaveAs();
1204
			this->SaveAs();
1089
			return;
1205
			return;
Line 1134... Line 1250...
1134
		}
1250
		}
1135
	}
1251
	}
1136
 
1252
 
1137
	System::Void PackageForm::PackageForm_Closing(System::Object^  sender, CancelEventArgs^  e)	{
1253
	System::Void PackageForm::PackageForm_Closing(System::Object^  sender, CancelEventArgs^  e)	{
1138
		if ( m_pPackage->hasChanged() )
1254
		if ( m_pPackage->hasChanged() )
1139
		{
1255
		{
1140
			String ^name = m_pTabPage->Text;
1256
			String ^name = m_pTabPage->Text;
1141
			if ( name[name->Length - 1] == '*' )
1257
			if ( name[name->Length - 1] == '*' )
1142
				name = name->Remove(name->Length - 1);
1258
				name = name->Remove(name->Length - 1);
1143
			System::Windows::Forms::DialogResult result = MessageBox::Show("Would you like to save changes to the package?\n\n" + name, "Save Package", MessageBoxButtons::YesNoCancel, MessageBoxIcon::Question);
1259
			System::Windows::Forms::DialogResult result = MessageBox::Show("Would you like to save changes to the package?\n\n" + name, "Save Package", MessageBoxButtons::YesNoCancel, MessageBoxIcon::Question);
1144
 
1260
 
Line 1243... Line 1359...
1243
 
1359
 
1244
	void PackageForm::AddDisplayIcon()
1360
	void PackageForm::AddDisplayIcon()
1245
	{
1361
	{
1246
		OpenFileDialog ^ofd = gcnew OpenFileDialog();
1362
		OpenFileDialog ^ofd = gcnew OpenFileDialog();
1247
		ofd->Filter = "Icon Files|*.ico;*.png;*.bmp";
1363
		ofd->Filter = "Icon Files|*.ico;*.png;*.bmp";
1248
		ofd->FilterIndex = 1;
1364
		ofd->FilterIndex = 1;
1249
		ofd->RestoreDirectory = true;
1365
		ofd->RestoreDirectory = true;
1250
		ofd->Multiselect = false;
1366
		ofd->Multiselect = false;
1251
		ofd->Title = "Select the Icon file to add";
1367
		ofd->Title = "Select the Icon file to add";
1252
 
1368
 
1253
		if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
1369
		if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
1254
		{
1370
		{
1255
			CyString file = CyStringFromSystemString(ofd->FileName);
1371
			Utils::String file = _S(ofd->FileName);
1256
			C_File *icon = new C_File(file);
1372
			C_File *icon = new C_File(file);
1257
			if ( icon->ReadFromFile() )
1373
			if ( icon->ReadFromFile() )
1258
				m_pPackage->SetIcon(icon, CFileIO(file).GetFileExtension());
1374
				m_pPackage->SetIcon(icon, CFileIO(file).GetFileExtension());
1259
 
1375
 
1260
			this->UpdateDisplayIcon();
1376
			this->UpdateDisplayIcon();
1261
			this->UpdateChanged();
1377
			this->UpdateChanged();
1262
		}
1378
		}
1263
	}
1379
	}
1264
 
1380
 
1265
	void PackageForm::SaveText()
1381
	void PackageForm::SaveText()
1266
	{
1382
	{
1267
		if ( this->TextText->Text->Length )
1383
		if ( this->TextText->Text->Length )
Line 1272... Line 1388...
1272
				if ( this->RadioInstallAfter->Checked )			m_pPackage->addInstallText(lang, false, _S(this->TextText->Text));
1388
				if ( this->RadioInstallAfter->Checked )			m_pPackage->addInstallText(lang, false, _S(this->TextText->Text));
1273
				else if ( this->RadioInstallBefore->Checked )	m_pPackage->addInstallText(lang, true, _S(this->TextText->Text));
1389
				else if ( this->RadioInstallBefore->Checked )	m_pPackage->addInstallText(lang, true, _S(this->TextText->Text));
1274
				else if ( this->RadioUninstallBefore->Checked )	m_pPackage->addUninstallText(lang, true, _S(this->TextText->Text));
1390
				else if ( this->RadioUninstallBefore->Checked )	m_pPackage->addUninstallText(lang, true, _S(this->TextText->Text));
1275
				else if ( this->RadioUninstallAfter->Checked )	m_pPackage->addUninstallText(lang, false, _S(this->TextText->Text));
1391
				else if ( this->RadioUninstallAfter->Checked )	m_pPackage->addUninstallText(lang, false, _S(this->TextText->Text));
1276
				this->UpdateChanged();
1392
				this->UpdateChanged();
1277
			}
1393
			}
1278
		}
1394
		}
1279
	}
1395
	}
1280
 
1396
 
1281
	void PackageForm::LoadShipData()
1397
	void PackageForm::LoadShipData()
1282
	{
1398
	{
1283
		OpenFileDialog ^ofd = gcnew OpenFileDialog();
1399
		OpenFileDialog ^ofd = gcnew OpenFileDialog();
Line 1356... Line 1472...
1356
 
1472
 
1357
	void PackageForm::EditShipParts(bool edit)
1473
	void PackageForm::EditShipParts(bool edit)
1358
	{
1474
	{
1359
		 CXspFile *xsp = (CXspFile *)m_pPackage;
1475
		 CXspFile *xsp = (CXspFile *)m_pPackage;
1360
		 switch ( this->ComboShipPart->SelectedIndex )
1476
		 switch ( this->ComboShipPart->SelectedIndex )
1361
		 {
1477
		 {
1362
			case 0:
1478
			case 0:
1363
				{
1479
				{
1364
					AddShipPart ^component = gcnew AddShipPart((Form1 ^)this->MdiParent);
1480
					AddShipPart ^component = gcnew AddShipPart((Form1 ^)this->MdiParent);
1365
					component->SetComponent(edit);
1481
					component->SetComponent(edit);
1366
 
1482
 
1367
					if ( edit )
1483
					if ( edit )
1368
					{
1484
					{
1369
						component->SetSection(m_pSelectedItem->Text);
1485
						component->SetSection(m_pSelectedItem->Text);
1370
						component->SetSection2(m_pSelectedItem->SubItems[1]->Text);
1486
						component->SetSection2(m_pSelectedItem->SubItems[1]->Text);
1371
						component->SetData(m_pSelectedItem->SubItems[2]->Text);
1487
						component->SetData(m_pSelectedItem->SubItems[2]->Text);
1372
					}
1488
					}
1373
 
1489
 
Line 1381... Line 1497...
1381
						else
1497
						else
1382
						{
1498
						{
1383
							m_pSelectedItem->Text = component->GetSection();
1499
							m_pSelectedItem->Text = component->GetSection();
1384
							m_pSelectedItem->SubItems[1]->Text = component->GetSection2();
1500
							m_pSelectedItem->SubItems[1]->Text = component->GetSection2();
1385
							m_pSelectedItem->SubItems[2]->Text = component->GetData();
1501
							m_pSelectedItem->SubItems[2]->Text = component->GetData();
1386
						}
1502
						}
1387
					}
1503
					}
1388
				}
1504
				}
1389
				break;
1505
				break;
1390
			case 1:
1506
			case 1:
1391
				{
1507
				{
1392
					AddShipPart ^dummy = gcnew AddShipPart((Form1 ^)this->MdiParent);
1508
					AddShipPart ^dummy = gcnew AddShipPart((Form1 ^)this->MdiParent);
1393
					dummy->SetDummy(edit);
1509
					dummy->SetDummy(edit);
1394
 
1510
 
1395
					if ( edit )
1511
					if ( edit )
1396
					{
1512
					{
1397
						dummy->SetSection(m_pSelectedItem->Text);
1513
						dummy->SetSection(m_pSelectedItem->Text);
1398
						dummy->SetData(m_pSelectedItem->SubItems[1]->Text);
1514
						dummy->SetData(m_pSelectedItem->SubItems[1]->Text);
1399
					}
1515
					}
1400
 
1516
 
1401
					if ( dummy->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1517
					if ( dummy->ShowDialog(this) == Windows::Forms::DialogResult::OK )
1402
					{
1518
					{
1403
						if ( edit )
1519
						if ( edit )
1404
							xsp->RemoveDummy(_S(m_pSelectedItem->Text), _S(m_pSelectedItem->SubItems[1]->Text));
1520
							xsp->RemoveDummy(_S(m_pSelectedItem->Text), _S(m_pSelectedItem->SubItems[1]->Text));
1405
						xsp->AddDummy(_S(dummy->GetSection()), _S(dummy->GetData()));
1521
						xsp->AddDummy(_S(dummy->GetSection()), _S(dummy->GetData()));
1406
						if ( !edit )
1522
						if ( !edit )
1407
							this->UpdateShipPartList();
1523
							this->UpdateShipPartList();
1408
						else
1524
						else
1409
						{
1525
						{
1410
							m_pSelectedItem->Text = dummy->GetSection();
1526
							m_pSelectedItem->Text = dummy->GetSection();
1411
							m_pSelectedItem->SubItems[1]->Text = dummy->GetData();
1527
							m_pSelectedItem->SubItems[1]->Text = dummy->GetData();
1412
						}
1528
						}
1413
					}
1529
					}
1414
				}
1530
				}
1415
				break;
1531
				break;
1416
 
1532
 
1417
			case 2:
1533
			case 2:
1418
				{
1534
				{
1419
					AddCockpit ^cockpit = gcnew AddCockpit();
1535
					AddCockpit ^cockpit = gcnew AddCockpit();
1420
					if ( edit )
1536
					if ( edit )
1421
						cockpit->SetEdit(m_pSelectedItem->Text, SystemStringFromCyString(CyStringFromSystemString(m_pSelectedItem->SubItems[2]->Text).GetToken(";", 8, 8)), CyStringFromSystemString(m_pSelectedItem->SubItems[2]->Text).GetToken(";", 9, 9).ToInt());
1537
						cockpit->SetEdit(m_pSelectedItem->Text, SystemStringFromCyString(CyStringFromSystemString(m_pSelectedItem->SubItems[2]->Text).GetToken(";", 8, 8)), CyStringFromSystemString(m_pSelectedItem->SubItems[2]->Text).GetToken(";", 9, 9).ToInt());
Line 1554... Line 1670...
1554
		if ( String::Compare(IO::FileInfo(file).Extension, ".xml") == 0 )
1670
		if ( String::Compare(IO::FileInfo(file).Extension, ".xml") == 0 )
1555
			return file;
1671
			return file;
1556
		
1672
		
1557
		if ( String::Compare(IO::FileInfo(file).Extension, ".pck") == 0 )
1673
		if ( String::Compare(IO::FileInfo(file).Extension, ".pck") == 0 )
1558
		{
1674
		{
1559
			C_File F(CyStringFromSystemString(file));
1675
			C_File F(_S(file));
1560
			F.UnPCKFile();
1676
			F.UnPCKFile();
1561
			if ( F.WriteToFile(CPackages::tempDirectory() + "tmp.dat") )
1677
			if ( F.WriteToFile(CPackages::tempDirectory() + "tmp.dat") )
1562
				return _US(CPackages::tempDirectory() + "tmp.dat");
1678
				return _US(CPackages::tempDirectory() + "tmp.dat");
1563
		}
1679
		}
1564
		else if ( String::Compare(IO::FileInfo(file).Extension, ".cat") == 0 )
1680
		else if ( String::Compare(IO::FileInfo(file).Extension, ".cat") == 0 )
Line 1578... Line 1694...
1578
	{
1694
	{
1579
		return ((Form1 ^)this->MdiParent)->gameDirectories();
1695
		return ((Form1 ^)this->MdiParent)->gameDirectories();
1580
	}
1696
	}
1581
 
1697
 
1582
	void PackageForm::ImportData(String ^file, int type)
1698
	void PackageForm::ImportData(String ^file, int type)
1583
	{
1699
	{
1584
		CFileIO F(CyStringFromSystemString(file));
1700
		CFileIO F(CyStringFromSystemString(file));
1585
		if ( !F.exists() )
1701
		if ( !F.exists() )
1586
			return;
1702
			return;
1587
 
1703
 
1588
		CyStringList *lines = F.ReadLinesStr();
1704
		CyStringList *lines = F.ReadLinesStr();
1589
		if ( !lines )
1705
		if ( !lines )
1590
			return;
1706
			return;
Line 1691... Line 1807...
1691
				else
1807
				else
1692
				{
1808
				{
1693
					CyString id;
1809
					CyString id;
1694
					if ( dataPos == -1 )
1810
					if ( dataPos == -1 )
1695
						id = str->str; 
1811
						id = str->str; 
1696
					else
1812
					else
1697
						id = str->str.GetToken(";", dataPos, dataPos); 
1813
						id = str->str.GetToken(";", dataPos, dataPos); 
1698
 
1814
 
1699
					if ( dataPos2 )
1815
					if ( dataPos2 )
1700
						load->AddShip(SystemStringFromCyString(id), SystemStringFromCyString(str->str.GetToken(";", dataPos2, dataPos2)));
1816
						load->AddShip(SystemStringFromCyString(id), SystemStringFromCyString(str->str.GetToken(";", dataPos2, dataPos2)));
1701
					else
1817
					else
Line 1719... Line 1835...
1719
				{
1835
				{
1720
					switch ( type )
1836
					switch ( type )
1721
					{
1837
					{
1722
						case 0:
1838
						case 0:
1723
							((CXspFile *)m_pPackage)->AddComponent(s->data.GetToken(";", 1, 1).ToString(), s->data.GetToken(";", 2, 2).ToString(), s->data.GetToken(";", 3).ToString());
1839
							((CXspFile *)m_pPackage)->AddComponent(s->data.GetToken(";", 1, 1).ToString(), s->data.GetToken(";", 2, 2).ToString(), s->data.GetToken(";", 3).ToString());
1724
							break;
1840
							break;
1725
						case 2:
1841
						case 2:
1726
							((CXspFile *)m_pPackage)->AddCockpit(s->data.GetToken(" ", 2).ToString(), 0, -1, s->data.GetToken(" ", 1, 1).ToInt());
1842
							((CXspFile *)m_pPackage)->AddCockpit(s->data.GetToken(" ", 2).ToString(), 0, -1, s->data.GetToken(" ", 1, 1).ToInt());
1727
							break;
1843
							break;
1728
						case 3:
1844
						case 3:
1729
							((CXspFile *)m_pPackage)->AddCutData(s->data.GetToken(" ", 2).ToString());
1845
							((CXspFile *)m_pPackage)->AddCutData(s->data.GetToken(" ", 2).ToString());
Line 1747... Line 1863...
1747
 
1863
 
1748
	void PackageForm::ImportAnimations(String ^file)
1864
	void PackageForm::ImportAnimations(String ^file)
1749
	{
1865
	{
1750
		CFileIO F(CyStringFromSystemString(file));
1866
		CFileIO F(CyStringFromSystemString(file));
1751
		if ( !F.exists() )
1867
		if ( !F.exists() )
1752
			return;
1868
			return;
1753
 
1869
 
1754
		CyStringList *lines = F.ReadLinesStr();
1870
		CyStringList *lines = F.ReadLinesStr();
1755
		if ( !lines )
1871
		if ( !lines )
1756
			return;
1872
			return;
1757
 
1873
 
Line 1803... Line 1919...
1803
				 m_pPackage->AddNeededLibrary(_S(depend->GetName()), _S(depend->GetAuthor()), _S(depend->GetVersion()));
1919
				 m_pPackage->AddNeededLibrary(_S(depend->GetName()), _S(depend->GetAuthor()), _S(depend->GetVersion()));
1804
			 }
1920
			 }
1805
			 this->UpdateDependacies();
1921
			 this->UpdateDependacies();
1806
			 this->UpdateChanged();
1922
			 this->UpdateChanged();
1807
		 }
1923
		 }
-
 
1924
	}
-
 
1925
 
-
 
1926
	System::Void PackageForm::SetGame_Selected(System::Object^  sender, System::EventArgs^  e)
-
 
1927
	{
-
 
1928
		System::Windows::Forms::ToolStripMenuItem ^item = cli::safe_cast<System::Windows::Forms::ToolStripMenuItem ^>(sender);
-
 
1929
 
-
 
1930
		int done = 0;
-
 
1931
		if (ListFiles->SelectedItems->Count)
-
 
1932
		{
-
 
1933
			for (int i = 0; i < ListFiles->SelectedItems->Count; i++)
-
 
1934
			{
-
 
1935
				int id = _S(cli::safe_cast<System::String ^>(this->ListFiles->SelectedItems[i]->Tag)).toInt();
-
 
1936
				C_File *file = m_pPackage->GetFileList()->Get(id);
-
 
1937
				if (file) {
-
 
1938
					int iGame = Convert::ToInt32(item->Tag);
-
 
1939
					if(!iGame)
-
 
1940
						file->setGame(0);
-
 
1941
					else
-
 
1942
						file->setGame(1 << 31 | 1 << iGame);
-
 
1943
					++done;
-
 
1944
				}
-
 
1945
			}
-
 
1946
		}
-
 
1947
 
-
 
1948
		if (done) {
-
 
1949
			this->UpdateFileList();
-
 
1950
			this->UpdateChanged();
-
 
1951
		}
-
 
1952
	}
-
 
1953
	System::Void PackageForm::AddGame_Selected(System::Object^  sender, System::EventArgs^  e)
-
 
1954
	{
-
 
1955
		System::Windows::Forms::ToolStripMenuItem ^item = cli::safe_cast<System::Windows::Forms::ToolStripMenuItem ^>(sender);
-
 
1956
 
-
 
1957
		int done = 0;
-
 
1958
		if (ListFiles->SelectedItems->Count)
-
 
1959
		{
-
 
1960
			for (int i = 0; i < ListFiles->SelectedItems->Count; i++)
-
 
1961
			{
-
 
1962
				int id = _S(cli::safe_cast<System::String ^>(this->ListFiles->SelectedItems[i]->Tag)).toInt();
-
 
1963
				C_File *file = m_pPackage->GetFileList()->Get(id);
-
 
1964
				if (file) {
-
 
1965
					int iGame = Convert::ToInt32(item->Tag);
-
 
1966
					if (iGame)
-
 
1967
						file->setGame(file->game() | 1 << iGame | 1 << 31);
-
 
1968
					++done;
-
 
1969
				}
-
 
1970
			}
-
 
1971
		}
-
 
1972
 
-
 
1973
		if (done) {
-
 
1974
			this->UpdateFileList();
-
 
1975
			this->UpdateChanged();
-
 
1976
		}
-
 
1977
	}
-
 
1978
	System::Void PackageForm::RemoveGame_Selected(System::Object^  sender, System::EventArgs^  e)
-
 
1979
	{
-
 
1980
		System::Windows::Forms::ToolStripMenuItem ^item = cli::safe_cast<System::Windows::Forms::ToolStripMenuItem ^>(sender);
-
 
1981
 
-
 
1982
		int done = 0;
-
 
1983
		if (ListFiles->SelectedItems->Count)
-
 
1984
		{
-
 
1985
			for (int i = 0; i < ListFiles->SelectedItems->Count; i++)
-
 
1986
			{
-
 
1987
				int id = _S(cli::safe_cast<System::String ^>(this->ListFiles->SelectedItems[i]->Tag)).toInt();
-
 
1988
				C_File *file = m_pPackage->GetFileList()->Get(id);
-
 
1989
				if (file) {
-
 
1990
					int iGame = Convert::ToInt32(item->Tag);
-
 
1991
					if (iGame)
-
 
1992
						file->setGame(file->game() & ~(1 << iGame));
-
 
1993
					++done;
-
 
1994
				}
-
 
1995
			}
-
 
1996
		}
-
 
1997
 
-
 
1998
		if (done) {
-
 
1999
			this->UpdateFileList();
-
 
2000
			this->UpdateChanged();
-
 
2001
		}
1808
	}
2002
	}
1809
}
2003
}