Moved GTA Folder detection logic to new class

This commit is contained in:
PNWParksFan 2018-02-17 17:26:35 -08:00
parent 947611765e
commit 7756580817
5 changed files with 229 additions and 135 deletions

View File

@ -92,32 +92,32 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="FastColoredTextBox, Version=2.16.21.0, Culture=neutral, PublicKeyToken=fb8aa12b994ef61b, processorArchitecture=MSIL">
<HintPath>packages\FCTB.2.16.21.0\lib\FastColoredTextBox.dll</HintPath>
<EmbedInteropTypes>False</EmbedInteropTypes>
<SpecificVersion>False</SpecificVersion>
<HintPath>bin\Debug\FastColoredTextBox.dll</HintPath>
</Reference>
<Reference Include="SharpDX, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b4dcf0f35e5521f1, processorArchitecture=MSIL">
<HintPath>packages\SharpDX.4.0.1\lib\net45\SharpDX.dll</HintPath>
<HintPath>..\..\references\Codewalker Refs\SharpDX.dll</HintPath>
</Reference>
<Reference Include="SharpDX.D3DCompiler, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b4dcf0f35e5521f1, processorArchitecture=MSIL">
<HintPath>packages\SharpDX.D3DCompiler.4.0.1\lib\net45\SharpDX.D3DCompiler.dll</HintPath>
<HintPath>..\..\references\Codewalker Refs\SharpDX.D3DCompiler.dll</HintPath>
</Reference>
<Reference Include="SharpDX.Direct2D1, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b4dcf0f35e5521f1, processorArchitecture=MSIL">
<HintPath>packages\SharpDX.Direct2D1.4.0.1\lib\net45\SharpDX.Direct2D1.dll</HintPath>
<HintPath>..\..\references\Codewalker Refs\SharpDX.Direct2D1.dll</HintPath>
</Reference>
<Reference Include="SharpDX.Direct3D11, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b4dcf0f35e5521f1, processorArchitecture=MSIL">
<HintPath>packages\SharpDX.Direct3D11.4.0.1\lib\net45\SharpDX.Direct3D11.dll</HintPath>
<HintPath>..\..\references\Codewalker Refs\SharpDX.Direct3D11.dll</HintPath>
</Reference>
<Reference Include="SharpDX.DXGI, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b4dcf0f35e5521f1, processorArchitecture=MSIL">
<HintPath>packages\SharpDX.DXGI.4.0.1\lib\net45\SharpDX.DXGI.dll</HintPath>
<HintPath>..\..\references\Codewalker Refs\SharpDX.DXGI.dll</HintPath>
</Reference>
<Reference Include="SharpDX.Mathematics, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b4dcf0f35e5521f1, processorArchitecture=MSIL">
<HintPath>packages\SharpDX.Mathematics.4.0.1\lib\net45\SharpDX.Mathematics.dll</HintPath>
<HintPath>..\..\references\Codewalker Refs\SharpDX.Mathematics.dll</HintPath>
</Reference>
<Reference Include="SharpDX.XAudio2, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b4dcf0f35e5521f1, processorArchitecture=MSIL">
<HintPath>packages\SharpDX.XAudio2.4.0.1\lib\net45\SharpDX.XAudio2.dll</HintPath>
<HintPath>..\..\references\Codewalker Refs\SharpDX.XAudio2.dll</HintPath>
</Reference>
<Reference Include="SharpDX.XInput, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b4dcf0f35e5521f1, processorArchitecture=MSIL">
<HintPath>packages\SharpDX.XInput.4.0.1\lib\net45\SharpDX.XInput.dll</HintPath>
<HintPath>..\..\references\Codewalker Refs\SharpDX.XInput.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
@ -395,6 +395,7 @@
</Compile>
<Compile Include="Utils\Cache.cs" />
<Compile Include="Utils\DDSIO.cs" />
<Compile Include="Utils\GTAFolderCheck.cs" />
<Compile Include="Utils\InputUtils.cs" />
<Compile Include="Utils\MapUtils.cs" />
<Compile Include="Utils\Matrices.cs" />
@ -479,6 +480,7 @@
</EmbeddedResource>
<EmbeddedResource Include="Forms\FxcForm.resx">
<DependentUpon>FxcForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Forms\GxtForm.resx">
<DependentUpon>GxtForm.cs</DependentUpon>

190
ExploreForm.Designer.cs generated
View File

@ -91,6 +91,12 @@
this.MainSizeColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.MainAttrColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.MainPathColumnHeader = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.EditModeBaseWarningPanel = new System.Windows.Forms.Panel();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.label1 = new System.Windows.Forms.Label();
this.EditModeModsWarningPanel = new System.Windows.Forms.Panel();
this.pictureBox2 = new System.Windows.Forms.PictureBox();
this.label2 = new System.Windows.Forms.Label();
this.ListContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
this.ListContextViewMenu = new System.Windows.Forms.ToolStripMenuItem();
this.ListContextViewHexMenu = new System.Windows.Forms.ToolStripMenuItem();
@ -116,6 +122,8 @@
this.ListContextReplaceMenu = new System.Windows.Forms.ToolStripMenuItem();
this.ListContextDeleteMenu = new System.Windows.Forms.ToolStripMenuItem();
this.ListContextEditSeparator = new System.Windows.Forms.ToolStripSeparator();
this.ListContextDefragmentMenu = new System.Windows.Forms.ToolStripMenuItem();
this.ListContextDefragmentSeparator = new System.Windows.Forms.ToolStripSeparator();
this.ListContextSelectAllMenu = new System.Windows.Forms.ToolStripMenuItem();
this.TreeContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
this.TreeContextCopyPathMenu = new System.Windows.Forms.ToolStripMenuItem();
@ -127,14 +135,6 @@
this.SaveFileDialog = new System.Windows.Forms.SaveFileDialog();
this.OpenFileDialog = new System.Windows.Forms.OpenFileDialog();
this.FolderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
this.EditModeBaseWarningPanel = new System.Windows.Forms.Panel();
this.label1 = new System.Windows.Forms.Label();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.EditModeModsWarningPanel = new System.Windows.Forms.Panel();
this.pictureBox2 = new System.Windows.Forms.PictureBox();
this.label2 = new System.Windows.Forms.Label();
this.ListContextDefragmentMenu = new System.Windows.Forms.ToolStripMenuItem();
this.ListContextDefragmentSeparator = new System.Windows.Forms.ToolStripSeparator();
this.MainMenu.SuspendLayout();
this.MainToolbar.SuspendLayout();
this.StatusBar.SuspendLayout();
@ -142,12 +142,12 @@
this.MainSplitContainer.Panel1.SuspendLayout();
this.MainSplitContainer.Panel2.SuspendLayout();
this.MainSplitContainer.SuspendLayout();
this.ListContextMenu.SuspendLayout();
this.TreeContextMenu.SuspendLayout();
this.EditModeBaseWarningPanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.EditModeModsWarningPanel.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
this.ListContextMenu.SuspendLayout();
this.TreeContextMenu.SuspendLayout();
this.SuspendLayout();
//
// MainMenu
@ -374,21 +374,21 @@
// ViewLargeIconsMenu
//
this.ViewLargeIconsMenu.Name = "ViewLargeIconsMenu";
this.ViewLargeIconsMenu.Size = new System.Drawing.Size(134, 22);
this.ViewLargeIconsMenu.Size = new System.Drawing.Size(152, 22);
this.ViewLargeIconsMenu.Text = "Large Icons";
this.ViewLargeIconsMenu.Click += new System.EventHandler(this.ViewLargeIconsMenu_Click);
//
// ViewSmallIconsMenu
//
this.ViewSmallIconsMenu.Name = "ViewSmallIconsMenu";
this.ViewSmallIconsMenu.Size = new System.Drawing.Size(134, 22);
this.ViewSmallIconsMenu.Size = new System.Drawing.Size(152, 22);
this.ViewSmallIconsMenu.Text = "Small Icons";
this.ViewSmallIconsMenu.Click += new System.EventHandler(this.ViewSmallIconsMenu_Click);
//
// ViewListMenu
//
this.ViewListMenu.Name = "ViewListMenu";
this.ViewListMenu.Size = new System.Drawing.Size(134, 22);
this.ViewListMenu.Size = new System.Drawing.Size(152, 22);
this.ViewListMenu.Text = "List";
this.ViewListMenu.Click += new System.EventHandler(this.ViewListMenu_Click);
//
@ -397,7 +397,7 @@
this.ViewDetailsMenu.Checked = true;
this.ViewDetailsMenu.CheckState = System.Windows.Forms.CheckState.Checked;
this.ViewDetailsMenu.Name = "ViewDetailsMenu";
this.ViewDetailsMenu.Size = new System.Drawing.Size(134, 22);
this.ViewDetailsMenu.Size = new System.Drawing.Size(152, 22);
this.ViewDetailsMenu.Text = "Details";
this.ViewDetailsMenu.Click += new System.EventHandler(this.ViewDetailsMenu_Click);
//
@ -754,6 +754,72 @@
this.MainPathColumnHeader.Text = "Path";
this.MainPathColumnHeader.Width = 225;
//
// EditModeBaseWarningPanel
//
this.EditModeBaseWarningPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.EditModeBaseWarningPanel.BackColor = System.Drawing.Color.DarkRed;
this.EditModeBaseWarningPanel.Controls.Add(this.pictureBox1);
this.EditModeBaseWarningPanel.Controls.Add(this.label1);
this.EditModeBaseWarningPanel.Location = new System.Drawing.Point(1, 3);
this.EditModeBaseWarningPanel.Name = "EditModeBaseWarningPanel";
this.EditModeBaseWarningPanel.Size = new System.Drawing.Size(559, 24);
this.EditModeBaseWarningPanel.TabIndex = 1;
//
// pictureBox1
//
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
this.pictureBox1.Location = new System.Drawing.Point(6, 3);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(16, 16);
this.pictureBox1.TabIndex = 1;
this.pictureBox1.TabStop = false;
//
// label1
//
this.label1.AutoSize = true;
this.label1.BackColor = System.Drawing.Color.Transparent;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.ForeColor = System.Drawing.Color.White;
this.label1.Location = new System.Drawing.Point(25, 5);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(285, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Warning: You are directly editing base game files";
//
// EditModeModsWarningPanel
//
this.EditModeModsWarningPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.EditModeModsWarningPanel.BackColor = System.Drawing.Color.DarkGreen;
this.EditModeModsWarningPanel.Controls.Add(this.pictureBox2);
this.EditModeModsWarningPanel.Controls.Add(this.label2);
this.EditModeModsWarningPanel.Location = new System.Drawing.Point(1, 28);
this.EditModeModsWarningPanel.Name = "EditModeModsWarningPanel";
this.EditModeModsWarningPanel.Size = new System.Drawing.Size(559, 24);
this.EditModeModsWarningPanel.TabIndex = 2;
//
// pictureBox2
//
this.pictureBox2.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox2.Image")));
this.pictureBox2.Location = new System.Drawing.Point(6, 3);
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.Size = new System.Drawing.Size(16, 16);
this.pictureBox2.TabIndex = 1;
this.pictureBox2.TabStop = false;
//
// label2
//
this.label2.AutoSize = true;
this.label2.BackColor = System.Drawing.Color.Transparent;
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label2.ForeColor = System.Drawing.Color.White;
this.label2.Location = new System.Drawing.Point(25, 5);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(225, 13);
this.label2.TabIndex = 0;
this.label2.Text = "You are editing files in the mods folder";
//
// ListContextMenu
//
this.ListContextMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
@ -783,7 +849,7 @@
this.ListContextDefragmentSeparator,
this.ListContextSelectAllMenu});
this.ListContextMenu.Name = "MainContextMenu";
this.ListContextMenu.Size = new System.Drawing.Size(208, 464);
this.ListContextMenu.Size = new System.Drawing.Size(208, 442);
//
// ListContextViewMenu
//
@ -967,6 +1033,18 @@
this.ListContextEditSeparator.Name = "ListContextEditSeparator";
this.ListContextEditSeparator.Size = new System.Drawing.Size(204, 6);
//
// ListContextDefragmentMenu
//
this.ListContextDefragmentMenu.Name = "ListContextDefragmentMenu";
this.ListContextDefragmentMenu.Size = new System.Drawing.Size(207, 22);
this.ListContextDefragmentMenu.Text = "Defragment Archive...";
this.ListContextDefragmentMenu.Click += new System.EventHandler(this.ListContextDefragmentMenu_Click);
//
// ListContextDefragmentSeparator
//
this.ListContextDefragmentSeparator.Name = "ListContextDefragmentSeparator";
this.ListContextDefragmentSeparator.Size = new System.Drawing.Size(204, 6);
//
// ListContextSelectAllMenu
//
this.ListContextSelectAllMenu.Name = "ListContextSelectAllMenu";
@ -1033,84 +1111,6 @@
//
this.OpenFileDialog.Multiselect = true;
//
// EditModeBaseWarningPanel
//
this.EditModeBaseWarningPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.EditModeBaseWarningPanel.BackColor = System.Drawing.Color.DarkRed;
this.EditModeBaseWarningPanel.Controls.Add(this.pictureBox1);
this.EditModeBaseWarningPanel.Controls.Add(this.label1);
this.EditModeBaseWarningPanel.Location = new System.Drawing.Point(1, 3);
this.EditModeBaseWarningPanel.Name = "EditModeBaseWarningPanel";
this.EditModeBaseWarningPanel.Size = new System.Drawing.Size(559, 24);
this.EditModeBaseWarningPanel.TabIndex = 1;
//
// label1
//
this.label1.AutoSize = true;
this.label1.BackColor = System.Drawing.Color.Transparent;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.ForeColor = System.Drawing.Color.White;
this.label1.Location = new System.Drawing.Point(25, 5);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(285, 13);
this.label1.TabIndex = 0;
this.label1.Text = "Warning: You are directly editing base game files";
//
// pictureBox1
//
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
this.pictureBox1.Location = new System.Drawing.Point(6, 3);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(16, 16);
this.pictureBox1.TabIndex = 1;
this.pictureBox1.TabStop = false;
//
// EditModeModsWarningPanel
//
this.EditModeModsWarningPanel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.EditModeModsWarningPanel.BackColor = System.Drawing.Color.DarkGreen;
this.EditModeModsWarningPanel.Controls.Add(this.pictureBox2);
this.EditModeModsWarningPanel.Controls.Add(this.label2);
this.EditModeModsWarningPanel.Location = new System.Drawing.Point(1, 28);
this.EditModeModsWarningPanel.Name = "EditModeModsWarningPanel";
this.EditModeModsWarningPanel.Size = new System.Drawing.Size(559, 24);
this.EditModeModsWarningPanel.TabIndex = 2;
//
// pictureBox2
//
this.pictureBox2.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox2.Image")));
this.pictureBox2.Location = new System.Drawing.Point(6, 3);
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.Size = new System.Drawing.Size(16, 16);
this.pictureBox2.TabIndex = 1;
this.pictureBox2.TabStop = false;
//
// label2
//
this.label2.AutoSize = true;
this.label2.BackColor = System.Drawing.Color.Transparent;
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label2.ForeColor = System.Drawing.Color.White;
this.label2.Location = new System.Drawing.Point(25, 5);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(225, 13);
this.label2.TabIndex = 0;
this.label2.Text = "You are editing files in the mods folder";
//
// ListContextDefragmentMenu
//
this.ListContextDefragmentMenu.Name = "ListContextDefragmentMenu";
this.ListContextDefragmentMenu.Size = new System.Drawing.Size(207, 22);
this.ListContextDefragmentMenu.Text = "Defragment Archive...";
this.ListContextDefragmentMenu.Click += new System.EventHandler(this.ListContextDefragmentMenu_Click);
//
// ListContextDefragmentSeparator
//
this.ListContextDefragmentSeparator.Name = "ListContextDefragmentSeparator";
this.ListContextDefragmentSeparator.Size = new System.Drawing.Size(204, 6);
//
// ExploreForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -1135,14 +1135,14 @@
this.MainSplitContainer.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.MainSplitContainer)).EndInit();
this.MainSplitContainer.ResumeLayout(false);
this.ListContextMenu.ResumeLayout(false);
this.TreeContextMenu.ResumeLayout(false);
this.EditModeBaseWarningPanel.ResumeLayout(false);
this.EditModeBaseWarningPanel.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.EditModeModsWarningPanel.ResumeLayout(false);
this.EditModeModsWarningPanel.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
this.ListContextMenu.ResumeLayout(false);
this.TreeContextMenu.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();

View File

@ -59,7 +59,8 @@ namespace CodeWalker
InitFileTypes();
if (!EnsureGTAFolder())
/*if (!EnsureGTAFolder())*/
if(!GTAFolder.UpdateGTAFolder(true))
{
Close();
return;

View File

@ -271,16 +271,6 @@
e2d2SZBn3BDEyPiVG5X23Ap3LtwYqxPDuBkxUEmGNWnPzTCEn1GZjBBcYawROqpiopbZ8v/CtN9mmB+9
1vZY1yV7KT9+37JAwB1LBeyfTv8N11OX0LGtniroCF2hd2L+f3A9qqp2iWbL30hjPP3/CJi+jvVtWwLw
A4Rmgl76+inbAAAAAElFTkSuQmCC
</value>
</data>
<data name="SearchButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADVSURBVDhPpVIxDoMwDORJfQN7pI5hz1pmytSJ7/EFhrYZ
MqSVgDXlIhslaoga9aQTsn1nOyFVDsuynNd1HTe6gCPyJDnGJrpN0+T6vnd1Xe9EjDzqJP0GJkAkhIjM
TOSpSXoTrMmTu+7qHvene9m3/7aX1udRh44sMXBWnsZmJmKuQUeWGFiPRaGZKaXMN/hrg3meTygopbyo
6A7IbIdh2KekmPwLR+amaaI4+Q6OzDiGMcafNWD8EnNmrbVFnaRppBr8bGaETYrNDG4CFpsZMJaZq+oD
NQar60zqQI0AAAAASUVORK5CYII=
</value>
</data>
<data name="SearchGlobalButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@ -300,6 +290,16 @@
lVY67e7NJiI/2QxXrEetVVZsAY5938U5NzUbthbgknMW7735iOnYsB0AqBXXlJL5jOnYsDUBqA1uMcbh
mYyuz6aAU/M9hKDP3GR0ffYegNrwXEpRADdZr5+aAlB7UAB3j1V/Anh1j1UD4Fub4YrN8HPL9gAVE1vf
J6IiRgAAAABJRU5ErkJggg==
</value>
</data>
<data name="SearchButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADVSURBVDhPpVIxDoMwDORJfQN7pI5hz1pmytSJ7/EFhrYZ
MqSVgDXlIhslaoga9aQTsn1nOyFVDsuynNd1HTe6gCPyJDnGJrpN0+T6vnd1Xe9EjDzqJP0GJkAkhIjM
TOSpSXoTrMmTu+7qHvene9m3/7aX1udRh44sMXBWnsZmJmKuQUeWGFiPRaGZKaXMN/hrg3meTygopbyo
6A7IbIdh2KekmPwLR+amaaI4+Q6OzDiGMcafNWD8EnNmrbVFnaRppBr8bGaETYrNDG4CFpsZMJaZq+oD
NQar60zqQI0AAAAASUVORK5CYII=
</value>
</data>
<metadata name="StatusBar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
@ -313,7 +313,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADo
HwAAAk1TRnQBSQFMAgEBGAEAAdgBAAHYAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
HwAAAk1TRnQBSQFMAgEBGAEAAeABAAHgAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAAXADAAEBAQABCAYAARwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@ -450,6 +450,24 @@
AQABAQHAAQEBAAEDAcABAQEAAQEBwAEBAQABAwHAAQEBAAEBAQABAQEAAQcBwAEDAQABAQEAAQEBAAEP
AcABAwEAAQEBAAEBAQABDwHAAQMBAAEBAQABAQEAAQ8BwAEDAQABAQHAAQcBAAEPAcABAwEAAQMB4AEP
AQABDwHAAQMBAAEHCw==
</value>
</data>
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
xAAADsQBlSsOGwAAAJtJREFUOE+Vj8ENgCAMRdnE1ZzLCwt5cQJvjkDiRfyfUIJQEJo8U2rof5hWOedW
4CNrHI8XLp3PsXjCPo7Hion3tXm/mwD7KQtJlwVTFmW6MGyRp+MYYD9kUaZjlBaQX4s8XVvQtSjTtQWk
aVGmE4yrBaqFlt6jstDSCX5VBuRj0UtvLSDJopX+R7LAx868X4gGVp5hAQcz4LIxLycs8rg+vnkMAAAA
AElFTkSuQmCC
</value>
</data>
<data name="pictureBox2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
xAAADsQBlSsOGwAAALVJREFUOE/dk70NQjEMhLMHDZuRBZiAadgD6YmGNjNAhaB4okkb/IEtvfgZIaDj
pCvi853y4ySPWmsWDsLmSC1r2xwiLoVlON7aandui+2pIzU0euhV2xNqHtf7y8zouTlcCRm7EFkUBN9s
8HUNKWbObM03QUOk6XEyAUN05nfEg5eAsAEaIg3i/ZOAl5doiLTpJf72jDoLJZpCg693gwRk8RjlaBo9
w1EGGvLdZ5pCxA++c0p3WGOjVX9N2kUAAAAASUVORK5CYII=
</value>
</data>
<metadata name="ListContextMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
@ -574,24 +592,6 @@
<metadata name="FolderBrowserDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>152, 56</value>
</metadata>
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAACbSURBVDhPlY/BDYAgDEXZxNWcywsLeXECb45A4kX8n1CC
UBCaPFNq6H+YVjnnVuAjaxyPFy6dz7F4wj6Ox4qJ97V5v5sA+ykLSZcFUxZlujBskafjGGA/ZFGmY5QW
kF+LPF1b0LUo07UFpGlRphOMqwWqhZbeo7LQ0gl+VQbkY9FLby0gyaKV/keywMfOvF+IBlaeYQEHM+Cy
MS8nLPK4Pr55DAAAAABJRU5ErkJggg==
</value>
</data>
<data name="pictureBox2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAC1SURBVDhP3ZO9DUIxDISzBw2bkQWYgGnYA+mJhjYzQIWg
eKJJG/yBLb34GSGg46Qr4vOd8uMkj1prFg7C5kgta9scIi6FZTje2mp3bovtqSM1NHroVdsTah7X+8vM
6Lk5XAkZuxBZFATfbPB1DSlmzmzNN0FDpOlxMgFDdOZ3xIOXgLABGiIN4v2TgJeXaIi06SX+9ow6CyWa
QoOvd4MEZPEY5WgaPcNRBhry3WeaQsQPvnNKd1hjo1V/TdpFAAAAAElFTkSuQmCC
</value>
</data>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>126</value>
</metadata>

91
Utils/GTAFolderCheck.cs Normal file
View File

@ -0,0 +1,91 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Windows.Forms;
using CodeWalker.Properties;
namespace CodeWalker
{
public static class GTAFolder
{
public static string CurrentGTAFolder { get; private set; } = Settings.Default.GTAFolder;
public static bool ValidateGTAFolder(string folder, out string failReason)
{
failReason = "";
if(string.IsNullOrWhiteSpace(folder))
{
failReason = "No folder specified";
return false;
}
if(!Directory.Exists(folder))
{
failReason = $"Folder \"{folder}\" does not exist";
return false;
}
if(!File.Exists(folder + @"\gta5.exe"))
{
failReason = $"GTA5.exe not found in folder \"{folder}\"";
return false;
}
return true;
}
public static bool ValidateGTAFolder(string folder) => ValidateGTAFolder(folder, out string reason);
public static bool IsCurrentGTAFolderValid() => ValidateGTAFolder(CurrentGTAFolder);
public static bool UpdateGTAFolder(bool UseCurrentIfValid = false)
{
if(UseCurrentIfValid && IsCurrentGTAFolderValid())
{
return true;
}
string folder = CurrentGTAFolder;
SelectFolderForm f = new SelectFolderForm();
f.ShowDialog();
if(f.Result == DialogResult.OK && Directory.Exists(f.SelectedFolder))
{
folder = f.SelectedFolder;
}
string failReason;
if(ValidateGTAFolder(folder, out failReason))
{
SetGTAFolder(folder);
MessageBox.Show($"Successfully set GTA Folder to \"{folder}\"", "Set GTA Folder", MessageBoxButtons.OK, MessageBoxIcon.Information);
return true;
} else
{
var tryAgain = MessageBox.Show($"Folder \"{folder}\" is not a valid GTA folder:\n{failReason}\n\nDo you want to try choosing a different folder?", "Unable to set GTA Folder", MessageBoxButtons.RetryCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
if(tryAgain == DialogResult.Retry)
{
return UpdateGTAFolder(false);
} else
{
return false;
}
}
}
public static bool SetGTAFolder(string folder)
{
if(ValidateGTAFolder(folder))
{
CurrentGTAFolder = folder;
Settings.Default.GTAFolder = folder;
return true;
}
return false;
}
}
}