mirror of
https://gitlab.com/Syroot/Worms.git
synced 2025-03-04 09:25:22 +03:00
Release 1.0.0 of Mgame launcher.
This commit is contained in:
parent
13dee4ecbf
commit
c0cab3ecf5
@ -12,7 +12,7 @@ namespace Syroot.Worms.Mgame.Launcher
|
|||||||
|
|
||||||
public string UserName { get; set; }
|
public string UserName { get; set; }
|
||||||
public string Password { get; set; }
|
public string Password { get; set; }
|
||||||
public uint PasswordKey { get; set; }
|
public int PasswordKey { get; set; }
|
||||||
|
|
||||||
public string ExecutablePaths { get; set; } = "DWait.exe;Main.exe";
|
public string ExecutablePaths { get; set; } = "DWait.exe;Main.exe";
|
||||||
public string ExecutableArgs { get; set; }
|
public string ExecutableArgs { get; set; }
|
||||||
|
@ -7,6 +7,9 @@ using Microsoft.Extensions.Configuration;
|
|||||||
|
|
||||||
namespace Syroot.Worms.Mgame.Launcher
|
namespace Syroot.Worms.Mgame.Launcher
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Represents the main class of the application containing the program entry point.
|
||||||
|
/// </summary>
|
||||||
internal class Program
|
internal class Program
|
||||||
{
|
{
|
||||||
// ---- METHODS (PRIVATE) --------------------------------------------------------------------------------------
|
// ---- METHODS (PRIVATE) --------------------------------------------------------------------------------------
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 15 KiB |
@ -2,6 +2,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||||
<ApplicationIcon>Resources\Icon.ico</ApplicationIcon>
|
<ApplicationIcon>Resources\Icon.ico</ApplicationIcon>
|
||||||
|
<ApplicationManifest>Resources\app.manifest</ApplicationManifest>
|
||||||
<AssemblyName>Launcher</AssemblyName>
|
<AssemblyName>Launcher</AssemblyName>
|
||||||
<AssemblyTitle>Mgame Worms Launcher</AssemblyTitle>
|
<AssemblyTitle>Mgame Worms Launcher</AssemblyTitle>
|
||||||
<Authors>Syroot</Authors>
|
<Authors>Syroot</Authors>
|
||||||
@ -11,8 +12,7 @@
|
|||||||
<OutputType>WinExe</OutputType>
|
<OutputType>WinExe</OutputType>
|
||||||
<ProductName>Online Worms Launcher</ProductName>
|
<ProductName>Online Worms Launcher</ProductName>
|
||||||
<TargetFrameworks>net461</TargetFrameworks>
|
<TargetFrameworks>net461</TargetFrameworks>
|
||||||
<Version>0.5.0</Version>
|
<Version>1.0.0</Version>
|
||||||
<ApplicationManifest>app.manifest</ApplicationManifest>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Costura.Fody" Version="3.3.0" />
|
<PackageReference Include="Costura.Fody" Version="3.3.0" />
|
||||||
|
@ -14,34 +14,29 @@ namespace Syroot.Worms.Mgame
|
|||||||
{
|
{
|
||||||
// ---- FIELDS -------------------------------------------------------------------------------------------------
|
// ---- FIELDS -------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
private static readonly char[] _invalidUserNameChars = { '=', '&', ' ' };
|
|
||||||
|
|
||||||
private string _userName;
|
|
||||||
private string _passwordString;
|
private string _passwordString;
|
||||||
|
|
||||||
// ---- PROPERTIES ---------------------------------------------------------------------------------------------
|
// ---- PROPERTIES ---------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the name of the publisher providing the launch configuration. Must not exceed 15 characters.
|
||||||
|
/// </summary>
|
||||||
|
public string Publisher { get; set; } = "MGAME";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets an unknown value. Must not exceed 19 characters.
|
||||||
|
/// </summary>
|
||||||
|
public string Unknown { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the address of the game server.
|
/// Gets or sets the address of the game server.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IPEndPoint ServerEndPoint { get; set; }
|
public IPEndPoint ServerEndPoint { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the initially entered user name.
|
/// Gets or sets the initially entered user name. Must not exceed 250 characters.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string UserName
|
public string UserName { get; set; }
|
||||||
{
|
|
||||||
get => _userName;
|
|
||||||
set
|
|
||||||
{
|
|
||||||
// 251 bytes is the space between "UID=" and the server IP, minus a terminating 0.
|
|
||||||
if (Encodings.Win949.GetBytes(value).Length > 251)
|
|
||||||
throw new ArgumentException("User name must not exceed 251 bytes.");
|
|
||||||
if (value.IndexOfAny(_invalidUserNameChars) != -1)
|
|
||||||
throw new ArgumentException("User name contains invalid characters.");
|
|
||||||
_userName = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---- METHODS (PUBLIC) ---------------------------------------------------------------------------------------
|
// ---- METHODS (PUBLIC) ---------------------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -57,19 +52,12 @@ namespace Syroot.Worms.Mgame
|
|||||||
using (BinaryStream stream = new BinaryStream(mappedFile.CreateViewStream(),
|
using (BinaryStream stream = new BinaryStream(mappedFile.CreateViewStream(),
|
||||||
encoding: Encodings.Win949, stringCoding: StringCoding.ZeroTerminated))
|
encoding: Encodings.Win949, stringCoding: StringCoding.ZeroTerminated))
|
||||||
{
|
{
|
||||||
stream.WriteString("MGAME", 16);
|
stream.WriteString(Publisher, 16);
|
||||||
|
stream.WriteString(Unknown, 20);
|
||||||
stream.Position = 36;
|
stream.WriteString(_passwordString, 30);
|
||||||
stream.Write(_passwordString);
|
stream.WriteString($"UID={UserName}", 256);
|
||||||
|
stream.WriteString(ServerEndPoint.Address.ToString(), 30);
|
||||||
stream.Position = 66;
|
stream.WriteString(ServerEndPoint.Port.ToString(), 914);
|
||||||
stream.Write("UID=", StringCoding.Raw);
|
|
||||||
stream.Write(Encodings.Win949.GetBytes(UserName));
|
|
||||||
|
|
||||||
stream.Position = 322;
|
|
||||||
stream.Write(ServerEndPoint.Address.ToString());
|
|
||||||
stream.Position = 352;
|
|
||||||
stream.Write(ServerEndPoint.Port.ToString());
|
|
||||||
}
|
}
|
||||||
return mappedFile;
|
return mappedFile;
|
||||||
}
|
}
|
||||||
@ -92,9 +80,9 @@ namespace Syroot.Worms.Mgame
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="password">The password to store encrypted.</param>
|
/// <param name="password">The password to store encrypted.</param>
|
||||||
/// <param name="key">The key to encrypt with.</param>
|
/// <param name="key">The key to encrypt with.</param>
|
||||||
public void SetPassword(string password, uint key = 1000)
|
public void SetPassword(string password, int key = 1000)
|
||||||
{
|
{
|
||||||
_passwordString = $";{PasswordCrypto.Encrypt(password, key)};{key}";
|
_passwordString = $";{PasswordCrypto.Encrypt(password, (uint)key)};{key}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user