Extended the localization system to easily include additional languages in the future
|
|
@ -1,18 +1,18 @@
|
||||||
using System;
|
using System.Runtime.InteropServices;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Text;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
|
|
||||||
public static class NativeMethod
|
namespace RHLauncher.DynamicLib
|
||||||
{
|
{
|
||||||
[DllImport("kernel32.dll", EntryPoint = "LoadLibrary")]
|
public static class NativeMethod
|
||||||
public static extern int LoadLibrary(
|
{
|
||||||
[MarshalAs(UnmanagedType.LPStr)] string lpLibFileName);
|
[DllImport("kernel32.dll", EntryPoint = "LoadLibrary")]
|
||||||
|
public static extern int LoadLibrary(
|
||||||
|
[MarshalAs(UnmanagedType.LPStr)] string lpLibFileName);
|
||||||
|
|
||||||
[DllImport("kernel32.dll", EntryPoint = "GetProcAddress")]
|
[DllImport("kernel32.dll", EntryPoint = "GetProcAddress")]
|
||||||
public static extern IntPtr GetProcAddress(int hModule,
|
public static extern IntPtr GetProcAddress(int hModule,
|
||||||
[MarshalAs(UnmanagedType.LPStr)] string lpProcName);
|
[MarshalAs(UnmanagedType.LPStr)] string lpProcName);
|
||||||
|
|
||||||
[DllImport("kernel32.dll", EntryPoint = "FreeLibrary")]
|
[DllImport("kernel32.dll", EntryPoint = "FreeLibrary")]
|
||||||
public static extern bool FreeLibrary(int hModule);
|
public static extern bool FreeLibrary(int hModule);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,41 +1,39 @@
|
||||||
using System;
|
using System.Runtime.InteropServices;
|
||||||
using System.Text;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.IO;
|
|
||||||
using RHLauncher.DynamicLib;
|
|
||||||
|
|
||||||
public static class ZLibDll
|
namespace RHLauncher.DynamicLib
|
||||||
{
|
{
|
||||||
|
public static class ZLibDll
|
||||||
//[DllImport("ZlibDll.dll", CallingConvention = CallingConvention.Cdecl)]
|
|
||||||
//public static extern int Decompress(byte[] compressed_buffer, int compressed_size, byte[] decompressed_buffer, ref int decompressed_size);
|
|
||||||
|
|
||||||
public delegate int DecompressDelegate(byte[] compressed_buffer, int compressed_size, byte[] decompressed_buffer, ref int decompressed_size);
|
|
||||||
public static DecompressDelegate? Decompress = null;
|
|
||||||
|
|
||||||
//[DllImport("ZlibDll.dll", CallingConvention = CallingConvention.Cdecl)]
|
|
||||||
//public static extern int Compress(byte[] decompressed_buffer, int decompressed_size, byte[] compressed_buffer, ref int compressed_size);
|
|
||||||
public delegate int CompressDelegate(byte[] decompressed_buffer, int decompressed_size, byte[] compressed_buffer, ref int compressed_size);
|
|
||||||
public static CompressDelegate? Compress = null;
|
|
||||||
|
|
||||||
static ZLibDll()
|
|
||||||
{
|
{
|
||||||
byte[] libBuffer = ResourceDll.ZlibDll;
|
|
||||||
string dllPath = Path.Combine(Path.GetTempPath(), "ZlibDll.dll");
|
//[DllImport("ZlibDll.dll", CallingConvention = CallingConvention.Cdecl)]
|
||||||
try
|
//public static extern int Decompress(byte[] compressed_buffer, int compressed_size, byte[] decompressed_buffer, ref int decompressed_size);
|
||||||
|
|
||||||
|
public delegate int DecompressDelegate(byte[] compressed_buffer, int compressed_size, byte[] decompressed_buffer, ref int decompressed_size);
|
||||||
|
public static DecompressDelegate? Decompress = null;
|
||||||
|
|
||||||
|
//[DllImport("ZlibDll.dll", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
//public static extern int Compress(byte[] decompressed_buffer, int decompressed_size, byte[] compressed_buffer, ref int compressed_size);
|
||||||
|
public delegate int CompressDelegate(byte[] decompressed_buffer, int decompressed_size, byte[] compressed_buffer, ref int compressed_size);
|
||||||
|
public static CompressDelegate? Compress = null;
|
||||||
|
|
||||||
|
static ZLibDll()
|
||||||
{
|
{
|
||||||
File.WriteAllBytes(dllPath, libBuffer);
|
byte[] libBuffer = ResourceDll.ZlibDll;
|
||||||
|
string dllPath = Path.Combine(Path.GetTempPath(), "ZlibDll.dll");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File.WriteAllBytes(dllPath, libBuffer);
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
|
||||||
|
int hModule = NativeMethod.LoadLibrary(dllPath);
|
||||||
|
if (hModule == 0) return;
|
||||||
|
|
||||||
|
IntPtr intPtr = NativeMethod.GetProcAddress(hModule, "Decompress");
|
||||||
|
Decompress = (DecompressDelegate)Marshal.GetDelegateForFunctionPointer(intPtr, typeof(DecompressDelegate));
|
||||||
|
|
||||||
|
intPtr = NativeMethod.GetProcAddress(hModule, "Compress");
|
||||||
|
Compress = (CompressDelegate)Marshal.GetDelegateForFunctionPointer(intPtr, typeof(CompressDelegate));
|
||||||
}
|
}
|
||||||
catch { }
|
|
||||||
|
|
||||||
int hModule = NativeMethod.LoadLibrary(dllPath);
|
|
||||||
if (hModule == 0) return;
|
|
||||||
|
|
||||||
IntPtr intPtr = NativeMethod.GetProcAddress(hModule, "Decompress");
|
|
||||||
Decompress = (DecompressDelegate)Marshal.GetDelegateForFunctionPointer(intPtr, typeof(DecompressDelegate));
|
|
||||||
|
|
||||||
intPtr = NativeMethod.GetProcAddress(hModule, "Compress");
|
|
||||||
Compress = (CompressDelegate)Marshal.GetDelegateForFunctionPointer(intPtr, typeof(CompressDelegate));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
170
Properties/Resources.Designer.cs
generated
|
|
@ -110,6 +110,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap button_login_active_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("button_login_active_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -120,6 +130,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap button_login_down_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("button_login_down_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -170,6 +190,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap button_register_active_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("button_register_active_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -180,6 +210,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap button_register_down_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("button_register_down_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -190,6 +230,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap button_register_normal_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("button_register_normal_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -200,6 +250,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap ChangePwwnd_button_email_active_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("ChangePwwnd_button_email_active_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -210,6 +270,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap ChangePwwnd_button_email_down_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("ChangePwwnd_button_email_down_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -220,6 +290,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap ChangePwwnd_button_email_normal_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("ChangePwwnd_button_email_normal_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -470,6 +550,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap messagewnd_button_ok_active_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("messagewnd_button_ok_active_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -480,6 +570,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap messagewnd_button_ok_down_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("messagewnd_button_ok_down_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -490,6 +590,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap messagewnd_button_ok_normal_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("messagewnd_button_ok_normal_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -500,6 +610,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap Registerwnd_button_continue_active_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Registerwnd_button_continue_active_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -510,6 +630,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap Registerwnd_button_continue_down_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Registerwnd_button_continue_down_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -520,6 +650,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap Registerwnd_button_continue_normal_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Registerwnd_button_continue_normal_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -530,6 +670,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap Registerwndwnd_button_sendemail_active_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Registerwndwnd_button_sendemail_active_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -540,6 +690,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap Registerwndwnd_button_sendemail_down_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Registerwndwnd_button_sendemail_down_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -550,6 +710,16 @@ namespace RHLauncher.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap Registerwndwnd_button_sendemail_normal_ko {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Registerwndwnd_button_sendemail_normal_ko", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -133,9 +133,15 @@
|
||||||
<data name="button_login_active" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="button_login_active" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\button_login_active.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\button_login_active.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="button_login_active_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\button_login_active_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="button_login_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="button_login_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\button_login_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\button_login_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="button_login_down_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\button_login_down_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="button_login_normal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="button_login_normal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\button_login_normal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\button_login_normal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
@ -151,21 +157,39 @@
|
||||||
<data name="button_register_active" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="button_register_active" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\button_register_active.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\button_register_active.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="button_register_active_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\button_register_active_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="button_register_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="button_register_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\button_register_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\button_register_down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="button_register_down_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\button_register_down_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="button_register_normal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="button_register_normal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\button_register_normal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\button_register_normal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="button_register_normal_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\button_register_normal_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="ChangePwwnd_button_email_active" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="ChangePwwnd_button_email_active" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\ChangePwwnd.button.email.active.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\ChangePwwnd.button.email.active.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ChangePwwnd_button_email_active_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\ChangePwwnd_button_email_active_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="ChangePwwnd_button_email_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="ChangePwwnd_button_email_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\ChangePwwnd.button.email.down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\ChangePwwnd.button.email.down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ChangePwwnd_button_email_down_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\ChangePwwnd_button_email_down_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="ChangePwwnd_button_email_normal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="ChangePwwnd_button_email_normal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\ChangePwwnd.button.email.normal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\ChangePwwnd.button.email.normal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ChangePwwnd_button_email_normal_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\ChangePwwnd_button_email_normal_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="character_select_cut_angela" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="character_select_cut_angela" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\bg\character_select_cut_angela.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\bg\character_select_cut_angela.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
@ -238,33 +262,60 @@
|
||||||
<data name="messagewnd_button_ok_active" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="messagewnd_button_ok_active" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\messagewnd.button.ok.active.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\messagewnd.button.ok.active.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="messagewnd_button_ok_active_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\messagewnd.button.ok.active_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="messagewnd_button_ok_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="messagewnd_button_ok_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\messagewnd.button.ok.down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\messagewnd.button.ok.down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="messagewnd_button_ok_down_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\messagewnd.button.ok.down_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="messagewnd_button_ok_normal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="messagewnd_button_ok_normal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\messagewnd.button.ok.normal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\messagewnd.button.ok.normal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="messagewnd_button_ok_normal_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\messagewnd.button.ok.normal_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="message_bkg" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="message_bkg" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\bg\message_bkg.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\bg\message_bkg.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Registerwndwnd_button_sendemail_active" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Registerwndwnd_button_sendemail_active" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\Registerwndwnd.button.sendemail.active.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\Registerwndwnd.button.sendemail.active.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Registerwndwnd_button_sendemail_active_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\Registerwndwnd_button_sendemail_active_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="Registerwndwnd_button_sendemail_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Registerwndwnd_button_sendemail_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\Registerwndwnd.button.sendemail.down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\Registerwndwnd.button.sendemail.down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Registerwndwnd_button_sendemail_down_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\Registerwndwnd_button_sendemail_down_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="Registerwndwnd_button_sendemail_normal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Registerwndwnd_button_sendemail_normal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\Registerwndwnd.button.sendemail.normal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\Registerwndwnd.button.sendemail.normal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Registerwndwnd_button_sendemail_normal_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\Registerwndwnd_button_sendemail_normal_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="Registerwnd_button_continue_active" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Registerwnd_button_continue_active" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\Registerwnd.button.continue.active.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\Registerwnd.button.continue.active.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Registerwnd_button_continue_active_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\Registerwnd_button_continue_active_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="Registerwnd_button_continue_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Registerwnd_button_continue_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\Registerwnd.button.continue.down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\Registerwnd.button.continue.down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Registerwnd_button_continue_down_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\Registerwnd_button_continue_down_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="Registerwnd_button_continue_normal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Registerwnd_button_continue_normal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\buttons\Registerwnd.button.continue.normal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\buttons\Registerwnd.button.continue.normal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Registerwnd_button_continue_normal_ko" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\buttons\Registerwnd_button_continue_normal_ko.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="tips_error" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="tips_error" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\icons\tips_error.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\icons\tips_error.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
||||||
31
README.md
|
|
@ -10,12 +10,18 @@
|
||||||
## Introduction
|
## Introduction
|
||||||
Rusty Hearts Launcher is a custom launcher for the Rusty Hearts game client. It provides several features, including self-updating, automatic game updates, account registration, and a news window.
|
Rusty Hearts Launcher is a custom launcher for the Rusty Hearts game client. It provides several features, including self-updating, automatic game updates, account registration, and a news window.
|
||||||
|
|
||||||
|
## Preview
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
## Table of Contents
|
## Table of Contents
|
||||||
* [Features](#features)
|
* [Features](#features)
|
||||||
* [Setup](#setup)
|
* [Setup](#setup)
|
||||||
* [Prerequisites for Building Locally/Development](#prerequisites-for-building-locallydevelopment)
|
* [Prerequisites for Building Locally/Development](#prerequisites-for-building-locallydevelopment)
|
||||||
* [System Requirements for Ready-to-use build](#system-requirements-for-ready-to-use-build)
|
* [System Requirements for Ready-to-use build](#system-requirements-for-ready-to-use-build)
|
||||||
* [Preview](#preview)
|
|
||||||
* [License](#license)
|
* [License](#license)
|
||||||
* [Contributing](#contributing)
|
* [Contributing](#contributing)
|
||||||
* [FAQ](#faq)
|
* [FAQ](#faq)
|
||||||
|
|
@ -34,12 +40,12 @@ The launcher require the [Rusty Hearts API](https://github.com/JuniorDark/RustyH
|
||||||
|
|
||||||
### API URL
|
### API URL
|
||||||
|
|
||||||
In order for the launcher to work it need to be conected to the api. To change the URL address of the launcher API open the config.ini (it will be created when opening the launcher for the first time).
|
In order for the launcher to work it need to be conected to the api. To change the URL address of the launcher API open the Config.ini (it will be created when opening the launcher for the first time).
|
||||||
|
|
||||||
The default URL for the api can be changed on IniFile.cs
|
The default URL for the api can be changed on IniFile.cs
|
||||||
|
|
||||||
### Client region
|
### Client region
|
||||||
The client region can be set on Service on config.ini
|
The client region can be set on Service on Config.ini
|
||||||
|
|
||||||
* **usa** (PWE) - Full api support
|
* **usa** (PWE) - Full api support
|
||||||
* **chn** (Xunlei) - Only launcher support
|
* **chn** (Xunlei) - Only launcher support
|
||||||
|
|
@ -54,10 +60,16 @@ In order to create client patches, you need to use the `patch` directory of the
|
||||||
|
|
||||||
The tool for creating the patch files is available in the repository: https://github.com/JuniorDark/RustyHearts-MIPTool
|
The tool for creating the patch files is available in the repository: https://github.com/JuniorDark/RustyHearts-MIPTool
|
||||||
|
|
||||||
### Launcher customization
|
### Launcher Language
|
||||||
If you want to change the text on the launcher the strings can be found on LocalizedStrings.resx resource file.
|
The launcher language can be set on `Lang` on Config.ini
|
||||||
|
|
||||||
If you want to change the text on the buttons/images used in the launcher you can use the Photoshop .psd files included in the Resources.rar
|
* **en** - English (en-US) default language
|
||||||
|
* **ko** - Korean ("ko-KR) (Machine Translated)
|
||||||
|
|
||||||
|
### Launcher customization
|
||||||
|
If you want to add a new language create a LocalizedStrings.<language>.resx with for the desired language. The english strings can be found on LocalizedStrings.resx resource file.
|
||||||
|
|
||||||
|
If you want to change the text on the buttons/images used in the launcher you can use the Photoshop .psd files included in the PSD Resources.rar
|
||||||
|
|
||||||
## Prerequisites for Building Locally/Development
|
## Prerequisites for Building Locally/Development
|
||||||
The launcher is built in .NET 7 and as such, the packages listed below are required to create a local and development build of the launcher. Furthermore, it uses many submodules and packages outside of this, which will automatically be loaded when the user sets up a local environment of the application.
|
The launcher is built in .NET 7 and as such, the packages listed below are required to create a local and development build of the launcher. Furthermore, it uses many submodules and packages outside of this, which will automatically be loaded when the user sets up a local environment of the application.
|
||||||
|
|
@ -69,12 +81,6 @@ The launcher is built in .NET 7 and as such, the packages listed below are requi
|
||||||
* OS: Windows 10 1809 Update (build 17763) or later / Windows 11 (Any builds)
|
* OS: Windows 10 1809 Update (build 17763) or later / Windows 11 (Any builds)
|
||||||
* Architecture: x64/AMD64
|
* Architecture: x64/AMD64
|
||||||
|
|
||||||
## Preview
|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
This project is licensed under the terms found in [`LICENSE-0BSD`](LICENSE).
|
This project is licensed under the terms found in [`LICENSE-0BSD`](LICENSE).
|
||||||
|
|
||||||
|
|
@ -100,4 +106,3 @@ If you need help with the launcher, please submit an issue on GitHub.
|
||||||
## Roadmap
|
## Roadmap
|
||||||
* Add support for client download/repair
|
* Add support for client download/repair
|
||||||
* Improve performance and stability
|
* Improve performance and stability
|
||||||
* Add support for additional languages
|
|
||||||
|
|
|
||||||
33
RHLauncher.ChangePwd/ChangePwd.Designer.cs
generated
|
|
@ -67,6 +67,9 @@
|
||||||
SubTitleLabelS2 = new Label();
|
SubTitleLabelS2 = new Label();
|
||||||
TitleLabelS2 = new Label();
|
TitleLabelS2 = new Label();
|
||||||
imageListTips = new ImageList(components);
|
imageListTips = new ImageList(components);
|
||||||
|
imageListSendEmailBtn_ko = new ImageList(components);
|
||||||
|
imageListContinueBtn_ko = new ImageList(components);
|
||||||
|
imageListOKBtn_ko = new ImageList(components);
|
||||||
Stage1Panel.SuspendLayout();
|
Stage1Panel.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)EmailPictureBox).BeginInit();
|
((System.ComponentModel.ISupportInitialize)EmailPictureBox).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)CodePictureBox).BeginInit();
|
((System.ComponentModel.ISupportInitialize)CodePictureBox).BeginInit();
|
||||||
|
|
@ -594,6 +597,33 @@
|
||||||
imageListTips.Images.SetKeyName(0, "tips_error.png");
|
imageListTips.Images.SetKeyName(0, "tips_error.png");
|
||||||
imageListTips.Images.SetKeyName(1, "tips_ok.png");
|
imageListTips.Images.SetKeyName(1, "tips_ok.png");
|
||||||
//
|
//
|
||||||
|
// imageListSendEmailBtn_ko
|
||||||
|
//
|
||||||
|
imageListSendEmailBtn_ko.ColorDepth = ColorDepth.Depth32Bit;
|
||||||
|
imageListSendEmailBtn_ko.ImageStream = (ImageListStreamer)resources.GetObject("imageListSendEmailBtn_ko.ImageStream");
|
||||||
|
imageListSendEmailBtn_ko.TransparentColor = Color.Transparent;
|
||||||
|
imageListSendEmailBtn_ko.Images.SetKeyName(0, "ChangePwwnd_button_email_normal_ko.png");
|
||||||
|
imageListSendEmailBtn_ko.Images.SetKeyName(1, "ChangePwwnd_button_email_active_ko.png");
|
||||||
|
imageListSendEmailBtn_ko.Images.SetKeyName(2, "ChangePwwnd_button_email_down_ko.png");
|
||||||
|
//
|
||||||
|
// imageListContinueBtn_ko
|
||||||
|
//
|
||||||
|
imageListContinueBtn_ko.ColorDepth = ColorDepth.Depth32Bit;
|
||||||
|
imageListContinueBtn_ko.ImageStream = (ImageListStreamer)resources.GetObject("imageListContinueBtn_ko.ImageStream");
|
||||||
|
imageListContinueBtn_ko.TransparentColor = Color.Transparent;
|
||||||
|
imageListContinueBtn_ko.Images.SetKeyName(0, "Registerwnd_button_continue_normal_ko.png");
|
||||||
|
imageListContinueBtn_ko.Images.SetKeyName(1, "Registerwnd_button_continue_active_ko.png");
|
||||||
|
imageListContinueBtn_ko.Images.SetKeyName(2, "Registerwnd_button_continue_down_ko.png");
|
||||||
|
//
|
||||||
|
// imageListOKBtn_ko
|
||||||
|
//
|
||||||
|
imageListOKBtn_ko.ColorDepth = ColorDepth.Depth32Bit;
|
||||||
|
imageListOKBtn_ko.ImageStream = (ImageListStreamer)resources.GetObject("imageListOKBtn_ko.ImageStream");
|
||||||
|
imageListOKBtn_ko.TransparentColor = Color.Transparent;
|
||||||
|
imageListOKBtn_ko.Images.SetKeyName(0, "messagewnd.button.ok.normal.png");
|
||||||
|
imageListOKBtn_ko.Images.SetKeyName(1, "messagewnd.button.ok.active.png");
|
||||||
|
imageListOKBtn_ko.Images.SetKeyName(2, "messagewnd.button.ok.down.png");
|
||||||
|
//
|
||||||
// ChangePwd
|
// ChangePwd
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||||
|
|
@ -664,5 +694,8 @@
|
||||||
private Label TimerLabel;
|
private Label TimerLabel;
|
||||||
private ImageList imageListContinueBtn;
|
private ImageList imageListContinueBtn;
|
||||||
private Label PwdStrengthLabel;
|
private Label PwdStrengthLabel;
|
||||||
|
private ImageList imageListSendEmailBtn_ko;
|
||||||
|
private ImageList imageListContinueBtn_ko;
|
||||||
|
private ImageList imageListOKBtn_ko;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -12,6 +12,11 @@ namespace RHLauncher
|
||||||
public string SendPasswordCodeUrl = Configuration.Default.SendPasswordCodeUrl;
|
public string SendPasswordCodeUrl = Configuration.Default.SendPasswordCodeUrl;
|
||||||
public string VerifyCodeUrl = Configuration.Default.VerifyCodeUrl;
|
public string VerifyCodeUrl = Configuration.Default.VerifyCodeUrl;
|
||||||
public string ChangePasswordUrl = Configuration.Default.ChangePasswordUrl;
|
public string ChangePasswordUrl = Configuration.Default.ChangePasswordUrl;
|
||||||
|
public string Lang = Configuration.Default.Lang;
|
||||||
|
private List<Button>? buttons;
|
||||||
|
private List<ImageList>? imageLists;
|
||||||
|
private Dictionary<string, List<ImageList>>? languageImageLists;
|
||||||
|
|
||||||
|
|
||||||
private readonly System.Windows.Forms.Timer resendTimer = new();
|
private readonly System.Windows.Forms.Timer resendTimer = new();
|
||||||
private int secondsLeft = 60;
|
private int secondsLeft = 60;
|
||||||
|
|
@ -32,7 +37,9 @@ namespace RHLauncher
|
||||||
resendTimer.Tick += ResendTimer_Tick;
|
resendTimer.Tick += ResendTimer_Tick;
|
||||||
_shouldRestart = shouldRestart;
|
_shouldRestart = shouldRestart;
|
||||||
|
|
||||||
|
LoadLocalizedStrings();
|
||||||
|
|
||||||
|
Text = LocalizedStrings.RegFormTitle;
|
||||||
TitleLabelS1.Text = LocalizedStrings.ChangePassword;
|
TitleLabelS1.Text = LocalizedStrings.ChangePassword;
|
||||||
TitleLabelS2.Text = LocalizedStrings.ChangePassword;
|
TitleLabelS2.Text = LocalizedStrings.ChangePassword;
|
||||||
SubTitleLabelS1.Text = LocalizedStrings.RustyHearts;
|
SubTitleLabelS1.Text = LocalizedStrings.RustyHearts;
|
||||||
|
|
@ -47,6 +54,24 @@ namespace RHLauncher
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void LoadLocalizedStrings()
|
||||||
|
{
|
||||||
|
// Initialize buttons and image lists
|
||||||
|
buttons = new List<Button> { ContinueButtonS1, SendEmailButton, OkButtonS2 };
|
||||||
|
imageLists = new List<ImageList> { imageListContinueBtn, imageListSendEmailBtn, imageListOKBtn };
|
||||||
|
|
||||||
|
// Initialize language-specific image lists
|
||||||
|
languageImageLists = new Dictionary<string, List<ImageList>>
|
||||||
|
{
|
||||||
|
{ "en", new List<ImageList> { imageListContinueBtn, imageListSendEmailBtn, imageListOKBtn } }, // English image lists
|
||||||
|
{ "ko", new List<ImageList> { imageListContinueBtn_ko, imageListSendEmailBtn_ko, imageListOKBtn_ko } }, // Korean image lists
|
||||||
|
// Add other languages and their respective image lists here
|
||||||
|
};
|
||||||
|
|
||||||
|
// Load the appropriate resource file based on the selected language
|
||||||
|
LocalizationHelper.LoadLocalizedStrings(Lang, buttons, imageLists, languageImageLists);
|
||||||
|
}
|
||||||
|
|
||||||
#region Methods
|
#region Methods
|
||||||
|
|
||||||
private async Task<string> SendEmailRequestAsync()
|
private async Task<string> SendEmailRequestAsync()
|
||||||
|
|
@ -66,44 +91,44 @@ namespace RHLauncher
|
||||||
Invoke((MethodInvoker)(() =>
|
Invoke((MethodInvoker)(() =>
|
||||||
{
|
{
|
||||||
switch (response)
|
switch (response)
|
||||||
{
|
{
|
||||||
case "EmailSent":
|
case "EmailSent":
|
||||||
SendEmailButton.Enabled = false;
|
SendEmailButton.Enabled = false;
|
||||||
resendTimer.Start();
|
resendTimer.Start();
|
||||||
break;
|
break;
|
||||||
case "ValidVerificationCode":
|
case "ValidVerificationCode":
|
||||||
// Hide the firs panel and show the second panel
|
// Hide the firs panel and show the second panel
|
||||||
Stage1Panel.Visible = false;
|
Stage1Panel.Visible = false;
|
||||||
Stage2Panel.Visible = true;
|
Stage2Panel.Visible = true;
|
||||||
EmailLabelS2.Text = EmailTextBox.Text;
|
EmailLabelS2.Text = EmailTextBox.Text;
|
||||||
CodeDescLabel.Text = "";
|
CodeDescLabel.Text = "";
|
||||||
CodePictureBox.Image = imageListTips.Images[1];
|
CodePictureBox.Image = imageListTips.Images[1];
|
||||||
break;
|
break;
|
||||||
case "PasswordChanged":
|
case "PasswordChanged":
|
||||||
MsgBoxForm.Show(LocalizedStrings.PasswordChanged, LocalizedStrings.Success);
|
MsgBoxForm.Show(LocalizedStrings.PasswordChanged, LocalizedStrings.Success);
|
||||||
OnPasswordChanged();
|
OnPasswordChanged();
|
||||||
break;
|
break;
|
||||||
case "SamePassword":
|
case "SamePassword":
|
||||||
MsgBoxForm.Show(LocalizedStrings.SamePassword, LocalizedStrings.Failed);
|
MsgBoxForm.Show(LocalizedStrings.SamePassword, LocalizedStrings.Failed);
|
||||||
break;
|
break;
|
||||||
case "AccountNotFound":
|
case "AccountNotFound":
|
||||||
EmailDescLabel.Text = LocalizedStrings.AccountNotFound;
|
EmailDescLabel.Text = LocalizedStrings.AccountNotFound;
|
||||||
EmailDescLabel.ForeColor = Color.Red;
|
EmailDescLabel.ForeColor = Color.Red;
|
||||||
EmailPictureBox.Image = imageListTips.Images[0];
|
EmailPictureBox.Image = imageListTips.Images[0];
|
||||||
return;
|
return;
|
||||||
case "InvalidVerificationCode":
|
case "InvalidVerificationCode":
|
||||||
CodeDescLabel.Text = LocalizedStrings.InvalidVerificationCode;
|
CodeDescLabel.Text = LocalizedStrings.InvalidVerificationCode;
|
||||||
CodeDescLabel.ForeColor = Color.Red;
|
CodeDescLabel.ForeColor = Color.Red;
|
||||||
CodePictureBox.Image = imageListTips.Images[0];
|
CodePictureBox.Image = imageListTips.Images[0];
|
||||||
return;
|
return;
|
||||||
case "ExpiredVerificationCode":
|
case "ExpiredVerificationCode":
|
||||||
CodeDescLabel.Text = LocalizedStrings.ExpiredVerificationCode;
|
CodeDescLabel.Text = LocalizedStrings.ExpiredVerificationCode;
|
||||||
CodeDescLabel.ForeColor = Color.Red;
|
CodeDescLabel.ForeColor = Color.Red;
|
||||||
CodePictureBox.Image = imageListTips.Images[0];
|
CodePictureBox.Image = imageListTips.Images[0];
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
MsgBoxForm.Show("Error:" + response, LocalizedStrings.Error);
|
MsgBoxForm.Show("Error:" + response, LocalizedStrings.Error);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ namespace RHLauncher.RHLauncher.Helper;
|
||||||
|
|
||||||
public class Configuration
|
public class Configuration
|
||||||
{
|
{
|
||||||
private static readonly string DefaultIniFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini");
|
private static readonly string DefaultIniFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.ini");
|
||||||
|
|
||||||
public static readonly Configuration Default = new();
|
public static readonly Configuration Default = new();
|
||||||
|
|
||||||
|
|
@ -34,6 +34,10 @@ public class Configuration
|
||||||
//Launcher update endpoints
|
//Launcher update endpoints
|
||||||
GetLauncherVersion = $"{apiUrl}/launcherApi/launcherUpdater/getLauncherVersion";
|
GetLauncherVersion = $"{apiUrl}/launcherApi/launcherUpdater/getLauncherVersion";
|
||||||
UpdateLauncherVersion = $"{apiUrl}/launcherApi/launcherUpdater/updateLauncherVersion";
|
UpdateLauncherVersion = $"{apiUrl}/launcherApi/launcherUpdater/updateLauncherVersion";
|
||||||
|
|
||||||
|
//Launcher settings
|
||||||
|
string lang = iniFile.ReadValue("Launcher", "Lang");
|
||||||
|
Lang = lang;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GateXMLUrl { get; set; }
|
public string GateXMLUrl { get; set; }
|
||||||
|
|
@ -51,5 +55,6 @@ public class Configuration
|
||||||
public string GetLauncherVersion { get; set; }
|
public string GetLauncherVersion { get; set; }
|
||||||
public string UpdateLauncherVersion { get; set; }
|
public string UpdateLauncherVersion { get; set; }
|
||||||
public string DownloadUpdateFileUrl { get; set; }
|
public string DownloadUpdateFileUrl { get; set; }
|
||||||
|
public string Lang { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,14 @@ using System.Text;
|
||||||
|
|
||||||
namespace RHLauncher.RHLauncher.Helper
|
namespace RHLauncher.RHLauncher.Helper
|
||||||
{
|
{
|
||||||
public class IniFile
|
public partial class IniFile
|
||||||
{
|
{
|
||||||
private readonly string _iniFilePath;
|
private readonly string _iniFilePath;
|
||||||
|
|
||||||
[DllImport("kernel32")]
|
[LibraryImport("kernel32", EntryPoint = "WritePrivateProfileStringW", StringMarshalling = StringMarshalling.Utf16)]
|
||||||
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
|
private static partial long WritePrivateProfileString(string section, string key, string val, string filePath);
|
||||||
|
|
||||||
[DllImport("kernel32")]
|
[DllImport("kernel32", CharSet = CharSet.Unicode)]
|
||||||
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
|
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
|
||||||
|
|
||||||
public IniFile(string iniFileName)
|
public IniFile(string iniFileName)
|
||||||
|
|
@ -24,13 +24,15 @@ namespace RHLauncher.RHLauncher.Helper
|
||||||
WritePrivateProfileString("Info", "LoginURL", "http://localhost:3000", _iniFilePath);
|
WritePrivateProfileString("Info", "LoginURL", "http://localhost:3000", _iniFilePath);
|
||||||
//Default client service
|
//Default client service
|
||||||
WritePrivateProfileString("Info", "Service", "usa", _iniFilePath);
|
WritePrivateProfileString("Info", "Service", "usa", _iniFilePath);
|
||||||
|
//Default launcher language
|
||||||
|
WritePrivateProfileString("Launcher", "Lang", "en", _iniFilePath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string ReadValue(string section, string key)
|
public string ReadValue(string section, string key)
|
||||||
{
|
{
|
||||||
StringBuilder sb = new(255);
|
StringBuilder sb = new(255);
|
||||||
GetPrivateProfileString(section, key, "", sb, 255, _iniFilePath);
|
_ = GetPrivateProfileString(section, key, "", sb, 255, _iniFilePath);
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
11
RHLauncher.LauncherForm/LauncherForm.Designer.cs
generated
|
|
@ -67,6 +67,7 @@
|
||||||
InstallButton = new Button();
|
InstallButton = new Button();
|
||||||
InstallPanel = new Panel();
|
InstallPanel = new Panel();
|
||||||
UninstallButton = new Button();
|
UninstallButton = new Button();
|
||||||
|
notifyIcon = new NotifyIcon(components);
|
||||||
((System.ComponentModel.ISupportInitialize)CharPictureBox).BeginInit();
|
((System.ComponentModel.ISupportInitialize)CharPictureBox).BeginInit();
|
||||||
getUpdatePanel.SuspendLayout();
|
getUpdatePanel.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)webView21).BeginInit();
|
((System.ComponentModel.ISupportInitialize)webView21).BeginInit();
|
||||||
|
|
@ -667,6 +668,13 @@
|
||||||
UninstallButton.MouseLeave += MenuButton_MouseLeave;
|
UninstallButton.MouseLeave += MenuButton_MouseLeave;
|
||||||
UninstallButton.MouseHover += MenuButton_MouseHover;
|
UninstallButton.MouseHover += MenuButton_MouseHover;
|
||||||
//
|
//
|
||||||
|
// notifyIcon
|
||||||
|
//
|
||||||
|
notifyIcon.Icon = (Icon)resources.GetObject("notifyIcon.Icon");
|
||||||
|
notifyIcon.Text = "Rusty Hearts";
|
||||||
|
notifyIcon.Visible = true;
|
||||||
|
notifyIcon.MouseClick += notifyIcon_MouseClick;
|
||||||
|
//
|
||||||
// LauncherForm
|
// LauncherForm
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||||
|
|
@ -698,6 +706,7 @@
|
||||||
FormClosing += LauncherForm_FormClosing;
|
FormClosing += LauncherForm_FormClosing;
|
||||||
Load += LauncherForm_Load;
|
Load += LauncherForm_Load;
|
||||||
MouseDown += OnMouseDown;
|
MouseDown += OnMouseDown;
|
||||||
|
Resize += LauncherForm_Resize;
|
||||||
((System.ComponentModel.ISupportInitialize)CharPictureBox).EndInit();
|
((System.ComponentModel.ISupportInitialize)CharPictureBox).EndInit();
|
||||||
getUpdatePanel.ResumeLayout(false);
|
getUpdatePanel.ResumeLayout(false);
|
||||||
getUpdatePanel.PerformLayout();
|
getUpdatePanel.PerformLayout();
|
||||||
|
|
@ -736,7 +745,6 @@
|
||||||
private Button LaunchOptionsButton;
|
private Button LaunchOptionsButton;
|
||||||
private ImageList imageListLaunchOpt;
|
private ImageList imageListLaunchOpt;
|
||||||
private Panel LaunchPanel;
|
private Panel LaunchPanel;
|
||||||
private Label CheckUpdateLabel;
|
|
||||||
private Button CheckUpdateButton;
|
private Button CheckUpdateButton;
|
||||||
private ImageList imageListMenuButton;
|
private ImageList imageListMenuButton;
|
||||||
private Button LogoutButton;
|
private Button LogoutButton;
|
||||||
|
|
@ -749,5 +757,6 @@
|
||||||
private Button OpenSettingsButton;
|
private Button OpenSettingsButton;
|
||||||
private ImageList imageListStopBtn;
|
private ImageList imageListStopBtn;
|
||||||
private Button StopButton;
|
private Button StopButton;
|
||||||
|
private NotifyIcon notifyIcon;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -22,9 +22,8 @@ namespace RHLauncher
|
||||||
public partial class LauncherForm : Form
|
public partial class LauncherForm : Form
|
||||||
{
|
{
|
||||||
private RegistryHandler registryHandler = new();
|
private RegistryHandler registryHandler = new();
|
||||||
private readonly CancellationTokenSource? cancellationTokenSource;
|
|
||||||
public string? installDirectory;
|
public string? installDirectory;
|
||||||
private static readonly string DefaultIniFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "config.ini");
|
private static readonly string DefaultIniFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.ini");
|
||||||
private readonly IniFile _iniFile = new(DefaultIniFilePath);
|
private readonly IniFile _iniFile = new(DefaultIniFilePath);
|
||||||
private readonly string _windyCode;
|
private readonly string _windyCode;
|
||||||
private readonly string _password;
|
private readonly string _password;
|
||||||
|
|
@ -44,7 +43,17 @@ namespace RHLauncher
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
|
notifyIcon.Text = LocalizedStrings.RustyHearts;
|
||||||
|
Text = LocalizedStrings.LauncherFormTitle;
|
||||||
LabelNews.Text = LocalizedStrings.LabelNews;
|
LabelNews.Text = LocalizedStrings.LabelNews;
|
||||||
|
InstallButton.Text = LocalizedStrings.InstallLocation;
|
||||||
|
UninstallButton.Text = LocalizedStrings.Uninstall;
|
||||||
|
OpenSettingsButton.Text = LocalizedStrings.GameSettings;
|
||||||
|
CheckUpdateButton.Text = LocalizedStrings.CheckUpdate;
|
||||||
|
OpenInstallDirButton.Text = LocalizedStrings.OpenInstallDir;
|
||||||
|
ManageButton.Text = LocalizedStrings.Manage;
|
||||||
|
ChangePwdButton.Text = LocalizedStrings.ChangePassword;
|
||||||
|
LogoutButton.Text = LocalizedStrings.Logout;
|
||||||
|
|
||||||
_windyCode = windyCode;
|
_windyCode = windyCode;
|
||||||
_password = password;
|
_password = password;
|
||||||
|
|
@ -70,7 +79,7 @@ namespace RHLauncher
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var updater = new ServiceFileHandler("config.ini", installDirectory);
|
ServiceFileHandler updater = new("Config.ini", installDirectory);
|
||||||
updater.UpdateService();
|
updater.UpdateService();
|
||||||
|
|
||||||
await CheckForUpdates();
|
await CheckForUpdates();
|
||||||
|
|
@ -138,7 +147,6 @@ namespace RHLauncher
|
||||||
LaunchButton.Enabled = true;
|
LaunchButton.Enabled = true;
|
||||||
LaunchButton.Click -= LaunchGameButton_Click;
|
LaunchButton.Click -= LaunchGameButton_Click;
|
||||||
LaunchButton.Click += InstallUpdateButton_Click;
|
LaunchButton.Click += InstallUpdateButton_Click;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case UpdateState.NoUpdateAvailable:
|
case UpdateState.NoUpdateAvailable:
|
||||||
LaunchButton.Text = LocalizedStrings.Launch;
|
LaunchButton.Text = LocalizedStrings.Launch;
|
||||||
|
|
@ -406,8 +414,16 @@ namespace RHLauncher
|
||||||
};
|
};
|
||||||
Process? process = Process.Start(startInfo);
|
Process? process = Process.Start(startInfo);
|
||||||
WindowState = FormWindowState.Minimized;
|
WindowState = FormWindowState.Minimized;
|
||||||
|
|
||||||
|
if (WindowState == FormWindowState.Minimized)
|
||||||
|
{
|
||||||
|
Hide();
|
||||||
|
notifyIcon.Visible = true;
|
||||||
|
}
|
||||||
await process.WaitForExitAsync();
|
await process.WaitForExitAsync();
|
||||||
WindowState = FormWindowState.Maximized;
|
Show();
|
||||||
|
WindowState = FormWindowState.Normal;
|
||||||
|
notifyIcon.Visible = false;
|
||||||
await CheckForUpdates();
|
await CheckForUpdates();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
@ -471,7 +487,7 @@ namespace RHLauncher
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LoginForm newLoginForm = new LoginForm();
|
LoginForm newLoginForm = new();
|
||||||
newLoginForm.Show();
|
newLoginForm.Show();
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
|
|
@ -576,7 +592,7 @@ namespace RHLauncher
|
||||||
changePwd.ShowDialog();
|
changePwd.ShowDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void ChangePwd_FormClosing(object sender, FormClosingEventArgs e)
|
private void ChangePwd_FormClosing(object sender, FormClosingEventArgs e)
|
||||||
{
|
{
|
||||||
if (sender is ChangePwd changePwd)
|
if (sender is ChangePwd changePwd)
|
||||||
{
|
{
|
||||||
|
|
@ -597,6 +613,25 @@ namespace RHLauncher
|
||||||
|
|
||||||
#region Button Events
|
#region Button Events
|
||||||
|
|
||||||
|
private void LauncherForm_Resize(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (WindowState == FormWindowState.Minimized)
|
||||||
|
{
|
||||||
|
notifyIcon.Visible = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void notifyIcon_MouseClick(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Button == MouseButtons.Left)
|
||||||
|
{
|
||||||
|
// Restore the form and hide the NotifyIcon when clicked
|
||||||
|
Show();
|
||||||
|
WindowState = FormWindowState.Normal;
|
||||||
|
notifyIcon.Visible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void MenuButton_MouseHover(object sender, EventArgs e)
|
private void MenuButton_MouseHover(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Button button = (Button)sender;
|
Button button = (Button)sender;
|
||||||
|
|
@ -698,6 +733,7 @@ namespace RHLauncher
|
||||||
StopButton.ImageIndex = 2;
|
StopButton.ImageIndex = 2;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
43
RHLauncher.LoginForm/LoginForm.Designer.cs
generated
|
|
@ -48,6 +48,10 @@
|
||||||
progressBarLogin = new ProgressBar();
|
progressBarLogin = new ProgressBar();
|
||||||
ForgotPwdLabel = new Label();
|
ForgotPwdLabel = new Label();
|
||||||
VersionLabel = new Label();
|
VersionLabel = new Label();
|
||||||
|
imageListLogin_ko = new ImageList(components);
|
||||||
|
imageList2 = new ImageList(components);
|
||||||
|
imageListRegister_ko = new ImageList(components);
|
||||||
|
notifyIcon = new NotifyIcon(components);
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
//
|
//
|
||||||
// UsernameLabel
|
// UsernameLabel
|
||||||
|
|
@ -279,6 +283,40 @@
|
||||||
VersionLabel.TabIndex = 15;
|
VersionLabel.TabIndex = 15;
|
||||||
VersionLabel.Text = "Version:";
|
VersionLabel.Text = "Version:";
|
||||||
//
|
//
|
||||||
|
// imageListLogin_ko
|
||||||
|
//
|
||||||
|
imageListLogin_ko.ColorDepth = ColorDepth.Depth32Bit;
|
||||||
|
imageListLogin_ko.ImageStream = (ImageListStreamer)resources.GetObject("imageListLogin_ko.ImageStream");
|
||||||
|
imageListLogin_ko.TransparentColor = Color.Transparent;
|
||||||
|
imageListLogin_ko.Images.SetKeyName(0, "button_login_normal_ko.png");
|
||||||
|
imageListLogin_ko.Images.SetKeyName(1, "button_login_active_ko.png");
|
||||||
|
imageListLogin_ko.Images.SetKeyName(2, "button_login_down_ko.png");
|
||||||
|
//
|
||||||
|
// imageList2
|
||||||
|
//
|
||||||
|
imageList2.ColorDepth = ColorDepth.Depth32Bit;
|
||||||
|
imageList2.ImageStream = (ImageListStreamer)resources.GetObject("imageList2.ImageStream");
|
||||||
|
imageList2.TransparentColor = Color.Transparent;
|
||||||
|
imageList2.Images.SetKeyName(0, "button_login_normal.png");
|
||||||
|
imageList2.Images.SetKeyName(1, "button_login_active.png");
|
||||||
|
imageList2.Images.SetKeyName(2, "button_login_down.png");
|
||||||
|
//
|
||||||
|
// imageListRegister_ko
|
||||||
|
//
|
||||||
|
imageListRegister_ko.ColorDepth = ColorDepth.Depth32Bit;
|
||||||
|
imageListRegister_ko.ImageStream = (ImageListStreamer)resources.GetObject("imageListRegister_ko.ImageStream");
|
||||||
|
imageListRegister_ko.TransparentColor = Color.Transparent;
|
||||||
|
imageListRegister_ko.Images.SetKeyName(0, "button_register_normal_ko.png");
|
||||||
|
imageListRegister_ko.Images.SetKeyName(1, "button_register_active_ko.png");
|
||||||
|
imageListRegister_ko.Images.SetKeyName(2, "button_register_down_ko.png");
|
||||||
|
//
|
||||||
|
// notifyIcon
|
||||||
|
//
|
||||||
|
notifyIcon.Icon = (Icon)resources.GetObject("notifyIcon.Icon");
|
||||||
|
notifyIcon.Text = "Rusty Hearts";
|
||||||
|
notifyIcon.Visible = true;
|
||||||
|
notifyIcon.MouseClick += notifyIcon_MouseClick;
|
||||||
|
//
|
||||||
// LoginForm
|
// LoginForm
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||||
|
|
@ -311,6 +349,7 @@
|
||||||
FormClosing += LoginForm_FormClosing;
|
FormClosing += LoginForm_FormClosing;
|
||||||
Load += LoginForm_Load;
|
Load += LoginForm_Load;
|
||||||
MouseDown += OnMouseDown;
|
MouseDown += OnMouseDown;
|
||||||
|
Resize += LoginForm_Resize;
|
||||||
ResumeLayout(false);
|
ResumeLayout(false);
|
||||||
PerformLayout();
|
PerformLayout();
|
||||||
}
|
}
|
||||||
|
|
@ -335,5 +374,9 @@
|
||||||
private ProgressBar progressBarLogin;
|
private ProgressBar progressBarLogin;
|
||||||
private Label ForgotPwdLabel;
|
private Label ForgotPwdLabel;
|
||||||
private Label VersionLabel;
|
private Label VersionLabel;
|
||||||
|
private ImageList imageListLogin_ko;
|
||||||
|
private ImageList imageList2;
|
||||||
|
private ImageList imageListRegister_ko;
|
||||||
|
private NotifyIcon notifyIcon;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -14,16 +14,48 @@ namespace RHLauncher
|
||||||
public string windyCode = string.Empty;
|
public string windyCode = string.Empty;
|
||||||
public string password = string.Empty;
|
public string password = string.Empty;
|
||||||
public string LoginUrl = Configuration.Default.LoginUrl;
|
public string LoginUrl = Configuration.Default.LoginUrl;
|
||||||
|
public string Lang = Configuration.Default.Lang;
|
||||||
|
private List<Button>? buttons;
|
||||||
|
private List<ImageList>? imageLists;
|
||||||
|
private Dictionary<string, List<ImageList>>? languageImageLists;
|
||||||
|
|
||||||
public LoginForm()
|
public LoginForm()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
|
LoadLocalizedStrings();
|
||||||
|
|
||||||
|
notifyIcon.Text = LocalizedStrings.RustyHearts;
|
||||||
|
Text = LocalizedStrings.LauncherFormTitle;
|
||||||
UsernameLabel.Text = LocalizedStrings.UsernameLabel;
|
UsernameLabel.Text = LocalizedStrings.UsernameLabel;
|
||||||
PasswordLabel.Text = LocalizedStrings.PasswordLabel;
|
PasswordLabel.Text = LocalizedStrings.PasswordLabel;
|
||||||
CheckBoxSaveUser.Text = LocalizedStrings.CheckBoxSaveUser;
|
CheckBoxSaveUser.Text = LocalizedStrings.CheckBoxSaveUser;
|
||||||
CheckBoxAutoLogin.Text = LocalizedStrings.CheckBoxAutoLogin;
|
CheckBoxAutoLogin.Text = LocalizedStrings.CheckBoxAutoLogin;
|
||||||
ForgotPwdLabel.Text = LocalizedStrings.ForgotPwdLabel;
|
ForgotPwdLabel.Text = LocalizedStrings.ForgotPwdLabel;
|
||||||
|
// Adjust ForgotPwdLabel location for Korean
|
||||||
|
if (Lang == "ko")
|
||||||
|
{
|
||||||
|
ForgotPwdLabel.Location = new Point(630, 410);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadLocalizedStrings()
|
||||||
|
{
|
||||||
|
// Initialize buttons and image lists
|
||||||
|
buttons = new List<Button> { LoginButton, RegisterButton };
|
||||||
|
imageLists = new List<ImageList> { imageListLogin, imageListRegister };
|
||||||
|
|
||||||
|
// Initialize language-specific image lists
|
||||||
|
languageImageLists = new Dictionary<string, List<ImageList>>
|
||||||
|
{
|
||||||
|
{ "en", new List<ImageList> { imageListLogin, imageListRegister } }, // English image lists
|
||||||
|
{ "ko", new List<ImageList> { imageListLogin_ko, imageListRegister_ko } }, // Korean image lists
|
||||||
|
// Add other languages and their respective image lists here
|
||||||
|
};
|
||||||
|
|
||||||
|
// Load the appropriate resource file based on the selected language
|
||||||
|
LocalizationHelper.LoadLocalizedStrings(Lang, buttons, imageLists, languageImageLists);
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Methods
|
#region Methods
|
||||||
|
|
@ -84,7 +116,7 @@ namespace RHLauncher
|
||||||
MsgBoxForm.Show(LocalizedStrings.LoginInsertUsername, LocalizedStrings.LoginWindowTitle);
|
MsgBoxForm.Show(LocalizedStrings.LoginInsertUsername, LocalizedStrings.LoginWindowTitle);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!Regex.IsMatch(UsernameTextBox.Text, @"^[A-Za-z0-9]{6,50}$|^[\w\d._%+-]+@[\w\d.-]+\.[\w]{2,}$"))
|
if (!UsernameRegex().IsMatch(UsernameTextBox.Text))
|
||||||
{
|
{
|
||||||
MsgBoxForm.Show(LocalizedStrings.LoginInvalidUsernameFormat, LocalizedStrings.LoginWindowTitle);
|
MsgBoxForm.Show(LocalizedStrings.LoginInvalidUsernameFormat, LocalizedStrings.LoginWindowTitle);
|
||||||
return;
|
return;
|
||||||
|
|
@ -117,6 +149,9 @@ namespace RHLauncher
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[GeneratedRegex("^[a-z0-9]{6,50}$|^[\\w\\d._%+-]+@[\\w\\d.-]+\\.[\\w]{2,}$")]
|
||||||
|
private static partial Regex UsernameRegex();
|
||||||
|
|
||||||
private async void AutoLogin()
|
private async void AutoLogin()
|
||||||
{
|
{
|
||||||
if (CheckBoxAutoLogin.Checked)
|
if (CheckBoxAutoLogin.Checked)
|
||||||
|
|
@ -159,6 +194,7 @@ namespace RHLauncher
|
||||||
windyCode = loginResponse["WindyCode"];
|
windyCode = loginResponse["WindyCode"];
|
||||||
password = loginResponse["Token"];
|
password = loginResponse["Token"];
|
||||||
Hide();
|
Hide();
|
||||||
|
notifyIcon.Visible = false;
|
||||||
LauncherForm launcherForm = new(windyCode, password);
|
LauncherForm launcherForm = new(windyCode, password);
|
||||||
launcherForm.ShowDialog();
|
launcherForm.ShowDialog();
|
||||||
break;
|
break;
|
||||||
|
|
@ -227,14 +263,6 @@ namespace RHLauncher
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LoginForm_FormClosing(object sender, FormClosingEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.CloseReason == CloseReason.UserClosing)
|
|
||||||
{
|
|
||||||
Application.Exit();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Button Click Events
|
#region Button Click Events
|
||||||
|
|
@ -279,6 +307,36 @@ namespace RHLauncher
|
||||||
|
|
||||||
#region Button Events
|
#region Button Events
|
||||||
|
|
||||||
|
private void LoginForm_FormClosing(object sender, FormClosingEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.CloseReason == CloseReason.UserClosing)
|
||||||
|
{
|
||||||
|
Application.Exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoginForm_Resize(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (WindowState == FormWindowState.Minimized)
|
||||||
|
{
|
||||||
|
notifyIcon.Visible = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
notifyIcon.Visible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void notifyIcon_MouseClick(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Button == MouseButtons.Left)
|
||||||
|
{
|
||||||
|
Show();
|
||||||
|
WindowState = FormWindowState.Normal;
|
||||||
|
notifyIcon.Visible = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void MinimizeButton_MouseHover(object sender, EventArgs e)
|
private void MinimizeButton_MouseHover(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
MinimizeButton.ImageIndex = 1;
|
MinimizeButton.ImageIndex = 1;
|
||||||
|
|
@ -348,5 +406,6 @@ namespace RHLauncher
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
2
RHLauncher.MsgBoxForm/MsgBoxForm.Designer.cs
generated
|
|
@ -165,6 +165,7 @@
|
||||||
YesButton.TabIndex = 13;
|
YesButton.TabIndex = 13;
|
||||||
YesButton.Text = "Yes";
|
YesButton.Text = "Yes";
|
||||||
YesButton.UseVisualStyleBackColor = false;
|
YesButton.UseVisualStyleBackColor = false;
|
||||||
|
YesButton.Click += YesButton_Click;
|
||||||
YesButton.MouseDown += YesButton_OnMouseDown;
|
YesButton.MouseDown += YesButton_OnMouseDown;
|
||||||
YesButton.MouseLeave += YesButton_MouseLeave;
|
YesButton.MouseLeave += YesButton_MouseLeave;
|
||||||
YesButton.MouseHover += YesButton_MouseHover;
|
YesButton.MouseHover += YesButton_MouseHover;
|
||||||
|
|
@ -196,6 +197,7 @@
|
||||||
NoButton.TabIndex = 14;
|
NoButton.TabIndex = 14;
|
||||||
NoButton.Text = "No";
|
NoButton.Text = "No";
|
||||||
NoButton.UseVisualStyleBackColor = false;
|
NoButton.UseVisualStyleBackColor = false;
|
||||||
|
NoButton.Click += NoButton_Click;
|
||||||
NoButton.MouseDown += NoButton_OnMouseDown;
|
NoButton.MouseDown += NoButton_OnMouseDown;
|
||||||
NoButton.MouseLeave += NoButton_MouseLeave;
|
NoButton.MouseLeave += NoButton_MouseLeave;
|
||||||
NoButton.MouseHover += NoButton_MouseHover;
|
NoButton.MouseHover += NoButton_MouseHover;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
using RHLauncher.RHLauncher.Helper;
|
using RHLauncher.RHLauncher;
|
||||||
|
|
||||||
namespace RHLauncher
|
namespace RHLauncher
|
||||||
{
|
{
|
||||||
|
|
@ -10,9 +10,9 @@ namespace RHLauncher
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
|
Text = LocalizedStrings.MsgBoxFormTitle;
|
||||||
YesButton.Click += YesButton_Click;
|
YesButton.Text = LocalizedStrings.Yes;
|
||||||
NoButton.Click += NoButton_Click;
|
NoButton.Text = LocalizedStrings.No;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void YesButton_Click(object sender, EventArgs e)
|
private void YesButton_Click(object sender, EventArgs e)
|
||||||
|
|
@ -139,7 +139,7 @@ namespace RHLauncher
|
||||||
|
|
||||||
private void MsgBoxForm_FormClosing(object sender, FormClosingEventArgs e)
|
private void MsgBoxForm_FormClosing(object sender, FormClosingEventArgs e)
|
||||||
{
|
{
|
||||||
this.Dispose();
|
Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using System.IO.Compression;
|
using System.IO.Compression;
|
||||||
|
using RHLauncher.DynamicLib;
|
||||||
|
|
||||||
namespace RHLauncher
|
namespace RHLauncher
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using RHLauncher.Helper;
|
using RHLauncher.DynamicLib;
|
||||||
|
using RHLauncher.Helper;
|
||||||
using RHLauncher.RHLauncher.Helper;
|
using RHLauncher.RHLauncher.Helper;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
using RHLauncher.DynamicLib;
|
||||||
using RHLauncher.Helper;
|
using RHLauncher.Helper;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
|
|
@ -114,7 +115,7 @@ namespace RHLauncher.PCK
|
||||||
string pathF00X = Path.Combine(installDirectory, "f00x.dat");
|
string pathF00X = Path.Combine(installDirectory, "f00x.dat");
|
||||||
if (File.Exists(pathF00X))
|
if (File.Exists(pathF00X))
|
||||||
{
|
{
|
||||||
byte[] buffer = await File.ReadAllBytesAsync(pathF00X);
|
byte[] buffer = await File.ReadAllBytesAsync(pathF00X, cancellationToken);
|
||||||
int numDecompressed = buffer.Length << 4;
|
int numDecompressed = buffer.Length << 4;
|
||||||
byte[] decompressed = new byte[numDecompressed];
|
byte[] decompressed = new byte[numDecompressed];
|
||||||
int result = ZLibDll.Decompress(buffer, buffer.Length, decompressed, ref numDecompressed);
|
int result = ZLibDll.Decompress(buffer, buffer.Length, decompressed, ref numDecompressed);
|
||||||
|
|
|
||||||
37
RHLauncher.RegForm/RegForm.Designer.cs
generated
|
|
@ -73,6 +73,9 @@
|
||||||
TitleLabelS2 = new Label();
|
TitleLabelS2 = new Label();
|
||||||
imageListTips = new ImageList(components);
|
imageListTips = new ImageList(components);
|
||||||
imageListOkBtn = new ImageList(components);
|
imageListOkBtn = new ImageList(components);
|
||||||
|
imageListSendEmailBtn_ko = new ImageList(components);
|
||||||
|
imageListOKBtn_ko = new ImageList(components);
|
||||||
|
imageListContinueBtn_ko = new ImageList(components);
|
||||||
Stage1Panel.SuspendLayout();
|
Stage1Panel.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)EmailPictureBox).BeginInit();
|
((System.ComponentModel.ISupportInitialize)EmailPictureBox).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)CodePictureBox).BeginInit();
|
((System.ComponentModel.ISupportInitialize)CodePictureBox).BeginInit();
|
||||||
|
|
@ -683,6 +686,33 @@
|
||||||
imageListOkBtn.Images.SetKeyName(1, "messagewnd.button.ok.active.png");
|
imageListOkBtn.Images.SetKeyName(1, "messagewnd.button.ok.active.png");
|
||||||
imageListOkBtn.Images.SetKeyName(2, "messagewnd.button.ok.down.png");
|
imageListOkBtn.Images.SetKeyName(2, "messagewnd.button.ok.down.png");
|
||||||
//
|
//
|
||||||
|
// imageListSendEmailBtn_ko
|
||||||
|
//
|
||||||
|
imageListSendEmailBtn_ko.ColorDepth = ColorDepth.Depth32Bit;
|
||||||
|
imageListSendEmailBtn_ko.ImageStream = (ImageListStreamer)resources.GetObject("imageListSendEmailBtn_ko.ImageStream");
|
||||||
|
imageListSendEmailBtn_ko.TransparentColor = Color.Transparent;
|
||||||
|
imageListSendEmailBtn_ko.Images.SetKeyName(0, "ChangePwwnd_button_email_normal_ko.png");
|
||||||
|
imageListSendEmailBtn_ko.Images.SetKeyName(1, "ChangePwwnd_button_email_active_ko.png");
|
||||||
|
imageListSendEmailBtn_ko.Images.SetKeyName(2, "ChangePwwnd_button_email_down_ko.png");
|
||||||
|
//
|
||||||
|
// imageListOKBtn_ko
|
||||||
|
//
|
||||||
|
imageListOKBtn_ko.ColorDepth = ColorDepth.Depth32Bit;
|
||||||
|
imageListOKBtn_ko.ImageStream = (ImageListStreamer)resources.GetObject("imageListOKBtn_ko.ImageStream");
|
||||||
|
imageListOKBtn_ko.TransparentColor = Color.Transparent;
|
||||||
|
imageListOKBtn_ko.Images.SetKeyName(0, "messagewnd.button.ok.normal.png");
|
||||||
|
imageListOKBtn_ko.Images.SetKeyName(1, "messagewnd.button.ok.active.png");
|
||||||
|
imageListOKBtn_ko.Images.SetKeyName(2, "messagewnd.button.ok.down.png");
|
||||||
|
//
|
||||||
|
// imageListContinueBtn_ko
|
||||||
|
//
|
||||||
|
imageListContinueBtn_ko.ColorDepth = ColorDepth.Depth32Bit;
|
||||||
|
imageListContinueBtn_ko.ImageStream = (ImageListStreamer)resources.GetObject("imageListContinueBtn_ko.ImageStream");
|
||||||
|
imageListContinueBtn_ko.TransparentColor = Color.Transparent;
|
||||||
|
imageListContinueBtn_ko.Images.SetKeyName(0, "Registerwnd_button_continue_normal_ko.png");
|
||||||
|
imageListContinueBtn_ko.Images.SetKeyName(1, "Registerwnd_button_continue_active_ko.png");
|
||||||
|
imageListContinueBtn_ko.Images.SetKeyName(2, "Registerwnd_button_continue_down_ko.png");
|
||||||
|
//
|
||||||
// RegForm
|
// RegForm
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||||
|
|
@ -693,14 +723,14 @@
|
||||||
ClientSize = new Size(800, 571);
|
ClientSize = new Size(800, 571);
|
||||||
Controls.Add(CloseButton);
|
Controls.Add(CloseButton);
|
||||||
Controls.Add(MinimizeButton);
|
Controls.Add(MinimizeButton);
|
||||||
Controls.Add(Stage2Panel);
|
|
||||||
Controls.Add(Stage1Panel);
|
Controls.Add(Stage1Panel);
|
||||||
|
Controls.Add(Stage2Panel);
|
||||||
DoubleBuffered = true;
|
DoubleBuffered = true;
|
||||||
FormBorderStyle = FormBorderStyle.None;
|
FormBorderStyle = FormBorderStyle.None;
|
||||||
Icon = (Icon)resources.GetObject("$this.Icon");
|
Icon = (Icon)resources.GetObject("$this.Icon");
|
||||||
Name = "RegForm";
|
Name = "RegForm";
|
||||||
StartPosition = FormStartPosition.CenterScreen;
|
StartPosition = FormStartPosition.CenterScreen;
|
||||||
Text = "Change Password";
|
Text = "Register Account";
|
||||||
FormClosing += RegForm_FormClosing;
|
FormClosing += RegForm_FormClosing;
|
||||||
Load += RegForm_Load;
|
Load += RegForm_Load;
|
||||||
Stage1Panel.ResumeLayout(false);
|
Stage1Panel.ResumeLayout(false);
|
||||||
|
|
@ -760,5 +790,8 @@
|
||||||
private CheckBox AgreeCheckBox;
|
private CheckBox AgreeCheckBox;
|
||||||
private Label AgreementLabel;
|
private Label AgreementLabel;
|
||||||
private Label PwdStrengthLabel;
|
private Label PwdStrengthLabel;
|
||||||
|
private ImageList imageListSendEmailBtn_ko;
|
||||||
|
private ImageList imageListOKBtn_ko;
|
||||||
|
private ImageList imageListContinueBtn_ko;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -11,6 +11,10 @@ namespace RHLauncher
|
||||||
public string AgreementUrl = Configuration.Default.AgreementUrl;
|
public string AgreementUrl = Configuration.Default.AgreementUrl;
|
||||||
public string VerifyCodeUrl = Configuration.Default.VerifyCodeUrl;
|
public string VerifyCodeUrl = Configuration.Default.VerifyCodeUrl;
|
||||||
public string RegisterUrl = Configuration.Default.RegisterUrl;
|
public string RegisterUrl = Configuration.Default.RegisterUrl;
|
||||||
|
public string Lang = Configuration.Default.Lang;
|
||||||
|
private List<Button>? buttons;
|
||||||
|
private List<ImageList>? imageLists;
|
||||||
|
private Dictionary<string, List<ImageList>>? languageImageLists;
|
||||||
|
|
||||||
private readonly System.Windows.Forms.Timer resendTimer = new();
|
private readonly System.Windows.Forms.Timer resendTimer = new();
|
||||||
private int secondsLeft = 60;
|
private int secondsLeft = 60;
|
||||||
|
|
@ -22,6 +26,25 @@ namespace RHLauncher
|
||||||
Stage1Panel.Visible = true;
|
Stage1Panel.Visible = true;
|
||||||
Stage2Panel.Visible = false;
|
Stage2Panel.Visible = false;
|
||||||
|
|
||||||
|
LoadLocalizedStrings();
|
||||||
|
|
||||||
|
Text = LocalizedStrings.ChangePwdFormTitle;
|
||||||
|
EmailLabel.Text = LocalizedStrings.AccountEmail;
|
||||||
|
TitleLabelS1.Text = LocalizedStrings.RegisterAccount;
|
||||||
|
SubTitleLabelS1.Text = LocalizedStrings.RustyHearts;
|
||||||
|
CodeLabel.Text = LocalizedStrings.VerificationCode;
|
||||||
|
TitleLabelS2.Text = LocalizedStrings.AccountDetails;
|
||||||
|
SubTitleLabelS2.Text = LocalizedStrings.Account;
|
||||||
|
NameLabel.Text = LocalizedStrings.AccountName;
|
||||||
|
PasswordLabel.Text = LocalizedStrings.EnterPassword;
|
||||||
|
RepeatPasswordLabel.Text = LocalizedStrings.RepeatPassword;
|
||||||
|
AgreeCheckBox.Text = LocalizedStrings.AgreeTerms;
|
||||||
|
AgreementLabel.Text = LocalizedStrings.UserAgreement;
|
||||||
|
NameDescLabel.Text = LocalizedStrings.UsernameDesc;
|
||||||
|
PwdDescLabel.Text = LocalizedStrings.NewPasswordDesc;
|
||||||
|
PwdConfirmDescLabel.Text = LocalizedStrings.RepeatPasswordDesc;
|
||||||
|
ReturnLabelS2.Text = LocalizedStrings.Return;
|
||||||
|
|
||||||
resendTimer = new System.Windows.Forms.Timer
|
resendTimer = new System.Windows.Forms.Timer
|
||||||
{
|
{
|
||||||
Interval = 1000
|
Interval = 1000
|
||||||
|
|
@ -29,6 +52,24 @@ namespace RHLauncher
|
||||||
resendTimer.Tick += ResendTimer_Tick;
|
resendTimer.Tick += ResendTimer_Tick;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void LoadLocalizedStrings()
|
||||||
|
{
|
||||||
|
// Initialize buttons and image lists
|
||||||
|
buttons = new List<Button> { ContinueButtonS1, SendEmailButton, ContinueButtonS2 };
|
||||||
|
imageLists = new List<ImageList> { imageListContinueBtn, imageListSendEmailBtn, imageListContinueBtn };
|
||||||
|
|
||||||
|
// Initialize language-specific image lists
|
||||||
|
languageImageLists = new Dictionary<string, List<ImageList>>
|
||||||
|
{
|
||||||
|
{ "en", new List<ImageList> { imageListContinueBtn, imageListSendEmailBtn, imageListContinueBtn } }, // English image lists
|
||||||
|
{ "ko", new List<ImageList> { imageListContinueBtn_ko, imageListSendEmailBtn_ko, imageListContinueBtn_ko } }, // Korean image lists
|
||||||
|
// Add other languages and their respective image lists here
|
||||||
|
};
|
||||||
|
|
||||||
|
// Load the appropriate resource file based on the selected language
|
||||||
|
LocalizationHelper.LoadLocalizedStrings(Lang, buttons, imageLists, languageImageLists);
|
||||||
|
}
|
||||||
|
|
||||||
#region Methods
|
#region Methods
|
||||||
|
|
||||||
private async Task<string> SendEmailRequestAsync()
|
private async Task<string> SendEmailRequestAsync()
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,8 @@
|
||||||
<AssemblyName>Launcher</AssemblyName>
|
<AssemblyName>Launcher</AssemblyName>
|
||||||
<Description>Rusty Hearts Launcher</Description>
|
<Description>Rusty Hearts Launcher</Description>
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
<PlatformTarget>x86</PlatformTarget>
|
||||||
<AssemblyVersion>1.0.3</AssemblyVersion>
|
<AssemblyVersion>1.1.0</AssemblyVersion>
|
||||||
<FileVersion>1.0.3</FileVersion>
|
<FileVersion>1.1.0</FileVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||||
|
|
@ -66,6 +66,9 @@
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Update="RHLauncher\LocalizedStrings.ko.resx">
|
||||||
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Update="RHLauncher\LocalizedStrings.resx">
|
<EmbeddedResource Update="RHLauncher\LocalizedStrings.resx">
|
||||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||||
<LastGenOutput>LocalizedStrings.Designer.cs</LastGenOutput>
|
<LastGenOutput>LocalizedStrings.Designer.cs</LastGenOutput>
|
||||||
|
|
|
||||||
44
RHLauncher/LocalizationHelper.cs
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Resources;
|
||||||
|
|
||||||
|
namespace RHLauncher.RHLauncher
|
||||||
|
{
|
||||||
|
public class LocalizationHelper
|
||||||
|
{
|
||||||
|
public static void LoadLocalizedStrings(
|
||||||
|
string lang,
|
||||||
|
List<Button> buttons,
|
||||||
|
List<ImageList> imageLists,
|
||||||
|
Dictionary<string, List<ImageList>> languageImageLists)
|
||||||
|
{
|
||||||
|
CultureInfo cultureInfo;
|
||||||
|
if (languageImageLists.ContainsKey(lang))
|
||||||
|
{
|
||||||
|
// If the language is supported, get the corresponding image lists
|
||||||
|
List<ImageList> langSpecificImageLists = languageImageLists[lang];
|
||||||
|
for (int i = 0; i < buttons.Count && i < langSpecificImageLists.Count; i++)
|
||||||
|
{
|
||||||
|
buttons[i].ImageList = langSpecificImageLists[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
cultureInfo = new CultureInfo(lang);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Default to English if the language is not supported
|
||||||
|
cultureInfo = new CultureInfo("en-US"); // English culture
|
||||||
|
for (int i = 0; i < buttons.Count && i < imageLists.Count; i++)
|
||||||
|
{
|
||||||
|
buttons[i].ImageList = imageLists[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Thread.CurrentThread.CurrentUICulture = cultureInfo;
|
||||||
|
|
||||||
|
// Load the appropriate resource file based on the selected language
|
||||||
|
_ = new
|
||||||
|
ResourceManager(typeof(LocalizedStrings));
|
||||||
|
LocalizedStrings.Culture = cultureInfo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
182
RHLauncher/LocalizedStrings.Designer.cs
generated
|
|
@ -69,6 +69,33 @@ namespace RHLauncher.RHLauncher {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Account Details.
|
||||||
|
/// </summary>
|
||||||
|
public static string AccountDetails {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("AccountDetails", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Account Email.
|
||||||
|
/// </summary>
|
||||||
|
public static string AccountEmail {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("AccountEmail", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Account Name.
|
||||||
|
/// </summary>
|
||||||
|
public static string AccountName {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("AccountName", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to A account with this email was not found.
|
/// Looks up a localized string similar to A account with this email was not found.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -78,6 +105,15 @@ namespace RHLauncher.RHLauncher {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Agree and accept the.
|
||||||
|
/// </summary>
|
||||||
|
public static string AgreeTerms {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("AgreeTerms", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to rustyhearts.exe is already running..
|
/// Looks up a localized string similar to rustyhearts.exe is already running..
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -105,6 +141,15 @@ namespace RHLauncher.RHLauncher {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Change Password.
|
||||||
|
/// </summary>
|
||||||
|
public static string ChangePwdFormTitle {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("ChangePwdFormTitle", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Auto Login.
|
/// Looks up a localized string similar to Auto Login.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -132,6 +177,15 @@ namespace RHLauncher.RHLauncher {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Check Update.
|
||||||
|
/// </summary>
|
||||||
|
public static string CheckUpdate {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("CheckUpdate", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Insert the verification code.
|
/// Looks up a localized string similar to Insert the verification code.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -222,6 +276,15 @@ namespace RHLauncher.RHLauncher {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Enter the password.
|
||||||
|
/// </summary>
|
||||||
|
public static string EnterPassword {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("EnterPassword", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Error.
|
/// Looks up a localized string similar to Error.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -258,6 +321,15 @@ namespace RHLauncher.RHLauncher {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Game Settings.
|
||||||
|
/// </summary>
|
||||||
|
public static string GameSettings {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("GameSettings", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Info.
|
/// Looks up a localized string similar to Info.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -276,6 +348,15 @@ namespace RHLauncher.RHLauncher {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Install Location.
|
||||||
|
/// </summary>
|
||||||
|
public static string InstallLocation {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("InstallLocation", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Invalid Verification Code.
|
/// Looks up a localized string similar to Invalid Verification Code.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -303,6 +384,15 @@ namespace RHLauncher.RHLauncher {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Rusty Hearts Launcher.
|
||||||
|
/// </summary>
|
||||||
|
public static string LauncherFormTitle {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("LauncherFormTitle", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Error checking for launcher update: .
|
/// Looks up a localized string similar to Error checking for launcher update: .
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -420,6 +510,15 @@ namespace RHLauncher.RHLauncher {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Logout.
|
||||||
|
/// </summary>
|
||||||
|
public static string Logout {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Logout", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Are you sure you want to logout?.
|
/// Looks up a localized string similar to Are you sure you want to logout?.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -429,6 +528,24 @@ namespace RHLauncher.RHLauncher {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to < Manage.
|
||||||
|
/// </summary>
|
||||||
|
public static string Manage {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Manage", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Message.
|
||||||
|
/// </summary>
|
||||||
|
public static string MsgBoxFormTitle {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("MsgBoxFormTitle", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Enter the new password.
|
/// Looks up a localized string similar to Enter the new password.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -447,6 +564,24 @@ namespace RHLauncher.RHLauncher {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to No.
|
||||||
|
/// </summary>
|
||||||
|
public static string No {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("No", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Open Install Dir.
|
||||||
|
/// </summary>
|
||||||
|
public static string OpenInstallDir {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("OpenInstallDir", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Packing.
|
/// Looks up a localized string similar to Packing.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -547,7 +682,25 @@ namespace RHLauncher.RHLauncher {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Re-enter the new password.
|
/// Looks up a localized string similar to Register Account.
|
||||||
|
/// </summary>
|
||||||
|
public static string RegFormTitle {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("RegFormTitle", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Register Account.
|
||||||
|
/// </summary>
|
||||||
|
public static string RegisterAccount {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("RegisterAccount", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Repeat the new password.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string RepeatPassword {
|
public static string RepeatPassword {
|
||||||
get {
|
get {
|
||||||
|
|
@ -708,6 +861,24 @@ namespace RHLauncher.RHLauncher {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to "User Agreement".
|
||||||
|
/// </summary>
|
||||||
|
public static string UserAgreement {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("UserAgreement", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to 6-16 alphanumeric characters.
|
||||||
|
/// </summary>
|
||||||
|
public static string UsernameDesc {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("UsernameDesc", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Name cannot be empty.
|
/// Looks up a localized string similar to Name cannot be empty.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -788,5 +959,14 @@ namespace RHLauncher.RHLauncher {
|
||||||
return ResourceManager.GetString("Welcome", resourceCulture);
|
return ResourceManager.GetString("Welcome", resourceCulture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Yes.
|
||||||
|
/// </summary>
|
||||||
|
public static string Yes {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Yes", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
423
RHLauncher/LocalizedStrings.ko.resx
Normal file
|
|
@ -0,0 +1,423 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="Account" xml:space="preserve">
|
||||||
|
<value>계정</value>
|
||||||
|
</data>
|
||||||
|
<data name="AccountDetails" xml:space="preserve">
|
||||||
|
<value>계정 정보</value>
|
||||||
|
</data>
|
||||||
|
<data name="AccountEmail" xml:space="preserve">
|
||||||
|
<value>계정 이메일</value>
|
||||||
|
</data>
|
||||||
|
<data name="AccountName" xml:space="preserve">
|
||||||
|
<value>계정 이름</value>
|
||||||
|
</data>
|
||||||
|
<data name="AccountNotFound" xml:space="preserve">
|
||||||
|
<value>이 이메일을 사용한 계정을 찾을 수 없습니다</value>
|
||||||
|
</data>
|
||||||
|
<data name="AgreeTerms" xml:space="preserve">
|
||||||
|
<value>나는 에 동의하고 수락합니다</value>
|
||||||
|
</data>
|
||||||
|
<data name="AlreadyExecute" xml:space="preserve">
|
||||||
|
<value>Rustyhearts.exe가 이미 실행 중입니다.</value>
|
||||||
|
</data>
|
||||||
|
<data name="Cancelling" xml:space="preserve">
|
||||||
|
<value>취소 중</value>
|
||||||
|
</data>
|
||||||
|
<data name="ChangePassword" xml:space="preserve">
|
||||||
|
<value>비밀번호 변경</value>
|
||||||
|
</data>
|
||||||
|
<data name="ChangePwdFormTitle" xml:space="preserve">
|
||||||
|
<value>비밀번호 변경</value>
|
||||||
|
</data>
|
||||||
|
<data name="CheckBoxAutoLogin" xml:space="preserve">
|
||||||
|
<value>자동 로그인</value>
|
||||||
|
</data>
|
||||||
|
<data name="CheckBoxSaveUser" xml:space="preserve">
|
||||||
|
<value>사용자 이름 기억</value>
|
||||||
|
</data>
|
||||||
|
<data name="Checking" xml:space="preserve">
|
||||||
|
<value>확인 중</value>
|
||||||
|
</data>
|
||||||
|
<data name="CheckUpdate" xml:space="preserve">
|
||||||
|
<value>업데이트 확인</value>
|
||||||
|
</data>
|
||||||
|
<data name="CodeDescLabel" xml:space="preserve">
|
||||||
|
<value>인증코드를 입력하세요</value>
|
||||||
|
</data>
|
||||||
|
<data name="CodeDescLabelInvalid" xml:space="preserve">
|
||||||
|
<value>잘못된 인증 코드 형식</value>
|
||||||
|
</data>
|
||||||
|
<data name="Confirmation" xml:space="preserve">
|
||||||
|
<value>확증</value>
|
||||||
|
</data>
|
||||||
|
<data name="ConfirmUninstall" xml:space="preserve">
|
||||||
|
<value>설치 제거 확인</value>
|
||||||
|
</data>
|
||||||
|
<data name="ConfirmUninstallText" xml:space="preserve">
|
||||||
|
<value>설치 디렉토리를 설치 제거하고 삭제하시겠습니까?</value>
|
||||||
|
</data>
|
||||||
|
<data name="DescLabelS2Email" xml:space="preserve">
|
||||||
|
<value>확인 이메일이 다음으로 전송되었습니다</value>
|
||||||
|
</data>
|
||||||
|
<data name="Downloading" xml:space="preserve">
|
||||||
|
<value>다운로드 중</value>
|
||||||
|
</data>
|
||||||
|
<data name="EmailDescLabelEmpty" xml:space="preserve">
|
||||||
|
<value>이메일은 비워둘 수 없습니다</value>
|
||||||
|
</data>
|
||||||
|
<data name="EmailDescLabelInvalid" xml:space="preserve">
|
||||||
|
<value>잘못된 이메일 주소</value>
|
||||||
|
</data>
|
||||||
|
<data name="EnterEmail" xml:space="preserve">
|
||||||
|
<value>당신의 이메일 주소를 입력 해주세요</value>
|
||||||
|
</data>
|
||||||
|
<data name="EnterPassword" xml:space="preserve">
|
||||||
|
<value>비밀번호를 입력하세요</value>
|
||||||
|
</data>
|
||||||
|
<data name="Error" xml:space="preserve">
|
||||||
|
<value>오류</value>
|
||||||
|
</data>
|
||||||
|
<data name="ExpiredVerificationCode" xml:space="preserve">
|
||||||
|
<value>이 인증 코드는 만료되었습니다. 새 인증 코드를 요청하세요.</value>
|
||||||
|
</data>
|
||||||
|
<data name="Failed" xml:space="preserve">
|
||||||
|
<value>실패한</value>
|
||||||
|
</data>
|
||||||
|
<data name="ForgotPwdLabel" xml:space="preserve">
|
||||||
|
<value>비밀번호를 잊으 셨나요?</value>
|
||||||
|
</data>
|
||||||
|
<data name="GameSettings" xml:space="preserve">
|
||||||
|
<value>게임 설정</value>
|
||||||
|
</data>
|
||||||
|
<data name="Info" xml:space="preserve">
|
||||||
|
<value>정보</value>
|
||||||
|
</data>
|
||||||
|
<data name="Install" xml:space="preserve">
|
||||||
|
<value>설치하다</value>
|
||||||
|
</data>
|
||||||
|
<data name="InstallLocation" xml:space="preserve">
|
||||||
|
<value>설치 위치</value>
|
||||||
|
</data>
|
||||||
|
<data name="InvalidVerificationCode" xml:space="preserve">
|
||||||
|
<value>잘못된 인증 코드</value>
|
||||||
|
</data>
|
||||||
|
<data name="LabelNews" xml:space="preserve">
|
||||||
|
<value>소식</value>
|
||||||
|
</data>
|
||||||
|
<data name="Launch" xml:space="preserve">
|
||||||
|
<value>시작하다</value>
|
||||||
|
</data>
|
||||||
|
<data name="LauncherFormTitle" xml:space="preserve">
|
||||||
|
<value>러스티하츠 런처</value>
|
||||||
|
</data>
|
||||||
|
<data name="LauncherUpdateCheckFailed" xml:space="preserve">
|
||||||
|
<value>런처 업데이트 확인 중 오류가 발생했습니다:</value>
|
||||||
|
</data>
|
||||||
|
<data name="LauncherUpdateFailed" xml:space="preserve">
|
||||||
|
<value>런처 업데이트를 다운로드하는 중 오류가 발생했습니다:</value>
|
||||||
|
</data>
|
||||||
|
<data name="LauncherUpdateSuccess" xml:space="preserve">
|
||||||
|
<value>런처가 버전으로 업데이트되었습니다</value>
|
||||||
|
</data>
|
||||||
|
<data name="LauncherUpdateText" xml:space="preserve">
|
||||||
|
<value>새로운 버전의 런처를 사용할 수 있습니다. 자동으로 다운로드되어 설치됩니다.</value>
|
||||||
|
</data>
|
||||||
|
<data name="Launching" xml:space="preserve">
|
||||||
|
<value>진수</value>
|
||||||
|
</data>
|
||||||
|
<data name="LoginInfoTitle" xml:space="preserve">
|
||||||
|
<value>로그인 정보</value>
|
||||||
|
</data>
|
||||||
|
<data name="LoginInsertPassword" xml:space="preserve">
|
||||||
|
<value>비밀번호를 입력해주세요.</value>
|
||||||
|
</data>
|
||||||
|
<data name="LoginInsertUsername" xml:space="preserve">
|
||||||
|
<value>사용자 이름을 입력하세요.</value>
|
||||||
|
</data>
|
||||||
|
<data name="LoginInvalidCredentials" xml:space="preserve">
|
||||||
|
<value>사용자 이름 또는 비밀번호가 잘못되었습니다.</value>
|
||||||
|
</data>
|
||||||
|
<data name="LoginInvalidUsernameFormat" xml:space="preserve">
|
||||||
|
<value>사용자 이름 형식이 잘못되었습니다.</value>
|
||||||
|
</data>
|
||||||
|
<data name="LoginLocked" xml:space="preserve">
|
||||||
|
<value>귀하의 계정이 잠겨 있습니다. 고객지원팀에 문의하세요.</value>
|
||||||
|
</data>
|
||||||
|
<data name="LoginTooManyAttempts" xml:space="preserve">
|
||||||
|
<value>로그인 시도 횟수가 너무 많습니다. 나중에 다시 시도 해주십시오.</value>
|
||||||
|
</data>
|
||||||
|
<data name="LoginWindowTitle" xml:space="preserve">
|
||||||
|
<value>로그인 창</value>
|
||||||
|
</data>
|
||||||
|
<data name="Logout" xml:space="preserve">
|
||||||
|
<value>로그 아웃</value>
|
||||||
|
</data>
|
||||||
|
<data name="LogoutText" xml:space="preserve">
|
||||||
|
<value>정말로 로그아웃하시겠습니까?</value>
|
||||||
|
</data>
|
||||||
|
<data name="Manage" xml:space="preserve">
|
||||||
|
<value>< 관리</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgBoxFormTitle" xml:space="preserve">
|
||||||
|
<value>메시지</value>
|
||||||
|
</data>
|
||||||
|
<data name="NewPassword" xml:space="preserve">
|
||||||
|
<value>새 비밀번호를 입력하세요</value>
|
||||||
|
</data>
|
||||||
|
<data name="NewPasswordDesc" xml:space="preserve">
|
||||||
|
<value>6~16자</value>
|
||||||
|
</data>
|
||||||
|
<data name="No" xml:space="preserve">
|
||||||
|
<value>아니요</value>
|
||||||
|
</data>
|
||||||
|
<data name="OpenInstallDir" xml:space="preserve">
|
||||||
|
<value>설치 디렉토리 열기</value>
|
||||||
|
</data>
|
||||||
|
<data name="Packing" xml:space="preserve">
|
||||||
|
<value>포장</value>
|
||||||
|
</data>
|
||||||
|
<data name="PasswordChanged" xml:space="preserve">
|
||||||
|
<value>비밀번호가 성공적으로 변경되었습니다! 다시 로그인해주세요.</value>
|
||||||
|
</data>
|
||||||
|
<data name="PasswordLabel" xml:space="preserve">
|
||||||
|
<value>비밀번호</value>
|
||||||
|
</data>
|
||||||
|
<data name="PwdConfirmDescLabelEmpty" xml:space="preserve">
|
||||||
|
<value>비밀번호 확인은 비워둘 수 없습니다!</value>
|
||||||
|
</data>
|
||||||
|
<data name="PwdConfirmDescLabelMatch" xml:space="preserve">
|
||||||
|
<value>비밀번호가 일치하지 않습니다!</value>
|
||||||
|
</data>
|
||||||
|
<data name="PwdDescLabelCriteria" xml:space="preserve">
|
||||||
|
<value>비밀번호에는 대문자, 소문자, 숫자가 하나 이상 포함되어야 합니다.</value>
|
||||||
|
</data>
|
||||||
|
<data name="PwdDescLabelEmpty" xml:space="preserve">
|
||||||
|
<value>비밀번호는 비워둘 수 없습니다!</value>
|
||||||
|
</data>
|
||||||
|
<data name="PwdDescLabelSize" xml:space="preserve">
|
||||||
|
<value>비밀번호는 6~16자 사이여야 합니다!</value>
|
||||||
|
</data>
|
||||||
|
<data name="PwdStrengthLabelMedium" xml:space="preserve">
|
||||||
|
<value>매질</value>
|
||||||
|
</data>
|
||||||
|
<data name="PwdStrengthLabelStrong" xml:space="preserve">
|
||||||
|
<value>강한</value>
|
||||||
|
</data>
|
||||||
|
<data name="PwdStrengthLabelWeak" xml:space="preserve">
|
||||||
|
<value>약한</value>
|
||||||
|
</data>
|
||||||
|
<data name="RegFormTitle" xml:space="preserve">
|
||||||
|
<value>계좌등록</value>
|
||||||
|
</data>
|
||||||
|
<data name="RegisterAccount" xml:space="preserve">
|
||||||
|
<value>계좌등록</value>
|
||||||
|
</data>
|
||||||
|
<data name="RepeatPassword" xml:space="preserve">
|
||||||
|
<value>새 비밀번호를 다시 입력하세요.</value>
|
||||||
|
</data>
|
||||||
|
<data name="RepeatPasswordDesc" xml:space="preserve">
|
||||||
|
<value>비밀번호를 반복하세요</value>
|
||||||
|
</data>
|
||||||
|
<data name="Return" xml:space="preserve">
|
||||||
|
<value>< 반품</value>
|
||||||
|
</data>
|
||||||
|
<data name="Running" xml:space="preserve">
|
||||||
|
<value>달리기</value>
|
||||||
|
</data>
|
||||||
|
<data name="RustyHearts" xml:space="preserve">
|
||||||
|
<value>러스티하츠</value>
|
||||||
|
</data>
|
||||||
|
<data name="rustyheartsconfig" xml:space="preserve">
|
||||||
|
<value>Rustyheartsconfig.exe를 찾을 수 없습니다.</value>
|
||||||
|
</data>
|
||||||
|
<data name="SamePassword" xml:space="preserve">
|
||||||
|
<value>동일한 비밀번호. 다른 비밀번호를 사용해 주세요.</value>
|
||||||
|
</data>
|
||||||
|
<data name="ServerOffline" xml:space="preserve">
|
||||||
|
<value>게임 서버에 연결할 수 없습니다.</value>
|
||||||
|
</data>
|
||||||
|
<data name="Success" xml:space="preserve">
|
||||||
|
<value>성공</value>
|
||||||
|
</data>
|
||||||
|
<data name="Uninstall" xml:space="preserve">
|
||||||
|
<value>제거</value>
|
||||||
|
</data>
|
||||||
|
<data name="Uninstalling" xml:space="preserve">
|
||||||
|
<value>제거 중</value>
|
||||||
|
</data>
|
||||||
|
<data name="UninstallText" xml:space="preserve">
|
||||||
|
<value>제거가 완료되었습니다.</value>
|
||||||
|
</data>
|
||||||
|
<data name="Unpacking" xml:space="preserve">
|
||||||
|
<value>포장 풀기</value>
|
||||||
|
</data>
|
||||||
|
<data name="UnsupportedService" xml:space="preserve">
|
||||||
|
<value>지원되지 않는 클라이언트 지역입니다.</value>
|
||||||
|
</data>
|
||||||
|
<data name="Update" xml:space="preserve">
|
||||||
|
<value>업데이트</value>
|
||||||
|
</data>
|
||||||
|
<data name="UpdateCheckError" xml:space="preserve">
|
||||||
|
<value>업데이트를 확인하는 동안 오류가 발생했습니다.</value>
|
||||||
|
</data>
|
||||||
|
<data name="UpdateDownloadError" xml:space="preserve">
|
||||||
|
<value>업데이트를 다운로드하는 동안 오류가 발생했습니다.</value>
|
||||||
|
</data>
|
||||||
|
<data name="Updating" xml:space="preserve">
|
||||||
|
<value>업데이트 중</value>
|
||||||
|
</data>
|
||||||
|
<data name="UserAgreement" xml:space="preserve">
|
||||||
|
<value>"사용자 계약"</value>
|
||||||
|
</data>
|
||||||
|
<data name="UsernameDesc" xml:space="preserve">
|
||||||
|
<value>6~16자의 영숫자</value>
|
||||||
|
</data>
|
||||||
|
<data name="UsernameDescLabelEmpty" xml:space="preserve">
|
||||||
|
<value>사용자 이름은 비워둘 수 없습니다.</value>
|
||||||
|
</data>
|
||||||
|
<data name="UsernameDescLabelInvalid" xml:space="preserve">
|
||||||
|
<value>사용자 이름은 하나 이상의 문자가 포함된 영숫자여야 합니다.</value>
|
||||||
|
</data>
|
||||||
|
<data name="UsernameDescLabelSize" xml:space="preserve">
|
||||||
|
<value>사용자 이름은 6~16자 사이여야 합니다.</value>
|
||||||
|
</data>
|
||||||
|
<data name="UsernameDescLabelUppercase" xml:space="preserve">
|
||||||
|
<value>사용자 이름에는 대문자가 포함될 수 없습니다. 소문자와 숫자만 사용해주세요.</value>
|
||||||
|
</data>
|
||||||
|
<data name="UsernameLabel" xml:space="preserve">
|
||||||
|
<value>사용자 이름/이메일</value>
|
||||||
|
</data>
|
||||||
|
<data name="VerificationCode" xml:space="preserve">
|
||||||
|
<value>확인 코드</value>
|
||||||
|
</data>
|
||||||
|
<data name="VerificationEmailSent" xml:space="preserve">
|
||||||
|
<value>확인 이메일이 다음으로 전송되었습니다</value>
|
||||||
|
</data>
|
||||||
|
<data name="Version" xml:space="preserve">
|
||||||
|
<value>Version</value>
|
||||||
|
</data>
|
||||||
|
<data name="Welcome" xml:space="preserve">
|
||||||
|
<value>환영하다</value>
|
||||||
|
</data>
|
||||||
|
<data name="Yes" xml:space="preserve">
|
||||||
|
<value>예</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
|
|
@ -120,9 +120,21 @@
|
||||||
<data name="Account" xml:space="preserve">
|
<data name="Account" xml:space="preserve">
|
||||||
<value>Account</value>
|
<value>Account</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="AccountDetails" xml:space="preserve">
|
||||||
|
<value>Account Details</value>
|
||||||
|
</data>
|
||||||
|
<data name="AccountEmail" xml:space="preserve">
|
||||||
|
<value>Account Email</value>
|
||||||
|
</data>
|
||||||
|
<data name="AccountName" xml:space="preserve">
|
||||||
|
<value>Account Name</value>
|
||||||
|
</data>
|
||||||
<data name="AccountNotFound" xml:space="preserve">
|
<data name="AccountNotFound" xml:space="preserve">
|
||||||
<value>A account with this email was not found</value>
|
<value>A account with this email was not found</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="AgreeTerms" xml:space="preserve">
|
||||||
|
<value>Agree and accept the</value>
|
||||||
|
</data>
|
||||||
<data name="AlreadyExecute" xml:space="preserve">
|
<data name="AlreadyExecute" xml:space="preserve">
|
||||||
<value>rustyhearts.exe is already running.</value>
|
<value>rustyhearts.exe is already running.</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
@ -132,6 +144,9 @@
|
||||||
<data name="ChangePassword" xml:space="preserve">
|
<data name="ChangePassword" xml:space="preserve">
|
||||||
<value>Change Password</value>
|
<value>Change Password</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ChangePwdFormTitle" xml:space="preserve">
|
||||||
|
<value>Change Password</value>
|
||||||
|
</data>
|
||||||
<data name="CheckBoxAutoLogin" xml:space="preserve">
|
<data name="CheckBoxAutoLogin" xml:space="preserve">
|
||||||
<value>Auto Login</value>
|
<value>Auto Login</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
@ -141,6 +156,9 @@
|
||||||
<data name="Checking" xml:space="preserve">
|
<data name="Checking" xml:space="preserve">
|
||||||
<value>Checking</value>
|
<value>Checking</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="CheckUpdate" xml:space="preserve">
|
||||||
|
<value>Check Update</value>
|
||||||
|
</data>
|
||||||
<data name="CodeDescLabel" xml:space="preserve">
|
<data name="CodeDescLabel" xml:space="preserve">
|
||||||
<value>Insert the verification code</value>
|
<value>Insert the verification code</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
@ -171,6 +189,9 @@
|
||||||
<data name="EnterEmail" xml:space="preserve">
|
<data name="EnterEmail" xml:space="preserve">
|
||||||
<value>Enter your Email address</value>
|
<value>Enter your Email address</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="EnterPassword" xml:space="preserve">
|
||||||
|
<value>Enter the password</value>
|
||||||
|
</data>
|
||||||
<data name="Error" xml:space="preserve">
|
<data name="Error" xml:space="preserve">
|
||||||
<value>Error</value>
|
<value>Error</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
@ -183,12 +204,18 @@
|
||||||
<data name="ForgotPwdLabel" xml:space="preserve">
|
<data name="ForgotPwdLabel" xml:space="preserve">
|
||||||
<value>Forgot Password?</value>
|
<value>Forgot Password?</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="GameSettings" xml:space="preserve">
|
||||||
|
<value>Game Settings</value>
|
||||||
|
</data>
|
||||||
<data name="Info" xml:space="preserve">
|
<data name="Info" xml:space="preserve">
|
||||||
<value>Info</value>
|
<value>Info</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Install" xml:space="preserve">
|
<data name="Install" xml:space="preserve">
|
||||||
<value>Install</value>
|
<value>Install</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="InstallLocation" xml:space="preserve">
|
||||||
|
<value>Install Location</value>
|
||||||
|
</data>
|
||||||
<data name="InvalidVerificationCode" xml:space="preserve">
|
<data name="InvalidVerificationCode" xml:space="preserve">
|
||||||
<value>Invalid Verification Code</value>
|
<value>Invalid Verification Code</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
@ -198,6 +225,9 @@
|
||||||
<data name="Launch" xml:space="preserve">
|
<data name="Launch" xml:space="preserve">
|
||||||
<value>Launch</value>
|
<value>Launch</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="LauncherFormTitle" xml:space="preserve">
|
||||||
|
<value>Rusty Hearts Launcher</value>
|
||||||
|
</data>
|
||||||
<data name="LauncherUpdateCheckFailed" xml:space="preserve">
|
<data name="LauncherUpdateCheckFailed" xml:space="preserve">
|
||||||
<value>Error checking for launcher update: </value>
|
<value>Error checking for launcher update: </value>
|
||||||
</data>
|
</data>
|
||||||
|
|
@ -237,15 +267,30 @@
|
||||||
<data name="LoginWindowTitle" xml:space="preserve">
|
<data name="LoginWindowTitle" xml:space="preserve">
|
||||||
<value>Login Window</value>
|
<value>Login Window</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Logout" xml:space="preserve">
|
||||||
|
<value>Logout</value>
|
||||||
|
</data>
|
||||||
<data name="LogoutText" xml:space="preserve">
|
<data name="LogoutText" xml:space="preserve">
|
||||||
<value>Are you sure you want to logout?</value>
|
<value>Are you sure you want to logout?</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Manage" xml:space="preserve">
|
||||||
|
<value>< Manage</value>
|
||||||
|
</data>
|
||||||
|
<data name="MsgBoxFormTitle" xml:space="preserve">
|
||||||
|
<value>Message</value>
|
||||||
|
</data>
|
||||||
<data name="NewPassword" xml:space="preserve">
|
<data name="NewPassword" xml:space="preserve">
|
||||||
<value>Enter the new password</value>
|
<value>Enter the new password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NewPasswordDesc" xml:space="preserve">
|
<data name="NewPasswordDesc" xml:space="preserve">
|
||||||
<value>6-16 characters</value>
|
<value>6-16 characters</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="No" xml:space="preserve">
|
||||||
|
<value>No</value>
|
||||||
|
</data>
|
||||||
|
<data name="OpenInstallDir" xml:space="preserve">
|
||||||
|
<value>Open Install Dir</value>
|
||||||
|
</data>
|
||||||
<data name="Packing" xml:space="preserve">
|
<data name="Packing" xml:space="preserve">
|
||||||
<value>Packing</value>
|
<value>Packing</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
@ -279,8 +324,14 @@
|
||||||
<data name="PwdStrengthLabelWeak" xml:space="preserve">
|
<data name="PwdStrengthLabelWeak" xml:space="preserve">
|
||||||
<value>Weak</value>
|
<value>Weak</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="RegFormTitle" xml:space="preserve">
|
||||||
|
<value>Register Account</value>
|
||||||
|
</data>
|
||||||
|
<data name="RegisterAccount" xml:space="preserve">
|
||||||
|
<value>Register Account</value>
|
||||||
|
</data>
|
||||||
<data name="RepeatPassword" xml:space="preserve">
|
<data name="RepeatPassword" xml:space="preserve">
|
||||||
<value>Re-enter the new password</value>
|
<value>Repeat the new password</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RepeatPasswordDesc" xml:space="preserve">
|
<data name="RepeatPasswordDesc" xml:space="preserve">
|
||||||
<value>Repeat the password</value>
|
<value>Repeat the password</value>
|
||||||
|
|
@ -333,6 +384,12 @@
|
||||||
<data name="Updating" xml:space="preserve">
|
<data name="Updating" xml:space="preserve">
|
||||||
<value>Updating</value>
|
<value>Updating</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="UserAgreement" xml:space="preserve">
|
||||||
|
<value>"User Agreement"</value>
|
||||||
|
</data>
|
||||||
|
<data name="UsernameDesc" xml:space="preserve">
|
||||||
|
<value>6-16 alphanumeric characters</value>
|
||||||
|
</data>
|
||||||
<data name="UsernameDescLabelEmpty" xml:space="preserve">
|
<data name="UsernameDescLabelEmpty" xml:space="preserve">
|
||||||
<value>Name cannot be empty</value>
|
<value>Name cannot be empty</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
@ -360,4 +417,7 @@
|
||||||
<data name="Welcome" xml:space="preserve">
|
<data name="Welcome" xml:space="preserve">
|
||||||
<value>Welcome</value>
|
<value>Welcome</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Yes" xml:space="preserve">
|
||||||
|
<value>Yes</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
BIN
Resources/buttons/ChangePwwnd_button_email_active_ko.png
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
Resources/buttons/ChangePwwnd_button_email_down_ko.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
Resources/buttons/ChangePwwnd_button_email_normal_ko.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
BIN
Resources/buttons/Registerwnd_button_continue_active_ko.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
Resources/buttons/Registerwnd_button_continue_down_ko.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
Resources/buttons/Registerwnd_button_continue_normal_ko.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
Resources/buttons/Registerwndwnd_button_sendemail_active_ko.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
Resources/buttons/Registerwndwnd_button_sendemail_down_ko.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
Resources/buttons/Registerwndwnd_button_sendemail_normal_ko.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
Resources/buttons/button_login_active_ko.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
Resources/buttons/button_login_down_ko.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
Resources/buttons/button_login_normal_ko.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
Resources/buttons/button_register_active_ko.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
Resources/buttons/button_register_down_ko.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
Resources/buttons/button_register_normal_ko.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
Resources/buttons/messagewnd.button.ok.active_ko.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
Resources/buttons/messagewnd.button.ok.down_ko.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
Resources/buttons/messagewnd.button.ok.normal_ko.png
Normal file
|
After Width: | Height: | Size: 3 KiB |
BIN
screenshoots/preview-ko.png
Normal file
|
After Width: | Height: | Size: 845 KiB |