Center resting barrels and anchor every firing pose to the HUD edge. Add native framebuffer regression checks for all nine poses and update game assets, binaries and launcher integrity hash.
65 lines
2.3 KiB
C#
65 lines
2.3 KiB
C#
using System;
|
||
using System.Diagnostics;
|
||
using System.IO;
|
||
using System.Security.Cryptography;
|
||
using System.Windows.Forms;
|
||
|
||
namespace AssemblerCasinoLauncher
|
||
{
|
||
static class Program
|
||
{
|
||
const string ExpectedPokerSha256 = "D25606FE934E0D447DC4791218F8213BB1A21B0F2F7C8AFC0B61D419C03E92C0";
|
||
|
||
[STAThread]
|
||
static void Main()
|
||
{
|
||
var root = AppDomain.CurrentDomain.BaseDirectory;
|
||
// The installed launcher is at the root; developer builds live in dist.
|
||
if (!File.Exists(Path.Combine(root, "bin", "poker.exe")))
|
||
{
|
||
var parent = Directory.GetParent(root.TrimEnd(Path.DirectorySeparatorChar));
|
||
if (parent != null && Directory.Exists(Path.Combine(parent.FullName, "assets")) &&
|
||
File.Exists(Path.Combine(parent.FullName, "bin", "poker.exe")))
|
||
root = parent.FullName;
|
||
}
|
||
var game = Path.Combine(root, "bin", "poker.exe");
|
||
if (!File.Exists(game))
|
||
{
|
||
MessageBox.Show("bin\\poker.exe не найден рядом с лаунчером.", "Assembler Casino", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
return;
|
||
}
|
||
|
||
if (!VerifyGame(game))
|
||
{
|
||
MessageBox.Show("bin\\poker.exe был изменен или поврежден. Запуск остановлен.", "Assembler Casino", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
return;
|
||
}
|
||
|
||
Process.Start(new ProcessStartInfo
|
||
{
|
||
FileName = game,
|
||
WorkingDirectory = root,
|
||
UseShellExecute = false
|
||
});
|
||
}
|
||
|
||
static bool VerifyGame(string gamePath)
|
||
{
|
||
try
|
||
{
|
||
using (var sha = SHA256.Create())
|
||
using (var stream = File.OpenRead(gamePath))
|
||
{
|
||
var actual = BitConverter.ToString(sha.ComputeHash(stream)).Replace("-", "");
|
||
return actual.Equals(ExpectedPokerSha256, StringComparison.OrdinalIgnoreCase);
|
||
}
|
||
}
|
||
catch
|
||
{
|
||
return false;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|