RustyHearts-Launcher/RHLauncher.Forms/ConfigForm.cs
Junior 7849b2001a Updated dependencies
Replaced deprecated DotNetZip with System.IO.Compression.
Changed target framework to net 9.0.
Removed DotNetZip package reference.
Updated Microsoft.Web.WebView2 to 1.0.2903.40.
Updated WindowsAPICodePack to 8.0.6.
2024-11-27 00:28:46 -03:00

148 lines
4.4 KiB
C#

using RHLauncher.RHLauncher.i8n;
using RHLauncher.RHLauncher.Helper;
using System.Diagnostics;
namespace RHLauncher
{
public partial class ConfigForm : Form
{
public string Url = "https://github.com/JuniorDark/RustyHearts-Launcher";
private bool languageChanged = false;
readonly string currentLanguageCode = Configuration.Default.Lang;
public ConfigForm()
{
InitializeComponent();
string currentVersion = GetLauncherVersion.GetVersion();
cbLauncherLanguage.SelectedItem = GetLanguageName(currentLanguageCode);
VersionLabel.Text = $"{LocalizedStrings.Version}: {currentVersion}";
Text = LocalizedStrings.ConfigFormTitle;
TitleLabel.Text = LocalizedStrings.Settings;
LanguageLabel.Text = LocalizedStrings.LauncherLanguage;
}
#region Form Events
private void ConfigForm_Load(object sender, EventArgs e)
{
TitleLabel.Left = (ClientSize.Width - TitleLabel.Width) / 2;
}
private void ConfigForm_FormClosing(object sender, FormClosingEventArgs e)
{
Dispose();
}
#endregion
#region Language Methods
private void CbLauncherLanguage_SelectedIndexChanged(object sender, EventArgs e)
{
if (cbLauncherLanguage.SelectedItem is string selectedItem)
{
string selectedLanguageCode = GetLanguageCode(selectedItem);
if (selectedLanguageCode != currentLanguageCode)
{
languageChanged = true;
}
else
{
languageChanged = false;
}
}
}
private static string GetLanguageCode(string? language)
{
return language switch
{
"English" => "en",
"한국어" => "ko",
_ => "en", // default to English if not found
};
}
private static string GetLanguageName(string code)
{
return code switch
{
"en" => "English",
"ko" => "한국어",
_ => "English", // default to English if not found
};
}
#endregion
#region Button Click Events
private void OkButton_Click(object sender, EventArgs e)
{
if (languageChanged)
{
string? selectedLanguage = cbLauncherLanguage.SelectedItem?.ToString();
string languageCode = GetLanguageCode(selectedLanguage);
if (languageCode != null)
{
// Update the language in the INI file
Configuration.Default.Lang = languageCode;
Configuration.Default.iniFile.WriteValue("Launcher", "Lang", languageCode);
DialogResult result = MsgBoxForm.ShowYN(LocalizedStrings.ChangeLanguageMessage, LocalizedStrings.Confirmation);
if (result == DialogResult.Yes)
{
Invoke((MethodInvoker)(() => Close()));
Task.Delay(1000).ContinueWith(_ =>
{
Application.Restart();
});
}
}
}
else
{
Close();
}
}
private void VersionLabel_Click(object sender, EventArgs e)
{
Process.Start(new ProcessStartInfo { FileName = Url, UseShellExecute = true });
}
private void CloseButton_Click(object sender, EventArgs e)
{
Close();
}
#endregion
#region Button Events
private void Button_MouseHover(object sender, EventArgs e)
{
if (sender is Button button)
{
button.ImageIndex = 1;
}
}
private void Button_MouseLeave(object sender, EventArgs e)
{
if (sender is Button button)
{
button.ImageIndex = 0;
}
}
private void Button_MouseDown(object sender, MouseEventArgs e)
{
if (sender is Button button)
{
button.ImageIndex = 2;
}
}
#endregion
}
}