KAZIK/build/AssemblerCasinoLauncher.cs
Игорь Федосеев 24d66ddf0e feat: add startup briefing and entry music
Sequence studio, texture AI disclosure and MASM code comparison before arrival. Show a typed hall briefing after admission.

Start the jukebox at 50% user volume on hall entry. Apply positional gain before playback to avoid a full-volume startup burst.
2026-11-02 01:04:11 +03:00

65 lines
2.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Diagnostics;
using System.IO;
using System.Security.Cryptography;
using System.Windows.Forms;
namespace AssemblerCasinoLauncher
{
static class Program
{
const string ExpectedPokerSha256 = "3D0237E09CAED350548457BFAB24C4D67D6FAFC3D689C2D87C8BE360B64EC0AF";
[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;
}
}
}
}