2018-02-18 09:26:35 +08:00
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
2018-02-21 17:12:17 +08:00
|
|
|
|
string origFolder = CurrentGTAFolder;
|
2018-02-18 09:26:35 +08:00
|
|
|
|
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);
|
2018-02-21 17:12:17 +08:00
|
|
|
|
if(folder != origFolder)
|
|
|
|
|
{
|
|
|
|
|
MessageBox.Show($"Successfully changed GTA Folder to \"{folder}\"", "Set GTA Folder", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
|
}
|
2018-02-18 09:26:35 +08:00
|
|
|
|
return true;
|
|
|
|
|
} else
|
|
|
|
|
{
|
2018-02-21 16:34:49 +08:00
|
|
|
|
var tryAgain = MessageBox.Show($"Folder \"{folder}\" is not a valid GTA folder:\n\n{failReason}\n\nDo you want to try choosing a different folder?", "Unable to set GTA Folder", MessageBoxButtons.RetryCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
|
2018-02-18 09:26:35 +08:00
|
|
|
|
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;
|
2018-02-24 21:59:00 +08:00
|
|
|
|
Settings.Default.Save();
|
2018-02-18 09:26:35 +08:00
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2018-02-18 17:20:39 +08:00
|
|
|
|
|
|
|
|
|
public static string GetCurrentGTAFolderWithTrailingSlash() =>CurrentGTAFolder.EndsWith(@"\") ? CurrentGTAFolder : CurrentGTAFolder + @"\";
|
|
|
|
|
|
2018-02-18 09:26:35 +08:00
|
|
|
|
}
|
|
|
|
|
}
|