Subversion Repositories spk

Rev

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

Rev 57 Rev 68
Line 6... Line 6...
6
using namespace System::Windows::Forms;
6
using namespace System::Windows::Forms;
7
using namespace System::Data;
7
using namespace System::Data;
8
using namespace System::Drawing;
8
using namespace System::Drawing;
9
 
9
 
10
typedef struct SGameDir {
10
typedef struct SGameDir {
11
	bool		bLoad;
11
	bool			bLoad;
12
	CyString	sDir;
12
	Utils::String	dir;
13
	CyString	sGame;
13
	Utils::String	name;
14
	int			iGame;
14
	int				iGame;
15
	CVirtualFileSystem *pVfs;
15
	CVirtualFileSystem *pVfs;
16
} SGameDir;
16
} SGameDir;
17
 
17
 
18
namespace Creator {
18
namespace Creator {
19
	typedef struct SSettings {
19
	typedef struct SSettings {
Line 91... Line 91...
91
		void UpdateGameDirs()
91
		void UpdateGameDirs()
92
		{
92
		{
93
			this->ListGameDir->Items->Clear();
93
			this->ListGameDir->Items->Clear();
94
			for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
94
			for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
95
			{
95
			{
96
				ListViewItem ^item = gcnew ListViewItem(SystemStringFromCyString(gd->sDir));
96
				ListViewItem ^item = gcnew ListViewItem(_US(gd->dir));
97
				item->ImageIndex = gd->sGame.GetToken(" ", 1, 1).ToInt();
97
				item->ImageIndex = gd->iGame;
98
				item->SubItems->Add(SystemStringFromCyString(gd->sGame.GetToken(" ", 2)));
98
				item->SubItems->Add(_US(gd->name));
99
				if ( gd->bLoad )
99
				if ( gd->bLoad )
100
					item->SubItems->Add("Yes");
100
					item->SubItems->Add("Yes");
101
				else
101
				else
102
					item->SubItems->Add("No");
102
					item->SubItems->Add("No");
103
				this->ListGameDir->Items->Add(item);
103
				this->ListGameDir->Items->Add(item);
Line 124... Line 124...
124
			dir = dir.findReplace("\\", "/");
124
			dir = dir.findReplace("\\", "/");
125
			dir = dir.findReplace("//", "/");
125
			dir = dir.findReplace("//", "/");
126
			bool found = false;
126
			bool found = false;
127
			for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
127
			for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
128
			{
128
			{
129
				if ( gd->sDir == dir )
129
				if ( gd->dir == dir )
130
				{
130
				{
131
					found = true;
131
					found = true;
132
					break;
132
					break;
133
				}
133
				}
134
			}
134
			}
135
 
135
 
136
			if ( !found )
136
			if ( !found )
137
			{
137
			{
138
				SGameDir *gd = new SGameDir;
138
				SGameDir *gd = new SGameDir;
139
				gd->sDir = dir;
139
				gd->dir = dir;
140
				gd->sGame = CyString::Number(iGame) + " " + game;
140
				gd->name = game.ToString();
-
 
141
				gd->iGame = iGame;
-
 
142
				gd->pVfs = new CVirtualFileSystem();
-
 
143
				gd->pVfs->setLanguage(44);
-
 
144
				gd->pVfs->LoadFilesystem(gd->dir);
-
 
145
 
-
 
146
				SGameExe *exe = m_pP->GetGameExe()->GetGame(gd->iGame);
-
 
147
				if ( exe ) gd->pVfs->SetAddon(exe->sAddon);
-
 
148
 
141
				gd->bLoad = (ask) ? false : load;
149
				gd->bLoad = (ask) ? false : load;
142
				m_pGameDir->push_back(gd);
150
				m_pGameDir->push_back(gd);
143
 
151
 
144
				if ( ask )
152
				if ( ask )
145
				{
153
				{
146
					if ( MessageBox::Show(this, "Do you want to load text from this directory\n" + sDir, "Load Game Text", MessageBoxButtons::YesNo, MessageBoxIcon::Question) == System::Windows::Forms::DialogResult::Yes )
154
					if ( MessageBox::Show(this, "Do you want to load text from this directory\n" + _US(dir), "Load Game Text", MessageBoxButtons::YesNo, MessageBoxIcon::Question) == System::Windows::Forms::DialogResult::Yes )
147
					{
155
					{
148
						gd->bLoad = true;
156
						gd->bLoad = true;
149
						m_bLoadText = true;
157
						m_bLoadText = true;
150
					}
158
					}
151
				}
159
				}
Line 169... Line 177...
169
			ofd->FilterIndex = 1;
177
			ofd->FilterIndex = 1;
170
			ofd->RestoreDirectory = true;
178
			ofd->RestoreDirectory = true;
171
			if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
179
			if ( ofd->ShowDialog(this) == System::Windows::Forms::DialogResult::OK )
172
			{
180
			{
173
				// check for a valid game
181
				// check for a valid game
174
				String ^D = IO::FileInfo(ofd->FileName).DirectoryName;
-
 
175
				if ( m_pP->GetGameName(CyStringFromSystemString(D)).Empty() )
182
				if ( m_pP->GetGameName(CyStringFromSystemString(ofd->FileName)).Empty() )
176
					MessageBox::Show(this, "The path selected doesn't contain a valid game version\n" + D, "Invalid Directory", MessageBoxButtons::OK, MessageBoxIcon::Error);
183
					MessageBox::Show(this, "The path selected doesn't contain a valid game version\n" + IO::FileInfo(ofd->FileName).DirectoryName, "Invalid Directory", MessageBoxButtons::OK, MessageBoxIcon::Error);
177
				else
184
				else
178
					this->AddDir(D, true, false);
185
					this->AddDir(ofd->FileName, true, false);
179
			}
186
			}
180
		}
187
		}
181
		void Init()
188
		void Init()
182
		{
189
		{
183
			this->UpdateGameDirs();
190
			this->UpdateGameDirs();
Line 641... Line 648...
641
		}
648
		}
642
#pragma endregion
649
#pragma endregion
643
	private: System::Void listView1_MouseDoubleClick(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) {
650
	private: System::Void listView1_MouseDoubleClick(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) {
644
			 for ( int i = 0; i < this->ListGameDir->SelectedItems->Count; i++ )
651
			 for ( int i = 0; i < this->ListGameDir->SelectedItems->Count; i++ )
645
			 {
652
			 {
646
				CyString dir = CyStringFromSystemString(this->ListGameDir->SelectedItems[i]->Text);
653
				 Utils::String dir = _S(this->ListGameDir->SelectedItems[i]->Text);
647
				for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
654
				for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
648
				{
655
				{
649
					if ( gd->sDir.Compare(dir) )
656
					if ( gd->dir.Compare(dir) )
650
					{
657
					{
651
						gd->bLoad = !gd->bLoad;
658
						gd->bLoad = !gd->bLoad;
652
						if ( gd->bLoad )
659
						if ( gd->bLoad )
653
							this->ListGameDir->SelectedItems[i]->SubItems[2]->Text = "Yes";
660
							this->ListGameDir->SelectedItems[i]->SubItems[2]->Text = "Yes";
654
						else
661
						else
Line 669... Line 676...
669
			 this->UpdateGameDirs();
676
			 this->UpdateGameDirs();
670
		 }
677
		 }
671
private: System::Void ButDel_Click(System::Object^  sender, System::EventArgs^  e) {
678
private: System::Void ButDel_Click(System::Object^  sender, System::EventArgs^  e) {
672
			 for ( int i = 0; i < this->ListGameDir->SelectedItems->Count; i++ )
679
			 for ( int i = 0; i < this->ListGameDir->SelectedItems->Count; i++ )
673
			 {
680
			 {
674
				CyString dir = CyStringFromSystemString(this->ListGameDir->SelectedItems[i]->Text);
681
				 Utils::String dir = _S(this->ListGameDir->SelectedItems[i]->Text);
675
				for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
682
				for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
676
				{
683
				{
677
					if ( gd->sDir.Compare(dir) )
684
					if ( gd->dir.Compare(dir) )
678
					{
685
					{
679
						m_pGameDir->RemoveCurrent();
686
						m_pGameDir->RemoveCurrent();
680
						break;
687
						break;
681
					}
688
					}
682
				}
689
				}
Line 704... Line 711...
704
			 for ( SStringList *str = m_sDirs->Head(); str; str = str->next )
711
			 for ( SStringList *str = m_sDirs->Head(); str; str = str->next )
705
			 {
712
			 {
706
				 bool found = false;
713
				 bool found = false;
707
				 for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
714
				 for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
708
				 {
715
				 {
709
					 if ( gd->sDir.Compare(str->str) )
716
					 if ( gd->dir.Compare(str->str.ToString()) )
710
					 {
717
					 {
711
						 found = true;
718
						 found = true;
712
						 break;
719
						 break;
713
					 }
720
					 }
714
				 }
721
				 }
Line 750... Line 757...
750
			 this->UpdateGameDirs();
757
			 this->UpdateGameDirs();
751
		 }
758
		 }
752
private: System::Void removeSelectedToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
759
private: System::Void removeSelectedToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
753
			 for ( int i = 0; i < this->ListGameDir->SelectedItems->Count; i++ )
760
			 for ( int i = 0; i < this->ListGameDir->SelectedItems->Count; i++ )
754
			 {
761
			 {
755
				CyString dir = CyStringFromSystemString(this->ListGameDir->SelectedItems[i]->Text);
762
				 Utils::String dir = _S(this->ListGameDir->SelectedItems[i]->Text);
756
				for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
763
				for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
757
				{
764
				{
758
					if ( gd->sDir.Compare(dir) )
765
					if ( gd->dir.Compare(dir) )
759
					{
766
					{
760
						m_pGameDir->RemoveCurrent();
767
						m_pGameDir->RemoveCurrent();
761
						break;
768
						break;
762
					}
769
					}
763
				}
770
				}
Line 765... Line 772...
765
			 this->UpdateGameDirs();
772
			 this->UpdateGameDirs();
766
		 }
773
		 }
767
private: System::Void yesToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
774
private: System::Void yesToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
768
				for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
775
				for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
769
				{
776
				{
770
					if ( gd->sDir.Compare(CyStringFromSystemString(m_pSelectedItem->Text)) )
777
					if ( gd->dir.Compare(_S(m_pSelectedItem->Text)) )
771
					{
778
					{
772
						gd->bLoad = true;
779
						gd->bLoad = true;
773
						m_pSelectedItem->SubItems[2]->Text = "Yes";
780
						m_pSelectedItem->SubItems[2]->Text = "Yes";
774
						break;
781
						break;
775
					}
782
					}
776
				}
783
				}
777
		 }
784
		 }
778
private: System::Void noToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
785
private: System::Void noToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {
779
				for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
786
				for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
780
				{
787
				{
781
					if ( gd->sDir.Compare(CyStringFromSystemString(m_pSelectedItem->Text)) )
788
					if ( gd->dir.Compare(_S(m_pSelectedItem->Text)) )
782
					{
789
					{
783
						gd->bLoad = false;
790
						gd->bLoad = false;
784
						m_pSelectedItem->SubItems[2]->Text = "No";
791
						m_pSelectedItem->SubItems[2]->Text = "No";
785
						break;
792
						break;
786
					}
793
					}
Line 799... Line 806...
799
			 for ( SStringList *str = m_sDirs->Head(); str; str = str->next )
806
			 for ( SStringList *str = m_sDirs->Head(); str; str = str->next )
800
			 {
807
			 {
801
				 bool found = false;
808
				 bool found = false;
802
				 for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
809
				 for ( SGameDir *gd = m_pGameDir->First(); gd; gd = m_pGameDir->Next() )
803
				 {
810
				 {
804
					 if ( gd->sDir.Compare(str->str) )
811
					 if ( gd->dir.Compare(str->str.ToString()) )
805
					 {
812
					 {
806
						 found = true;
813
						 found = true;
807
						 break;
814
						 break;
808
					 }
815
					 }
809
				 }
816
				 }