From 09a3328003713b0916a7c41779a318e7fb754667 Mon Sep 17 00:00:00 2001 From: titaniumweiner <147983421+titaniumweiner@users.noreply.github.com> Date: Tue, 14 Jul 2026 19:40:50 -0400 Subject: [PATCH 01/15] feat: add one-click single-player launcher --- .gitignore | 12 + .../SinglePlayerStartupTests.cs | 69 +++ Source/ACE.Server/ACE.Server.csproj | 34 +- Source/ACE.Server/Program.cs | 19 +- Source/ACE.Server/ReadyFileSignal.cs | 74 ++++ Source/ACE.Server/ServerLaunchOptions.cs | 44 ++ .../ACE.SinglePlayer.DecalHost.csproj | 13 + Source/ACE.SinglePlayer.DecalHost/Program.cs | 312 ++++++++++++++ .../ACE.SinglePlayer.TestHost.csproj | 9 + Source/ACE.SinglePlayer.TestHost/Program.cs | 44 ++ .../ACE.SinglePlayer.Tests.csproj | 20 + .../ClientLaunchTests.cs | 48 +++ .../ConfigurationAndValidationTests.cs | 87 ++++ Source/ACE.SinglePlayer.Tests/ModTests.cs | 70 +++ .../OrchestrationTests.cs | 33 ++ .../ReadyAndProcessSimulationTests.cs | 116 +++++ .../SettingsAndSecretsTests.cs | 81 ++++ Source/ACE.SinglePlayer.Tests/TestPaths.cs | 27 ++ Source/ACE.SinglePlayer.slnx | 9 + .../ACE.SinglePlayer/ACE.SinglePlayer.csproj | 18 + .../ClientLaunch/DecalClientLaunchProvider.cs | 102 +++++ .../ClientLaunch/DecalDetector.cs | 40 ++ .../DirectClientLaunchProvider.cs | 50 +++ .../ClientLaunch/IClientLaunchProvider.cs | 15 + .../Configuration/AceConfigurationWriter.cs | 76 ++++ .../Database/DatabaseBootstrapper.cs | 68 +++ .../Database/DatabaseConnectionFactory.cs | 35 ++ .../Database/DatabaseRuntimeFactory.cs | 24 ++ .../Database/ExternalMariaDbRuntime.cs | 80 ++++ .../Database/IDatabaseRuntime.cs | 13 + .../Database/ManagedMariaDbRuntime.cs | 98 +++++ .../Infrastructure/FilePermissionHardener.cs | 21 + .../Infrastructure/LauncherLog.cs | 33 ++ .../Infrastructure/SecretProtector.cs | 96 +++++ .../Infrastructure/SettingsStore.cs | 64 +++ .../Infrastructure/SetupValidator.cs | 68 +++ .../Infrastructure/SingleInstance.cs | 21 + .../Models/LauncherSettings.cs | 73 ++++ .../ACE.SinglePlayer/Models/LauncherState.cs | 15 + .../ACE.SinglePlayer/Networking/PortProbe.cs | 38 ++ .../Networking/ReadyFileMonitor.cs | 84 ++++ .../Orchestration/LauncherController.cs | 194 +++++++++ .../Orchestration/LauncherStateMachine.cs | 17 + .../Orchestration/PlayOperationGate.cs | 12 + .../Processes/AceServerProcessManager.cs | 173 ++++++++ .../Processes/ClientProcessManager.cs | 76 ++++ .../Processes/ProcessOwnershipRecord.cs | 50 +++ Source/ACE.SinglePlayer/Program.cs | 99 +++++ Source/ACE.SinglePlayer/UI/MainForm.cs | 142 ++++++ Source/ACE.SinglePlayer/UI/ModsForm.cs | 128 ++++++ Source/ACE.SinglePlayer/UI/SetupWizardForm.cs | 404 ++++++++++++++++++ docs/AQUIFIR_MOD_COMPATIBILITY.md | 21 + docs/SINGLE_PLAYER_ARCHITECTURE.md | 51 +++ docs/SINGLE_PLAYER_BUILD_AND_TEST.md | 22 + docs/SINGLE_PLAYER_FIRST_RUN.md | 43 ++ docs/SINGLE_PLAYER_ROADMAP.md | 14 + scripts/publish-singleplayer.ps1 | 84 ++++ 57 files changed, 3775 insertions(+), 8 deletions(-) create mode 100644 Source/ACE.Server.Tests/SinglePlayerStartupTests.cs create mode 100644 Source/ACE.Server/ReadyFileSignal.cs create mode 100644 Source/ACE.Server/ServerLaunchOptions.cs create mode 100644 Source/ACE.SinglePlayer.DecalHost/ACE.SinglePlayer.DecalHost.csproj create mode 100644 Source/ACE.SinglePlayer.DecalHost/Program.cs create mode 100644 Source/ACE.SinglePlayer.TestHost/ACE.SinglePlayer.TestHost.csproj create mode 100644 Source/ACE.SinglePlayer.TestHost/Program.cs create mode 100644 Source/ACE.SinglePlayer.Tests/ACE.SinglePlayer.Tests.csproj create mode 100644 Source/ACE.SinglePlayer.Tests/ClientLaunchTests.cs create mode 100644 Source/ACE.SinglePlayer.Tests/ConfigurationAndValidationTests.cs create mode 100644 Source/ACE.SinglePlayer.Tests/ModTests.cs create mode 100644 Source/ACE.SinglePlayer.Tests/OrchestrationTests.cs create mode 100644 Source/ACE.SinglePlayer.Tests/ReadyAndProcessSimulationTests.cs create mode 100644 Source/ACE.SinglePlayer.Tests/SettingsAndSecretsTests.cs create mode 100644 Source/ACE.SinglePlayer.Tests/TestPaths.cs create mode 100644 Source/ACE.SinglePlayer.slnx create mode 100644 Source/ACE.SinglePlayer/ACE.SinglePlayer.csproj create mode 100644 Source/ACE.SinglePlayer/ClientLaunch/DecalClientLaunchProvider.cs create mode 100644 Source/ACE.SinglePlayer/ClientLaunch/DecalDetector.cs create mode 100644 Source/ACE.SinglePlayer/ClientLaunch/DirectClientLaunchProvider.cs create mode 100644 Source/ACE.SinglePlayer/ClientLaunch/IClientLaunchProvider.cs create mode 100644 Source/ACE.SinglePlayer/Configuration/AceConfigurationWriter.cs create mode 100644 Source/ACE.SinglePlayer/Database/DatabaseBootstrapper.cs create mode 100644 Source/ACE.SinglePlayer/Database/DatabaseConnectionFactory.cs create mode 100644 Source/ACE.SinglePlayer/Database/DatabaseRuntimeFactory.cs create mode 100644 Source/ACE.SinglePlayer/Database/ExternalMariaDbRuntime.cs create mode 100644 Source/ACE.SinglePlayer/Database/IDatabaseRuntime.cs create mode 100644 Source/ACE.SinglePlayer/Database/ManagedMariaDbRuntime.cs create mode 100644 Source/ACE.SinglePlayer/Infrastructure/FilePermissionHardener.cs create mode 100644 Source/ACE.SinglePlayer/Infrastructure/LauncherLog.cs create mode 100644 Source/ACE.SinglePlayer/Infrastructure/SecretProtector.cs create mode 100644 Source/ACE.SinglePlayer/Infrastructure/SettingsStore.cs create mode 100644 Source/ACE.SinglePlayer/Infrastructure/SetupValidator.cs create mode 100644 Source/ACE.SinglePlayer/Infrastructure/SingleInstance.cs create mode 100644 Source/ACE.SinglePlayer/Models/LauncherSettings.cs create mode 100644 Source/ACE.SinglePlayer/Models/LauncherState.cs create mode 100644 Source/ACE.SinglePlayer/Networking/PortProbe.cs create mode 100644 Source/ACE.SinglePlayer/Networking/ReadyFileMonitor.cs create mode 100644 Source/ACE.SinglePlayer/Orchestration/LauncherController.cs create mode 100644 Source/ACE.SinglePlayer/Orchestration/LauncherStateMachine.cs create mode 100644 Source/ACE.SinglePlayer/Orchestration/PlayOperationGate.cs create mode 100644 Source/ACE.SinglePlayer/Processes/AceServerProcessManager.cs create mode 100644 Source/ACE.SinglePlayer/Processes/ClientProcessManager.cs create mode 100644 Source/ACE.SinglePlayer/Processes/ProcessOwnershipRecord.cs create mode 100644 Source/ACE.SinglePlayer/Program.cs create mode 100644 Source/ACE.SinglePlayer/UI/MainForm.cs create mode 100644 Source/ACE.SinglePlayer/UI/ModsForm.cs create mode 100644 Source/ACE.SinglePlayer/UI/SetupWizardForm.cs create mode 100644 docs/AQUIFIR_MOD_COMPATIBILITY.md create mode 100644 docs/SINGLE_PLAYER_ARCHITECTURE.md create mode 100644 docs/SINGLE_PLAYER_BUILD_AND_TEST.md create mode 100644 docs/SINGLE_PLAYER_FIRST_RUN.md create mode 100644 docs/SINGLE_PLAYER_ROADMAP.md create mode 100644 scripts/publish-singleplayer.ps1 diff --git a/.gitignore b/.gitignore index d19c7a8be4..29ced94fcb 100644 --- a/.gitignore +++ b/.gitignore @@ -302,3 +302,15 @@ Database/tools/password.txt docker.env docker-compose.yml docker-compose.arm64 + +# Single-player local build/runtime artifacts (never commit secrets or proprietary files) +.dotnet/ +.dotnet-install.ps1 +artifacts/ +Source/ACE.SinglePlayer/Runtime/ +Source/ACE.SinglePlayer/Logs/ +Source/ACE.SinglePlayer/Client/ +Source/ACE.SinglePlayer/Mods/ +**/ace-server.ready.json +**/ace-server.process.json +**/settings.json diff --git a/Source/ACE.Server.Tests/SinglePlayerStartupTests.cs b/Source/ACE.Server.Tests/SinglePlayerStartupTests.cs new file mode 100644 index 0000000000..44a2b2650b --- /dev/null +++ b/Source/ACE.Server.Tests/SinglePlayerStartupTests.cs @@ -0,0 +1,69 @@ +using System; +using System.IO; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using ACE.Common; + +namespace ACE.Server.Tests +{ + [TestClass] + public class SinglePlayerStartupTests + { + [TestMethod] + public void LaunchOptionsAreOptional() + { + var options = ServerLaunchOptions.Parse(Array.Empty()); + Assert.IsNull(options.ConfigPath); + Assert.IsNull(options.ReadyFilePath); + } + + [TestMethod] + public void LaunchOptionsPreserveAbsolutePathsWithSpaces() + { + var root = Path.Combine(Path.GetTempPath(), "ACE Single Player Test"); + var options = ServerLaunchOptions.Parse(new[] + { + "--config", Path.Combine(root, "Config.js"), + "--ready-file", Path.Combine(root, "server ready.json") + }); + Assert.AreEqual(Path.GetFullPath(Path.Combine(root, "Config.js")), options.ConfigPath); + Assert.AreEqual(Path.GetFullPath(Path.Combine(root, "server ready.json")), options.ReadyFilePath); + } + + [TestMethod] + public void RelativeLauncherPathsAreRejected() + { + Assert.ThrowsExactly(() => ServerLaunchOptions.Parse(new[] { "--config", "Config.js" })); + } + + [TestMethod] + public void ReadyFileIsAtomicValidAndRemovedOnShutdown() + { + var directory = Path.Combine(Path.GetTempPath(), "ACE.SinglePlayer.Server.Tests", Guid.NewGuid().ToString("N")); + Directory.CreateDirectory(directory); + var path = Path.Combine(directory, "ready.json"); + try + { + ConfigManager.Initialize(new MasterConfiguration()); + ConfigManager.Config.Server.WorldName = "Ready Test"; + ConfigManager.Config.Server.Network.Host = "127.0.0.1"; + ConfigManager.Config.Server.Network.Port = 9123; + var signal = new ReadyFileSignal(path); + signal.Write(); + + var json = File.ReadAllText(path); + StringAssert.Contains(json, "Ready Test"); + StringAssert.Contains(json, "127.0.0.1"); + Assert.AreEqual(0, Directory.GetFiles(directory, "*.tmp").Length); + + signal.Delete(); + Assert.IsFalse(File.Exists(path)); + } + finally + { + Directory.Delete(directory, true); + } + } + } +} diff --git a/Source/ACE.Server/ACE.Server.csproj b/Source/ACE.Server/ACE.Server.csproj index a12b12bca5..ad7f5f4b6b 100644 --- a/Source/ACE.Server/ACE.Server.csproj +++ b/Source/ACE.Server/ACE.Server.csproj @@ -285,12 +285,38 @@ - - - - + + + + + + + + <_DatabaseArchivePublish Include="..\..\Database\Archive\**\*" /> + <_DatabaseBasePublish Include="..\..\Database\Base\**\*" /> + <_DatabaseUpdatesPublish Include="..\..\Database\Updates\**\*" /> + <_DatabaseOptionalPublish Include="..\..\Database\Optional\**\*" /> + + + + + + + diff --git a/Source/ACE.Server/Program.cs b/Source/ACE.Server/Program.cs index b8a249c14a..f4970908f9 100644 --- a/Source/ACE.Server/Program.cs +++ b/Source/ACE.Server/Program.cs @@ -41,8 +41,14 @@ partial class Program public static readonly bool IsRunningInContainer = Convert.ToBoolean(Environment.GetEnvironmentVariable("DOTNET_RUNNING_IN_CONTAINER")); + private static ReadyFileSignal readyFileSignal; + public static void Main(string[] args) { + var launchOptions = ServerLaunchOptions.Parse(args); + readyFileSignal = new ReadyFileSignal(launchOptions.ReadyFilePath); + readyFileSignal.DeleteStale(); + var consoleTitle = $"ACEmulator - v{ServerBuildInfo.FullVersion}"; Console.Title = consoleTitle; @@ -129,15 +135,17 @@ public static void Main(string[] args) if (IsRunningInContainer) log.Info("ACEmulator is running in a container..."); - var configFile = Path.Combine(exeLocation, "Config.js"); + var configFile = launchOptions.ConfigPath ?? Path.Combine(exeLocation, "Config.js"); var configConfigContainer = Path.Combine(containerConfigDirectory, "Config.js"); - if (IsRunningInContainer && File.Exists(configConfigContainer)) + if (launchOptions.ConfigPath == null && IsRunningInContainer && File.Exists(configConfigContainer)) File.Copy(configConfigContainer, configFile, true); if (!File.Exists(configFile)) { - if (!IsRunningInContainer) + if (launchOptions.ConfigPath != null) + throw new FileNotFoundException("The configuration supplied with --config does not exist.", configFile); + else if (!IsRunningInContainer) DoOutOfBoxSetup(configFile); else { @@ -152,7 +160,7 @@ public static void Main(string[] args) } log.Info("Initializing ConfigManager..."); - ConfigManager.Initialize(); + ConfigManager.Initialize(configFile); log.Info("Initializing ModManager..."); ModManager.Initialize(); @@ -340,6 +348,7 @@ public static void Main(string[] args) if (!PropertyManager.GetBool("world_closed", false).Item) { WorldManager.Open(null); + readyFileSignal.Write(); } } @@ -350,6 +359,8 @@ private static void CurrentDomain_UnhandledException(object sender, UnhandledExc private static void OnProcessExit(object sender, EventArgs e) { + readyFileSignal?.Delete(); + if (!IsRunningInContainer) { if (!ServerManager.ShutdownInitiated) diff --git a/Source/ACE.Server/ReadyFileSignal.cs b/Source/ACE.Server/ReadyFileSignal.cs new file mode 100644 index 0000000000..c87bc6bcd3 --- /dev/null +++ b/Source/ACE.Server/ReadyFileSignal.cs @@ -0,0 +1,74 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Text.Json; + +using ACE.Common; + +namespace ACE.Server +{ + public sealed class ReadyFileSignal + { + private readonly string path; + + public ReadyFileSignal(string path) + { + this.path = path; + } + + public bool Enabled => !string.IsNullOrWhiteSpace(path); + + public void DeleteStale() + { + if (Enabled && File.Exists(path)) + File.Delete(path); + } + + public void Write() + { + if (!Enabled) + return; + + var directory = Path.GetDirectoryName(path); + if (!string.IsNullOrWhiteSpace(directory)) + Directory.CreateDirectory(directory); + + var payload = new + { + ProcessId = Process.GetCurrentProcess().Id, + WorldName = ConfigManager.Config.Server.WorldName, + Host = ConfigManager.Config.Server.Network.Host, + Port = ConfigManager.Config.Server.Network.Port, + ReadyAtUtc = DateTime.UtcNow + }; + + var temporaryPath = path + "." + Guid.NewGuid().ToString("N") + ".tmp"; + try + { + File.WriteAllText(temporaryPath, JsonSerializer.Serialize(payload)); + File.Move(temporaryPath, path, true); + } + finally + { + if (File.Exists(temporaryPath)) + File.Delete(temporaryPath); + } + } + + public void Delete() + { + if (!Enabled) + return; + + try + { + if (File.Exists(path)) + File.Delete(path); + } + catch + { + // Process shutdown must continue even if cleanup is prevented. + } + } + } +} diff --git a/Source/ACE.Server/ServerLaunchOptions.cs b/Source/ACE.Server/ServerLaunchOptions.cs new file mode 100644 index 0000000000..9be8f47163 --- /dev/null +++ b/Source/ACE.Server/ServerLaunchOptions.cs @@ -0,0 +1,44 @@ +using System; +using System.IO; + +namespace ACE.Server +{ + public sealed class ServerLaunchOptions + { + public string ConfigPath { get; private set; } + + public string ReadyFilePath { get; private set; } + + public static ServerLaunchOptions Parse(string[] args) + { + var options = new ServerLaunchOptions(); + + for (var i = 0; i < args.Length; i++) + { + switch (args[i]) + { + case "--config": + options.ConfigPath = ReadAbsolutePath(args, ref i, "--config"); + break; + case "--ready-file": + options.ReadyFilePath = ReadAbsolutePath(args, ref i, "--ready-file"); + break; + } + } + + return options; + } + + private static string ReadAbsolutePath(string[] args, ref int index, string option) + { + if (index + 1 >= args.Length || string.IsNullOrWhiteSpace(args[index + 1])) + throw new ArgumentException($"{option} requires an absolute path."); + + var path = args[++index]; + if (!Path.IsPathFullyQualified(path)) + throw new ArgumentException($"{option} requires an absolute path: {path}"); + + return Path.GetFullPath(path); + } + } +} diff --git a/Source/ACE.SinglePlayer.DecalHost/ACE.SinglePlayer.DecalHost.csproj b/Source/ACE.SinglePlayer.DecalHost/ACE.SinglePlayer.DecalHost.csproj new file mode 100644 index 0000000000..e7b2c3d868 --- /dev/null +++ b/Source/ACE.SinglePlayer.DecalHost/ACE.SinglePlayer.DecalHost.csproj @@ -0,0 +1,13 @@ + + + Exe + net10.0-windows + true + win-x86 + x86 + x86 + enable + enable + ACE.SinglePlayer.DecalHost + + diff --git a/Source/ACE.SinglePlayer.DecalHost/Program.cs b/Source/ACE.SinglePlayer.DecalHost/Program.cs new file mode 100644 index 0000000000..8f6eb07f2a --- /dev/null +++ b/Source/ACE.SinglePlayer.DecalHost/Program.cs @@ -0,0 +1,312 @@ +using System.ComponentModel; +using System.Runtime.InteropServices; +using System.Text; +using System.Text.Json; + +namespace ACE.SinglePlayer.DecalHost; + +internal static class Program +{ + private const uint CreateSuspended = 0x00000004; + private const uint MemCommit = 0x00001000; + private const uint MemReserve = 0x00002000; + private const uint MemRelease = 0x00008000; + private const uint PageReadWrite = 0x04; + private const uint Infinite = 0xFFFFFFFF; + private const uint Th32csSnapModule = 0x00000008; + private const uint Th32csSnapModule32 = 0x00000010; + private const uint DontResolveDllReferences = 0x00000001; + private static readonly IntPtr InvalidHandleValue = new(-1); + + public static int Main(string[] args) + { + ProcessInformation process = default; + try + { + var options = Parse(args); + var client = Required(options, "--client"); + var decal = Required(options, "--decal"); + var account = Required(options, "--account"); + var password = Required(options, "--password"); + var host = Required(options, "--host"); + var port = Required(options, "--port"); + + if (!File.Exists(client) || !File.Exists(decal)) + throw new FileNotFoundException("A required client or Decal file is missing."); + + var commandLine = BuildCommandLine(new[] + { + client, "-a", account, "-v", password, "-h", $"{host}:{port}", "-rodat", "off" + }); + var startup = new StartupInfo { Size = Marshal.SizeOf() }; + if (!CreateProcess(client, new StringBuilder(commandLine), IntPtr.Zero, IntPtr.Zero, false, + CreateSuspended, IntPtr.Zero, Path.GetDirectoryName(client), ref startup, out process)) + throw new Win32Exception(Marshal.GetLastWin32Error(), "Unable to create the game process."); + + InjectLibraryAndInvoke(process.Process, (uint)process.ProcessId, decal, "DecalStartup"); + if (ResumeThread(process.Thread) == uint.MaxValue) + throw new Win32Exception(Marshal.GetLastWin32Error(), "Unable to resume the game process."); + + Console.Out.Write(JsonSerializer.Serialize(new + { + ProcessId = process.ProcessId, + DecalStartupInvoked = true + })); + return 0; + } + catch (Exception ex) + { + if (process.Process != IntPtr.Zero) + TerminateProcess(process.Process, 1); + Console.Error.Write("The Decal startup path failed: " + ex.Message); + return 1; + } + finally + { + if (process.Thread != IntPtr.Zero) + CloseHandle(process.Thread); + if (process.Process != IntPtr.Zero) + CloseHandle(process.Process); + } + } + + internal static string BuildCommandLine(IEnumerable arguments) => + string.Join(" ", arguments.Select(QuoteArgument)); + + internal static string QuoteArgument(string value) + { + if (value.Length > 0 && !value.Any(character => char.IsWhiteSpace(character) || character == '"')) + return value; + + var result = new StringBuilder().Append('"'); + var backslashes = 0; + foreach (var character in value) + { + if (character == '\\') + { + backslashes++; + continue; + } + + if (character == '"') + result.Append('\\', backslashes * 2 + 1).Append('"'); + else + result.Append('\\', backslashes).Append(character); + backslashes = 0; + } + + result.Append('\\', backslashes * 2).Append('"'); + return result.ToString(); + } + + private static void InjectLibraryAndInvoke(IntPtr process, uint processId, string libraryPath, string exportName) + { + var bytes = Encoding.Unicode.GetBytes(Path.GetFullPath(libraryPath) + '\0'); + var remoteMemory = VirtualAllocEx(process, IntPtr.Zero, (nuint)bytes.Length, MemReserve | MemCommit, PageReadWrite); + if (remoteMemory == IntPtr.Zero) + throw new Win32Exception(Marshal.GetLastWin32Error(), "Unable to allocate injection memory."); + + try + { + if (!WriteProcessMemory(process, remoteMemory, bytes, (nuint)bytes.Length, out var written) || written != (nuint)bytes.Length) + throw new Win32Exception(Marshal.GetLastWin32Error(), "Unable to write the Decal library path."); + + var localKernel = GetModuleHandle("kernel32.dll"); + var localLoadLibrary = GetProcAddress(localKernel, "LoadLibraryW"); + var remoteKernel = FindRemoteModule(processId, "kernel32.dll"); + var remoteLoadLibrary = remoteKernel + checked((int)(localLoadLibrary.ToInt64() - localKernel.ToInt64())); + var remoteLibrary = RunRemoteThread(process, remoteLoadLibrary, remoteMemory, "Unable to load Decal Inject.dll."); + if (remoteLibrary == 0) + throw new InvalidOperationException("Decal Inject.dll did not load in the game process."); + + var localLibrary = LoadLibraryEx(libraryPath, IntPtr.Zero, DontResolveDllReferences); + if (localLibrary == IntPtr.Zero) + throw new Win32Exception(Marshal.GetLastWin32Error(), "Unable to inspect Decal Inject.dll."); + try + { + var localExport = GetProcAddress(localLibrary, exportName); + if (localExport == IntPtr.Zero) + throw new MissingMethodException($"Decal Inject.dll does not export {exportName}."); + var exportOffset = checked((int)(localExport.ToInt64() - localLibrary.ToInt64())); + var remoteExport = new IntPtr(unchecked((int)((long)remoteLibrary + exportOffset))); + RunRemoteThread(process, remoteExport, IntPtr.Zero, $"Unable to invoke Decal {exportName}."); + } + finally + { + FreeLibrary(localLibrary); + } + } + finally + { + VirtualFreeEx(process, remoteMemory, 0, MemRelease); + } + } + + private static uint RunRemoteThread(IntPtr process, IntPtr startAddress, IntPtr parameter, string error) + { + var thread = CreateRemoteThread(process, IntPtr.Zero, 0, startAddress, parameter, 0, out _); + if (thread == IntPtr.Zero) + throw new Win32Exception(Marshal.GetLastWin32Error(), error); + try + { + if (WaitForSingleObject(thread, Infinite) == uint.MaxValue || !GetExitCodeThread(thread, out var exitCode)) + throw new Win32Exception(Marshal.GetLastWin32Error(), error); + return exitCode; + } + finally + { + CloseHandle(thread); + } + } + + private static IntPtr FindRemoteModule(uint processId, string moduleName) + { + var snapshot = CreateToolhelp32Snapshot(Th32csSnapModule | Th32csSnapModule32, processId); + if (snapshot == InvalidHandleValue) + throw new Win32Exception(Marshal.GetLastWin32Error(), "Unable to inspect the game process modules."); + try + { + var entry = new ModuleEntry32 { Size = (uint)Marshal.SizeOf() }; + if (Module32First(snapshot, ref entry)) + { + do + { + if (string.Equals(entry.Module, moduleName, StringComparison.OrdinalIgnoreCase)) + return entry.ModuleBaseAddress; + } while (Module32Next(snapshot, ref entry)); + } + } + finally + { + CloseHandle(snapshot); + } + throw new InvalidOperationException($"The game process did not load {moduleName}."); + } + + private static Dictionary Parse(string[] args) + { + var values = new Dictionary(StringComparer.OrdinalIgnoreCase); + for (var index = 0; index < args.Length; index += 2) + { + if (index + 1 >= args.Length || !args[index].StartsWith("--", StringComparison.Ordinal)) + throw new ArgumentException("Invalid Decal host arguments."); + values[args[index]] = args[index + 1]; + } + return values; + } + + private static string Required(IReadOnlyDictionary values, string name) => + values.TryGetValue(name, out var value) && !string.IsNullOrWhiteSpace(value) + ? value + : throw new ArgumentException($"Missing {name}."); + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + private struct StartupInfo + { + public int Size; + public string? Reserved; + public string? Desktop; + public string? Title; + public int X; + public int Y; + public int XSize; + public int YSize; + public int XCountChars; + public int YCountChars; + public int FillAttribute; + public int Flags; + public short ShowWindow; + public short Reserved2; + public IntPtr ReservedPointer; + public IntPtr StandardInput; + public IntPtr StandardOutput; + public IntPtr StandardError; + } + + [StructLayout(LayoutKind.Sequential)] + private struct ProcessInformation + { + public IntPtr Process; + public IntPtr Thread; + public int ProcessId; + public int ThreadId; + } + + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] + private struct ModuleEntry32 + { + public uint Size; + public uint ModuleId; + public uint ProcessId; + public uint GlobalUsage; + public uint ProcessUsage; + public IntPtr ModuleBaseAddress; + public uint ModuleBaseSize; + public IntPtr ModuleHandle; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string Module; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] public string ExePath; + } + + [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool CreateProcess(string applicationName, StringBuilder commandLine, IntPtr processAttributes, + IntPtr threadAttributes, bool inheritHandles, uint creationFlags, IntPtr environment, string? currentDirectory, + ref StartupInfo startupInfo, out ProcessInformation processInformation); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern IntPtr VirtualAllocEx(IntPtr process, IntPtr address, nuint size, uint allocationType, uint protect); + + [DllImport("kernel32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool VirtualFreeEx(IntPtr process, IntPtr address, nuint size, uint freeType); + + [DllImport("kernel32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool WriteProcessMemory(IntPtr process, IntPtr address, byte[] buffer, nuint size, out nuint written); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern IntPtr CreateRemoteThread(IntPtr process, IntPtr attributes, nuint stackSize, + IntPtr startAddress, IntPtr parameter, uint creationFlags, out uint threadId); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern uint WaitForSingleObject(IntPtr handle, uint milliseconds); + + [DllImport("kernel32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool GetExitCodeThread(IntPtr thread, out uint exitCode); + + [DllImport("kernel32.dll", CharSet = CharSet.Unicode)] + private static extern IntPtr GetModuleHandle(string moduleName); + + [DllImport("kernel32.dll", CharSet = CharSet.Ansi, SetLastError = true)] + private static extern IntPtr GetProcAddress(IntPtr module, string procedureName); + + [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + private static extern IntPtr LoadLibraryEx(string fileName, IntPtr file, uint flags); + + [DllImport("kernel32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool FreeLibrary(IntPtr module); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern IntPtr CreateToolhelp32Snapshot(uint flags, uint processId); + + [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool Module32First(IntPtr snapshot, ref ModuleEntry32 entry); + + [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool Module32Next(IntPtr snapshot, ref ModuleEntry32 entry); + + [DllImport("kernel32.dll", SetLastError = true)] + private static extern uint ResumeThread(IntPtr thread); + + [DllImport("kernel32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool CloseHandle(IntPtr handle); + + [DllImport("kernel32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool TerminateProcess(IntPtr process, uint exitCode); +} diff --git a/Source/ACE.SinglePlayer.TestHost/ACE.SinglePlayer.TestHost.csproj b/Source/ACE.SinglePlayer.TestHost/ACE.SinglePlayer.TestHost.csproj new file mode 100644 index 0000000000..0ffd497ff9 --- /dev/null +++ b/Source/ACE.SinglePlayer.TestHost/ACE.SinglePlayer.TestHost.csproj @@ -0,0 +1,9 @@ + + + Exe + net10.0 + win-x64 + enable + enable + + diff --git a/Source/ACE.SinglePlayer.TestHost/Program.cs b/Source/ACE.SinglePlayer.TestHost/Program.cs new file mode 100644 index 0000000000..2f2e755a03 --- /dev/null +++ b/Source/ACE.SinglePlayer.TestHost/Program.cs @@ -0,0 +1,44 @@ +using System.Diagnostics; +using System.Net; +using System.Net.Sockets; +using System.Text.Json; + +var argumentRecord = Environment.GetEnvironmentVariable("ACE_SINGLEPLAYER_TEST_RECORD_ARGUMENTS"); +if (!string.IsNullOrWhiteSpace(argumentRecord)) +{ + await File.WriteAllTextAsync(argumentRecord, JsonSerializer.Serialize(args)); + return 0; +} + +if (args.Length == 0) + return 2; + +switch (args[0]) +{ + case "--server-ready": + { + var readyPath = args[1]; + var port = int.Parse(args[2]); + using var listener = new UdpClient(new IPEndPoint(IPAddress.Loopback, port)); + var payload = new + { + ProcessId = Environment.ProcessId, + WorldName = "Test World", + Host = "127.0.0.1", + Port = port, + ReadyAtUtc = DateTime.UtcNow + }; + var temporaryPath = readyPath + ".tmp"; + await File.WriteAllTextAsync(temporaryPath, JsonSerializer.Serialize(payload)); + File.Move(temporaryPath, readyPath, true); + await Console.In.ReadLineAsync(); + return 0; + } + case "--server-exit-before-ready": + return 23; + case "--server-timeout": + await Task.Delay(TimeSpan.FromSeconds(30)); + return 0; + default: + return 3; +} diff --git a/Source/ACE.SinglePlayer.Tests/ACE.SinglePlayer.Tests.csproj b/Source/ACE.SinglePlayer.Tests/ACE.SinglePlayer.Tests.csproj new file mode 100644 index 0000000000..cfe7fe7068 --- /dev/null +++ b/Source/ACE.SinglePlayer.Tests/ACE.SinglePlayer.Tests.csproj @@ -0,0 +1,20 @@ + + + net10.0-windows + true + win-x64 + x64 + false + enable + enable + + + + + + + + + + + diff --git a/Source/ACE.SinglePlayer.Tests/ClientLaunchTests.cs b/Source/ACE.SinglePlayer.Tests/ClientLaunchTests.cs new file mode 100644 index 0000000000..0ad06adeb0 --- /dev/null +++ b/Source/ACE.SinglePlayer.Tests/ClientLaunchTests.cs @@ -0,0 +1,48 @@ +using System.Diagnostics; +using System.Text.Json; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using ACE.SinglePlayer.ClientLaunch; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Tests; + +[TestClass] +public sealed class ClientLaunchTests +{ + [TestMethod] + public async Task DirectLaunchKeepsEveryCredentialArgumentSeparateAndExact() + { + var directory = TestPaths.CreateTemporaryDirectory(); + try + { + var recordPath = Path.Combine(directory, "arguments.json"); + const string account = "single player account"; + const string password = "p a\"ss&^!%()[]{}"; + var settings = new LauncherSettings + { + ClientExePath = TestPaths.TestHost, + AccountName = account, + Host = "127.0.0.1", + Port = 9000 + }; + var info = DirectClientLaunchProvider.CreateStartInfo(new ClientLaunchRequest(settings, password)); + info.Environment["ACE_SINGLEPLAYER_TEST_RECORD_ARGUMENTS"] = recordPath; + + using var process = Process.Start(info); + Assert.IsNotNull(process); + await process.WaitForExitAsync(); + var arguments = JsonSerializer.Deserialize(await File.ReadAllTextAsync(recordPath)); + + CollectionAssert.AreEqual(new[] + { + "-a", account, "-v", password, "-h", "127.0.0.1:9000", "-rodat", "off" + }, arguments); + } + finally + { + Directory.Delete(directory, true); + } + } +} diff --git a/Source/ACE.SinglePlayer.Tests/ConfigurationAndValidationTests.cs b/Source/ACE.SinglePlayer.Tests/ConfigurationAndValidationTests.cs new file mode 100644 index 0000000000..5a85af2b05 --- /dev/null +++ b/Source/ACE.SinglePlayer.Tests/ConfigurationAndValidationTests.cs @@ -0,0 +1,87 @@ +using System.Text.Json; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using ACE.Common; +using ACE.SinglePlayer.Configuration; +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Tests; + +[TestClass] +public sealed class ConfigurationAndValidationTests +{ + [TestMethod] + public void GeneratedConfigurationIsLoopbackTypedAndSinglePlayerSafe() + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + var protector = new TestProtector(); + var settings = ValidSettings(root); + settings.ProtectedDatabasePassword = protector.Protect("database secret"); + var configuration = new AceConfigurationWriter(protector).Create(settings); + + Assert.AreEqual("127.0.0.1", configuration.Server.Network.Host); + Assert.AreEqual((uint)9000, configuration.Server.Network.Port); + Assert.AreEqual((uint)4, configuration.Server.Network.MaximumAllowedSessions); + Assert.IsTrue(configuration.Server.Accounts.AllowAutoAccountCreation); + Assert.IsFalse(configuration.Server.WorldDatabasePrecaching); + Assert.IsTrue(configuration.Offline.AutoApplyDatabaseUpdates); + Assert.IsFalse(configuration.Offline.AutoUpdateWorldDatabase); + Assert.AreEqual("database secret", configuration.MySql.Shard.Password); + + var json = JsonSerializer.Serialize(configuration, ConfigManager.SerializerOptions); + Assert.IsNotNull(JsonSerializer.Deserialize(json, ConfigManager.SerializerOptions)); + } + finally + { + Directory.Delete(root, true); + } + } + + [TestMethod] + public void ValidatorRequiresExactCurrentAceDatFiles() + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + var settings = ValidSettings(root); + File.Delete(Path.Combine(settings.DatFilesDirectory, "client_local_English.dat")); + var result = SetupValidator.Validate(settings); + Assert.IsFalse(result.IsValid); + StringAssert.Contains(result.Message, "client_local_English.dat"); + } + finally + { + Directory.Delete(root, true); + } + } + + private static LauncherSettings ValidSettings(string root) + { + var client = Path.Combine(root, "acclient.exe"); + var server = Path.Combine(root, "ACE.Server.exe"); + File.WriteAllText(client, string.Empty); + File.WriteAllText(server, string.Empty); + foreach (var dat in SetupValidator.RequiredDatFiles) + File.WriteAllText(Path.Combine(root, dat), string.Empty); + return new LauncherSettings + { + ClientExePath = client, + ServerExePath = server, + DatFilesDirectory = root, + ModsDirectory = Path.Combine(root, "Mods"), + RuntimeDirectory = Path.Combine(root, "Runtime"), + ProtectedAccountPassword = "protected", + ProtectedDatabasePassword = "protected" + }; + } + + private sealed class TestProtector : ISecretProtector + { + public string Protect(string value) => Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(value)); + public string Unprotect(string protectedValue) => System.Text.Encoding.UTF8.GetString(Convert.FromBase64String(protectedValue)); + } +} diff --git a/Source/ACE.SinglePlayer.Tests/ModTests.cs b/Source/ACE.SinglePlayer.Tests/ModTests.cs new file mode 100644 index 0000000000..c7b5cb17e9 --- /dev/null +++ b/Source/ACE.SinglePlayer.Tests/ModTests.cs @@ -0,0 +1,70 @@ +using System.Text.Json.Nodes; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using ACE.SinglePlayer.Mods; + +namespace ACE.SinglePlayer.Tests; + +[TestClass] +public sealed class ModTests +{ + [TestMethod] + public void ServerMetadataParsesCurrentAceFields() + { + var directory = TestPaths.CreateTemporaryDirectory(); + try + { + File.WriteAllText(Path.Combine(directory, "Meta.json"), """ + { "Name":"Test Mod", "Author":"Author", "Description":"Description", "Version":"1.2.3", "Priority":7, "Enabled":false } + """); + var record = AceServerModProvider.Read(directory); + Assert.IsFalse(record.IsMalformed); + Assert.AreEqual("Test Mod", record.Name); + Assert.AreEqual("Author", record.Author); + Assert.AreEqual((uint)7, record.Priority); + Assert.IsFalse(record.Enabled); + } + finally + { + Directory.Delete(directory, true); + } + } + + [TestMethod] + public async Task EnabledTogglePreservesUnknownJsonFields() + { + var directory = TestPaths.CreateTemporaryDirectory(); + try + { + var path = Path.Combine(directory, "Meta.json"); + await File.WriteAllTextAsync(path, """{"Name":"Test","Enabled":true,"FutureField":{"answer":42}}"""); + await ModMetadataEditor.SetEnabledAsync(path, false); + var metadata = ModMetadataEditor.Parse(await File.ReadAllTextAsync(path)); + Assert.IsFalse(metadata["Enabled"]!.GetValue()); + Assert.AreEqual(42, metadata["FutureField"]!["answer"]!.GetValue()); + } + finally + { + Directory.Delete(directory, true); + } + } + + [TestMethod] + public void MalformedMetadataIsVisibleInsteadOfSilentlySkipped() + { + var directory = TestPaths.CreateTemporaryDirectory(); + try + { + File.WriteAllText(Path.Combine(directory, "Meta.json"), "{not json"); + var record = AceServerModProvider.Read(directory); + Assert.IsTrue(record.IsMalformed); + Assert.AreEqual(CompatibilityStatus.LoadFailed, record.CompatibilityStatus); + Assert.IsFalse(string.IsNullOrWhiteSpace(record.LastLoadError)); + } + finally + { + Directory.Delete(directory, true); + } + } +} diff --git a/Source/ACE.SinglePlayer.Tests/OrchestrationTests.cs b/Source/ACE.SinglePlayer.Tests/OrchestrationTests.cs new file mode 100644 index 0000000000..0ad86f8b42 --- /dev/null +++ b/Source/ACE.SinglePlayer.Tests/OrchestrationTests.cs @@ -0,0 +1,33 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using ACE.SinglePlayer.Orchestration; +using ACE.SinglePlayer.Processes; + +namespace ACE.SinglePlayer.Tests; + +[TestClass] +public sealed class OrchestrationTests +{ + [TestMethod] + public void DuplicatePlayOperationIsPrevented() + { + var gate = new PlayOperationGate(); + Assert.IsTrue(gate.TryEnter()); + Assert.IsFalse(gate.TryEnter()); + Assert.IsTrue(gate.IsActive); + gate.Exit(); + Assert.IsTrue(gate.TryEnter()); + } + + [TestMethod] + public void OwnershipRequiresPidStartTimeAndExecutablePath() + { + var start = DateTime.UtcNow; + var executable = Path.Combine(Path.GetTempPath(), "ACE.Server.exe"); + var record = new ProcessOwnershipRecord { ProcessId = 123, StartTimeUtc = start, ExecutablePath = executable }; + Assert.IsTrue(record.Matches(123, start.AddMilliseconds(100), executable)); + Assert.IsFalse(record.Matches(124, start, executable)); + Assert.IsFalse(record.Matches(123, start.AddSeconds(2), executable)); + Assert.IsFalse(record.Matches(123, start, Path.Combine(Path.GetTempPath(), "Other.Server.exe"))); + } +} diff --git a/Source/ACE.SinglePlayer.Tests/ReadyAndProcessSimulationTests.cs b/Source/ACE.SinglePlayer.Tests/ReadyAndProcessSimulationTests.cs new file mode 100644 index 0000000000..478d7420bc --- /dev/null +++ b/Source/ACE.SinglePlayer.Tests/ReadyAndProcessSimulationTests.cs @@ -0,0 +1,116 @@ +using System.Diagnostics; +using System.Net; +using System.Net.Sockets; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using ACE.SinglePlayer.Networking; + +namespace ACE.SinglePlayer.Tests; + +[TestClass] +public sealed class ReadyAndProcessSimulationTests +{ + [TestMethod] + public void ReadyFileValidationRejectsAnotherProcess() + { + var json = $$"""{"ProcessId":42,"WorldName":"Test","Host":"127.0.0.1","Port":9000,"ReadyAtUtc":"{{DateTime.UtcNow:O}}"}"""; + Assert.ThrowsExactly(() => ReadyFileMonitor.Validate(json, 43, IPAddress.Loopback, 9000)); + } + + [TestMethod] + public async Task SimulatorWritesReadyFileAndBindsExpectedUdpPort() + { + var directory = TestPaths.CreateTemporaryDirectory(); + using var process = StartHost("--server-ready", Path.Combine(directory, "ready.json"), GetFreeUdpPort().ToString()); + try + { + var port = int.Parse(process.StartInfo.ArgumentList[2]); + var result = await new ReadyFileMonitor(new UdpPortProbe()).WaitAsync( + process.StartInfo.ArgumentList[1], process, IPAddress.Loopback, port, TimeSpan.FromSeconds(5), CancellationToken.None); + Assert.AreEqual(process.Id, result.ProcessId); + await process.StandardInput.WriteLineAsync(string.Empty); + await process.WaitForExitAsync(); + } + finally + { + if (!process.HasExited) process.Kill(true); + Directory.Delete(directory, true); + } + } + + [TestMethod] + public async Task SimulatorExitBeforeReadyIsReported() + { + var directory = TestPaths.CreateTemporaryDirectory(); + using var process = StartHost("--server-exit-before-ready"); + try + { + await AssertThrowsAsync(() => new ReadyFileMonitor(new UdpPortProbe()).WaitAsync( + Path.Combine(directory, "ready.json"), process, IPAddress.Loopback, GetFreeUdpPort(), TimeSpan.FromSeconds(5), CancellationToken.None)); + } + finally + { + Directory.Delete(directory, true); + } + } + + [TestMethod] + public async Task SimulatorTimeoutAndPortProbeTimeoutAreDeterministic() + { + var directory = TestPaths.CreateTemporaryDirectory(); + using var process = StartHost("--server-timeout"); + var port = GetFreeUdpPort(); + try + { + await AssertThrowsAsync(() => new ReadyFileMonitor(new UdpPortProbe()).WaitAsync( + Path.Combine(directory, "ready.json"), process, IPAddress.Loopback, port, TimeSpan.FromMilliseconds(250), CancellationToken.None)); + await AssertThrowsAsync(() => new UdpPortProbe().WaitUntilListeningAsync( + IPAddress.Loopback, port, TimeSpan.FromMilliseconds(150), CancellationToken.None)); + } + finally + { + if (!process.HasExited) + { + process.Kill(true); + await process.WaitForExitAsync(); + } + Directory.Delete(directory, true); + } + } + + private static Process StartHost(params string[] arguments) + { + var info = new ProcessStartInfo + { + FileName = TestPaths.TestHost, + WorkingDirectory = Path.GetDirectoryName(TestPaths.TestHost)!, + UseShellExecute = false, + RedirectStandardInput = true, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true + }; + foreach (var argument in arguments) + info.ArgumentList.Add(argument); + return Process.Start(info) ?? throw new InvalidOperationException("Test host did not start."); + } + + private static int GetFreeUdpPort() + { + using var socket = new UdpClient(new IPEndPoint(IPAddress.Loopback, 0)); + return ((IPEndPoint)socket.Client.LocalEndPoint!).Port; + } + + private static async Task AssertThrowsAsync(Func action) where T : Exception + { + try + { + await action(); + Assert.Fail($"Expected {typeof(T).Name}."); + } + catch (T) + { + } + } +} diff --git a/Source/ACE.SinglePlayer.Tests/SettingsAndSecretsTests.cs b/Source/ACE.SinglePlayer.Tests/SettingsAndSecretsTests.cs new file mode 100644 index 0000000000..27943038bc --- /dev/null +++ b/Source/ACE.SinglePlayer.Tests/SettingsAndSecretsTests.cs @@ -0,0 +1,81 @@ +using System.Text.Json; + +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Tests; + +[TestClass] +public sealed class SettingsAndSecretsTests +{ + [TestMethod] + public async Task SettingsRoundTripPreservesVersionAndPersistentAccount() + { + var directory = TestPaths.CreateTemporaryDirectory(); + try + { + var store = new SettingsStore(Path.Combine(directory, "settings.json")); + var settings = new LauncherSettings + { + AccountName = "single player account", + ProtectedAccountPassword = "protected-once", + ClientLaunchMode = ClientLaunchMode.Decal, + Port = 9123 + }; + await store.SaveAsync(settings); + var loaded = await store.LoadAsync(); + + Assert.IsNotNull(loaded); + Assert.AreEqual(LauncherSettings.CurrentVersion, loaded.SettingsVersion); + Assert.AreEqual(settings.AccountName, loaded.AccountName); + Assert.AreEqual(settings.ProtectedAccountPassword, loaded.ProtectedAccountPassword); + Assert.AreEqual(ClientLaunchMode.Decal, loaded.ClientLaunchMode); + Assert.AreEqual((ushort)9123, loaded.Port); + } + finally + { + Directory.Delete(directory, true); + } + } + + [TestMethod] + public async Task NewerSettingsVersionIsRejected() + { + var directory = TestPaths.CreateTemporaryDirectory(); + try + { + var path = Path.Combine(directory, "settings.json"); + await File.WriteAllTextAsync(path, JsonSerializer.Serialize(new { SettingsVersion = LauncherSettings.CurrentVersion + 1 })); + var store = new SettingsStore(path); + await AssertThrowsAsync(() => store.LoadAsync()); + } + finally + { + Directory.Delete(directory, true); + } + } + + [TestMethod] + public void DpapiRoundTripUsesCurrentWindowsUser() + { + var protector = new SecretProtector(); + const string secret = "spaces, punctuation !@#$%^&*() and unicode Ω"; + var protectedValue = protector.Protect(secret); + Assert.AreNotEqual(secret, protectedValue); + Assert.AreEqual(secret, protector.Unprotect(protectedValue)); + } + + private static async Task AssertThrowsAsync(Func action) where T : Exception + { + try + { + await action(); + Assert.Fail($"Expected {typeof(T).Name}."); + } + catch (T) + { + } + } +} diff --git a/Source/ACE.SinglePlayer.Tests/TestPaths.cs b/Source/ACE.SinglePlayer.Tests/TestPaths.cs new file mode 100644 index 0000000000..39d0d10e65 --- /dev/null +++ b/Source/ACE.SinglePlayer.Tests/TestPaths.cs @@ -0,0 +1,27 @@ +namespace ACE.SinglePlayer.Tests; + +internal static class TestPaths +{ + public static string TestHost + { + get + { + var directory = new DirectoryInfo(AppContext.BaseDirectory); + while (directory is not null && !string.Equals(directory.Name, "Source", StringComparison.OrdinalIgnoreCase)) + directory = directory.Parent; + if (directory is null) + throw new DirectoryNotFoundException("Could not locate the Source directory from the test output."); + + var configuration = new DirectoryInfo(AppContext.BaseDirectory).Parent?.Parent?.Name ?? "Debug"; + return Path.Combine(directory.FullName, "ACE.SinglePlayer.TestHost", "bin", configuration, + "net10.0", "win-x64", "ACE.SinglePlayer.TestHost.exe"); + } + } + + public static string CreateTemporaryDirectory() + { + var path = Path.Combine(Path.GetTempPath(), "ACE.SinglePlayer.Tests", Guid.NewGuid().ToString("N")); + Directory.CreateDirectory(path); + return path; + } +} diff --git a/Source/ACE.SinglePlayer.slnx b/Source/ACE.SinglePlayer.slnx new file mode 100644 index 0000000000..346ab1587b --- /dev/null +++ b/Source/ACE.SinglePlayer.slnx @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Source/ACE.SinglePlayer/ACE.SinglePlayer.csproj b/Source/ACE.SinglePlayer/ACE.SinglePlayer.csproj new file mode 100644 index 0000000000..52900f96cf --- /dev/null +++ b/Source/ACE.SinglePlayer/ACE.SinglePlayer.csproj @@ -0,0 +1,18 @@ + + + WinExe + net10.0-windows + true + true + win-x64 + x64 + enable + enable + ACE.SinglePlayer + ACE.SinglePlayer + + + + + + diff --git a/Source/ACE.SinglePlayer/ClientLaunch/DecalClientLaunchProvider.cs b/Source/ACE.SinglePlayer/ClientLaunch/DecalClientLaunchProvider.cs new file mode 100644 index 0000000000..708cbec6ae --- /dev/null +++ b/Source/ACE.SinglePlayer/ClientLaunch/DecalClientLaunchProvider.cs @@ -0,0 +1,102 @@ +using System.Diagnostics; +using System.Text.Json; + +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.ClientLaunch; + +public sealed class DecalClientLaunchProvider : IClientLaunchProvider +{ + private readonly LauncherLog log; + + public DecalClientLaunchProvider(LauncherLog log) + { + this.log = log; + } + + public ClientLaunchMode Mode => ClientLaunchMode.Decal; + public string DisplayName => "Decal"; + + public bool IsAvailable(out string reason) + { + if (DecalDetector.Detect() is null) + { + reason = "Decal was not detected in the Windows registry, or its Inject.dll is missing."; + return false; + } + + if (!File.Exists(FindHostPath())) + { + reason = "The ACE Decal launch helper is not installed. Vanilla mode remains available."; + return false; + } + + reason = string.Empty; + return true; + } + + public async Task LaunchAsync(ClientLaunchRequest request, CancellationToken cancellationToken) + { + var installation = DecalDetector.Detect() + ?? throw new InvalidOperationException("Decal is not installed or its Inject.dll is missing. Select Vanilla mode and retry."); + var hostPath = FindHostPath(); + if (!File.Exists(hostPath)) + throw new FileNotFoundException("The ACE Decal launch helper is missing. Select Vanilla mode and retry.", hostPath); + + var startInfo = new ProcessStartInfo + { + FileName = hostPath, + WorkingDirectory = Path.GetDirectoryName(hostPath)!, + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true + }; + Add(startInfo, "--client", request.Settings.ClientExePath); + Add(startInfo, "--decal", installation.InjectDllPath); + Add(startInfo, "--account", request.Settings.AccountName); + Add(startInfo, "--password", request.AccountPassword); + Add(startInfo, "--host", request.Settings.Host); + Add(startInfo, "--port", request.Settings.Port.ToString()); + + using var host = Process.Start(startInfo) ?? throw new InvalidOperationException("The ACE Decal launch helper did not start."); + var outputTask = host.StandardOutput.ReadToEndAsync(cancellationToken); + var errorTask = host.StandardError.ReadToEndAsync(cancellationToken); + await host.WaitForExitAsync(cancellationToken); + var output = await outputTask; + var error = await errorTask; + if (host.ExitCode != 0) + throw new InvalidOperationException(string.IsNullOrWhiteSpace(error) + ? "Decal injection failed. Select Vanilla mode and retry." + : "Decal injection failed: " + error.Trim()); + + var result = JsonSerializer.Deserialize(output.Trim(), new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true + }) ?? throw new InvalidDataException("The Decal launch helper returned no diagnostic result."); + if (!result.DecalStartupInvoked || result.ProcessId <= 0) + throw new InvalidOperationException("Decal's startup entry point was not invoked. Select Vanilla mode and retry."); + + log.Write($"DecalStartup was invoked for client process {result.ProcessId}. End-to-end plugin loading must be verified in game."); + return Process.GetProcessById(result.ProcessId); + } + + private static void Add(ProcessStartInfo info, string name, string value) + { + info.ArgumentList.Add(name); + info.ArgumentList.Add(value); + } + + private static string FindHostPath() + { + var toolsPath = Path.Combine(AppContext.BaseDirectory, "Tools", "ACE.SinglePlayer.DecalHost.exe"); + return File.Exists(toolsPath) ? toolsPath : Path.Combine(AppContext.BaseDirectory, "ACE.SinglePlayer.DecalHost.exe"); + } + + private sealed class DecalHostResult + { + public int ProcessId { get; set; } + public bool DecalStartupInvoked { get; set; } + } +} diff --git a/Source/ACE.SinglePlayer/ClientLaunch/DecalDetector.cs b/Source/ACE.SinglePlayer/ClientLaunch/DecalDetector.cs new file mode 100644 index 0000000000..88154812d0 --- /dev/null +++ b/Source/ACE.SinglePlayer/ClientLaunch/DecalDetector.cs @@ -0,0 +1,40 @@ +using Microsoft.Win32; + +namespace ACE.SinglePlayer.ClientLaunch; + +public sealed record DecalInstallation(string AgentDirectory, string InjectDllPath); + +public static class DecalDetector +{ + private const string AgentKey = @"SOFTWARE\Decal\Agent"; + + public static DecalInstallation? Detect() + { + if (!OperatingSystem.IsWindows()) + return null; + + foreach (var hive in new[] { RegistryHive.LocalMachine, RegistryHive.CurrentUser }) + foreach (var view in new[] { RegistryView.Registry32, RegistryView.Registry64 }) + { + try + { + using var baseKey = RegistryKey.OpenBaseKey(hive, view); + using var key = baseKey.OpenSubKey(AgentKey); + var agentPath = key?.GetValue("AgentPath") as string; + if (string.IsNullOrWhiteSpace(agentPath)) + continue; + + var directory = agentPath.Trim().TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + var injectPath = Path.Combine(directory, "Inject.dll"); + if (File.Exists(injectPath)) + return new DecalInstallation(directory, injectPath); + } + catch (UnauthorizedAccessException) + { + // Try the next registry view/hive. + } + } + + return null; + } +} diff --git a/Source/ACE.SinglePlayer/ClientLaunch/DirectClientLaunchProvider.cs b/Source/ACE.SinglePlayer/ClientLaunch/DirectClientLaunchProvider.cs new file mode 100644 index 0000000000..89dae7f120 --- /dev/null +++ b/Source/ACE.SinglePlayer/ClientLaunch/DirectClientLaunchProvider.cs @@ -0,0 +1,50 @@ +using System.Diagnostics; + +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.ClientLaunch; + +public sealed class DirectClientLaunchProvider : IClientLaunchProvider +{ + public ClientLaunchMode Mode => ClientLaunchMode.Vanilla; + public string DisplayName => "Vanilla"; + + public bool IsAvailable(out string reason) + { + reason = string.Empty; + return true; + } + + public Task LaunchAsync(ClientLaunchRequest request, CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + var process = Process.Start(CreateStartInfo(request)) + ?? throw new InvalidOperationException("Windows did not start acclient.exe."); + return Task.FromResult(process); + } + + public static ProcessStartInfo CreateStartInfo(ClientLaunchRequest request) + { + var settings = request.Settings; + var startInfo = new ProcessStartInfo + { + FileName = settings.ClientExePath, + WorkingDirectory = Path.GetDirectoryName(settings.ClientExePath)!, + UseShellExecute = false + }; + AddAceArguments(startInfo.ArgumentList, settings.AccountName, request.AccountPassword, settings.Host, settings.Port); + return startInfo; + } + + public static void AddAceArguments(IList arguments, string account, string password, string host, ushort port) + { + arguments.Add("-a"); + arguments.Add(account); + arguments.Add("-v"); + arguments.Add(password); + arguments.Add("-h"); + arguments.Add($"{host}:{port}"); + arguments.Add("-rodat"); + arguments.Add("off"); + } +} diff --git a/Source/ACE.SinglePlayer/ClientLaunch/IClientLaunchProvider.cs b/Source/ACE.SinglePlayer/ClientLaunch/IClientLaunchProvider.cs new file mode 100644 index 0000000000..c7b7809ab1 --- /dev/null +++ b/Source/ACE.SinglePlayer/ClientLaunch/IClientLaunchProvider.cs @@ -0,0 +1,15 @@ +using System.Diagnostics; + +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.ClientLaunch; + +public sealed record ClientLaunchRequest(LauncherSettings Settings, string AccountPassword); + +public interface IClientLaunchProvider +{ + ClientLaunchMode Mode { get; } + string DisplayName { get; } + bool IsAvailable(out string reason); + Task LaunchAsync(ClientLaunchRequest request, CancellationToken cancellationToken); +} diff --git a/Source/ACE.SinglePlayer/Configuration/AceConfigurationWriter.cs b/Source/ACE.SinglePlayer/Configuration/AceConfigurationWriter.cs new file mode 100644 index 0000000000..b592137179 --- /dev/null +++ b/Source/ACE.SinglePlayer/Configuration/AceConfigurationWriter.cs @@ -0,0 +1,76 @@ +using System.Text.Json; + +using ACE.Common; +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Configuration; + +public sealed class AceConfigurationWriter +{ + private readonly ISecretProtector secretProtector; + + public AceConfigurationWriter(ISecretProtector secretProtector) + { + this.secretProtector = secretProtector; + } + + public MasterConfiguration Create(LauncherSettings settings) + { + var databasePassword = secretProtector.Unprotect(settings.ProtectedDatabasePassword); + var configuration = new MasterConfiguration(); + configuration.Server.WorldName = "ACE Single Player"; + configuration.Server.Network.Host = "127.0.0.1"; + configuration.Server.Network.Port = settings.Port; + configuration.Server.Network.MaximumAllowedSessions = 4; + configuration.Server.Network.MaximumAllowedSessionsPerIPAddress = 4; + configuration.Server.Network.AllowUnlimitedSessionsFromIPAddresses = Array.Empty(); + configuration.Server.Accounts.AllowAutoAccountCreation = true; + configuration.Server.DatFilesDirectory = Path.GetFullPath(settings.DatFilesDirectory); + configuration.Server.ModsDirectory = Path.GetFullPath(settings.ModsDirectory); + configuration.Server.WorldDatabasePrecaching = false; + configuration.Server.ServerPerformanceMonitorAutoStart = false; + configuration.Server.ShutdownInterval = 0; + + SetDatabase(configuration.MySql.Authentication, settings, settings.AuthenticationDatabaseName, databasePassword); + SetDatabase(configuration.MySql.Shard, settings, settings.ShardDatabaseName, databasePassword); + SetDatabase(configuration.MySql.World, settings, settings.WorldDatabaseName, databasePassword); + + configuration.Offline.AutoApplyDatabaseUpdates = true; + configuration.Offline.AutoUpdateWorldDatabase = false; + configuration.Offline.AutoApplyWorldCustomizations = false; + configuration.Offline.AutoServerUpdateCheck = false; + configuration.DDD.EnableDATPatching = false; + configuration.DDD.PrecacheCompressedDATFiles = false; + return configuration; + } + + public async Task WriteAsync(LauncherSettings settings, CancellationToken cancellationToken = default) + { + Directory.CreateDirectory(settings.RuntimeDirectory); + var temporaryPath = settings.ConfigPath + "." + Guid.NewGuid().ToString("N") + ".tmp"; + try + { + await using (var stream = new FileStream(temporaryPath, FileMode.CreateNew, FileAccess.Write, FileShare.None)) + await JsonSerializer.SerializeAsync(stream, Create(settings), ConfigManager.SerializerOptions, cancellationToken); + File.Move(temporaryPath, settings.ConfigPath, true); + FilePermissionHardener.RestrictToCurrentUser(settings.ConfigPath); + } + finally + { + if (File.Exists(temporaryPath)) + File.Delete(temporaryPath); + } + } + + private static void SetDatabase(MySqlConfiguration target, LauncherSettings settings, string database, string password) + { + target.Host = settings.DatabaseHost; + target.Port = settings.DatabasePort; + target.Database = database; + target.Username = settings.DatabaseUsername; + target.Password = password; + target.EnableDetailedErrors = false; + target.EnableSensitiveDataLogging = false; + } +} diff --git a/Source/ACE.SinglePlayer/Database/DatabaseBootstrapper.cs b/Source/ACE.SinglePlayer/Database/DatabaseBootstrapper.cs new file mode 100644 index 0000000000..54a52292b2 --- /dev/null +++ b/Source/ACE.SinglePlayer/Database/DatabaseBootstrapper.cs @@ -0,0 +1,68 @@ +using MySqlConnector; + +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Database; + +public sealed class DatabaseBootstrapper +{ + private readonly DatabaseConnectionFactory connectionFactory; + + public DatabaseBootstrapper(DatabaseConnectionFactory connectionFactory) + { + this.connectionFactory = connectionFactory; + } + + public async Task BootstrapAsync(LauncherSettings settings, string worldSqlPath, CancellationToken cancellationToken) + { + var baseDirectory = Path.Combine(Path.GetDirectoryName(settings.ServerExePath)!, "DatabaseSetupScripts", "Base"); + var authenticationSql = Path.Combine(baseDirectory, "AuthenticationBase.sql"); + var shardSql = Path.Combine(baseDirectory, "ShardBase.sql"); + if (!File.Exists(authenticationSql) || !File.Exists(shardSql)) + throw new FileNotFoundException("ACE authentication and shard base SQL files were not found under Server\\DatabaseSetupScripts\\Base."); + + await using var connection = connectionFactory.Create(settings); + await connection.OpenAsync(cancellationToken); + + await ApplyIfMissingAsync(connection, settings.AuthenticationDatabaseName, "account", authenticationSql, "ace_auth", cancellationToken); + await ApplyIfMissingAsync(connection, settings.ShardDatabaseName, "character", shardSql, "ace_shard", cancellationToken); + + if (!await ExternalMariaDbRuntime.SchemaExistsAsync(connection, settings.WorldDatabaseName, cancellationToken)) + { + if (!File.Exists(worldSqlPath)) + throw new FileNotFoundException("Select an ACE world-database SQL package before initializing a missing world database.", worldSqlPath); + await ApplyIfMissingAsync(connection, settings.WorldDatabaseName, "weenie", worldSqlPath, "ace_world", cancellationToken); + } + else if (!await ExternalMariaDbRuntime.TableExistsAsync(connection, settings.WorldDatabaseName, "weenie", cancellationToken)) + { + throw new InvalidOperationException($"Database '{settings.WorldDatabaseName}' exists but is partial. It was not modified."); + } + } + + private static async Task ApplyIfMissingAsync(MySqlConnection connection, string database, string coreTable, + string scriptPath, string defaultDatabase, CancellationToken cancellationToken) + { + if (await ExternalMariaDbRuntime.SchemaExistsAsync(connection, database, cancellationToken)) + { + if (!await ExternalMariaDbRuntime.TableExistsAsync(connection, database, coreTable, cancellationToken)) + throw new InvalidOperationException($"Database '{database}' exists but is partial. It was not modified."); + return; + } + + var sql = await File.ReadAllTextAsync(scriptPath, cancellationToken); + sql = sql.Replace($"`{defaultDatabase}`", $"`{database.Replace("`", "``")}`", StringComparison.Ordinal); + await using var command = new MySqlCommand(sql, connection) { CommandTimeout = 300 }; + try + { + await command.ExecuteNonQueryAsync(cancellationToken); + } + catch (Exception ex) + { + throw new InvalidOperationException( + $"Initializing '{database}' failed. The database may now be partial; correct or remove it before retrying. {ex.Message}", ex); + } + + if (!await ExternalMariaDbRuntime.TableExistsAsync(connection, database, coreTable, cancellationToken)) + throw new InvalidOperationException($"The SQL package completed but '{database}.{coreTable}' is still missing."); + } +} diff --git a/Source/ACE.SinglePlayer/Database/DatabaseConnectionFactory.cs b/Source/ACE.SinglePlayer/Database/DatabaseConnectionFactory.cs new file mode 100644 index 0000000000..bec8324231 --- /dev/null +++ b/Source/ACE.SinglePlayer/Database/DatabaseConnectionFactory.cs @@ -0,0 +1,35 @@ +using MySqlConnector; + +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Database; + +public sealed class DatabaseConnectionFactory +{ + private readonly ISecretProtector secretProtector; + + public DatabaseConnectionFactory(ISecretProtector secretProtector) + { + this.secretProtector = secretProtector; + } + + public MySqlConnection Create(LauncherSettings settings, string? database = null) + { + var builder = new MySqlConnectionStringBuilder + { + Server = settings.DatabaseHost, + Port = settings.DatabasePort, + UserID = settings.DatabaseUsername, + Password = secretProtector.Unprotect(settings.ProtectedDatabasePassword), + Database = database ?? string.Empty, + SslMode = MySqlSslMode.None, + AllowPublicKeyRetrieval = true, + AllowUserVariables = true, + ConnectionTimeout = 5, + DefaultCommandTimeout = 120, + ApplicationName = "ACE.SinglePlayer" + }; + return new MySqlConnection(builder.ConnectionString); + } +} diff --git a/Source/ACE.SinglePlayer/Database/DatabaseRuntimeFactory.cs b/Source/ACE.SinglePlayer/Database/DatabaseRuntimeFactory.cs new file mode 100644 index 0000000000..a8eab02f5b --- /dev/null +++ b/Source/ACE.SinglePlayer/Database/DatabaseRuntimeFactory.cs @@ -0,0 +1,24 @@ +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Database; + +public sealed class DatabaseRuntimeFactory +{ + private readonly DatabaseConnectionFactory connectionFactory; + private readonly LauncherLog log; + + public DatabaseRuntimeFactory(DatabaseConnectionFactory connectionFactory, LauncherLog log) + { + this.connectionFactory = connectionFactory; + this.log = log; + } + + public IDatabaseRuntime Create(LauncherSettings settings) + { + var external = new ExternalMariaDbRuntime(connectionFactory); + return settings.DatabaseMode == DatabaseMode.ManagedExperimental + ? new ManagedMariaDbRuntime(external, log) + : external; + } +} diff --git a/Source/ACE.SinglePlayer/Database/ExternalMariaDbRuntime.cs b/Source/ACE.SinglePlayer/Database/ExternalMariaDbRuntime.cs new file mode 100644 index 0000000000..14d2554a3c --- /dev/null +++ b/Source/ACE.SinglePlayer/Database/ExternalMariaDbRuntime.cs @@ -0,0 +1,80 @@ +using MySqlConnector; + +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Database; + +public sealed class ExternalMariaDbRuntime : IDatabaseRuntime +{ + private static readonly (Func Database, string Table)[] RequiredSchemas = + { + (settings => settings.AuthenticationDatabaseName, "account"), + (settings => settings.ShardDatabaseName, "character"), + (settings => settings.WorldDatabaseName, "weenie") + }; + + private readonly DatabaseConnectionFactory connectionFactory; + + public ExternalMariaDbRuntime(DatabaseConnectionFactory connectionFactory) + { + this.connectionFactory = connectionFactory; + } + + public bool IsManaged => false; + + public async Task StartAsync(LauncherSettings settings, CancellationToken cancellationToken) + { + var result = await ValidateAsync(settings, cancellationToken); + if (!result.IsValid) + throw new InvalidOperationException(result.Message); + } + + public async Task ValidateAsync(LauncherSettings settings, CancellationToken cancellationToken) + { + try + { + await using var connection = connectionFactory.Create(settings); + await connection.OpenAsync(cancellationToken); + + foreach (var required in RequiredSchemas) + { + var database = required.Database(settings); + if (!await SchemaExistsAsync(connection, database, cancellationToken)) + return new(false, $"Database '{database}' is missing. Use Initialize Database during setup."); + if (!await TableExistsAsync(connection, database, required.Table, cancellationToken)) + return new(false, $"Database '{database}' is only partially initialized; required table '{required.Table}' is missing."); + } + + return new(true, "MariaDB/MySQL is reachable and all three ACE databases contain their required core tables."); + } + catch (MySqlException ex) + { + return new(false, $"MariaDB/MySQL connection failed: {ex.Message}"); + } + catch (TimeoutException ex) + { + return new(false, ex.Message); + } + } + + public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask; + + public ValueTask DisposeAsync() => ValueTask.CompletedTask; + + internal static async Task SchemaExistsAsync(MySqlConnection connection, string database, CancellationToken cancellationToken) + { + await using var command = new MySqlCommand( + "SELECT COUNT(*) FROM information_schema.schemata WHERE schema_name = @database", connection); + command.Parameters.AddWithValue("@database", database); + return Convert.ToInt32(await command.ExecuteScalarAsync(cancellationToken)) == 1; + } + + internal static async Task TableExistsAsync(MySqlConnection connection, string database, string table, CancellationToken cancellationToken) + { + await using var command = new MySqlCommand( + "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = @database AND table_name = @table", connection); + command.Parameters.AddWithValue("@database", database); + command.Parameters.AddWithValue("@table", table); + return Convert.ToInt32(await command.ExecuteScalarAsync(cancellationToken)) == 1; + } +} diff --git a/Source/ACE.SinglePlayer/Database/IDatabaseRuntime.cs b/Source/ACE.SinglePlayer/Database/IDatabaseRuntime.cs new file mode 100644 index 0000000000..62b20c70e5 --- /dev/null +++ b/Source/ACE.SinglePlayer/Database/IDatabaseRuntime.cs @@ -0,0 +1,13 @@ +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Database; + +public sealed record DatabaseValidationResult(bool IsValid, string Message); + +public interface IDatabaseRuntime : IAsyncDisposable +{ + bool IsManaged { get; } + Task StartAsync(LauncherSettings settings, CancellationToken cancellationToken); + Task ValidateAsync(LauncherSettings settings, CancellationToken cancellationToken); + Task StopAsync(CancellationToken cancellationToken); +} diff --git a/Source/ACE.SinglePlayer/Database/ManagedMariaDbRuntime.cs b/Source/ACE.SinglePlayer/Database/ManagedMariaDbRuntime.cs new file mode 100644 index 0000000000..e26ea2999d --- /dev/null +++ b/Source/ACE.SinglePlayer/Database/ManagedMariaDbRuntime.cs @@ -0,0 +1,98 @@ +using System.Diagnostics; + +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Database; + +public sealed class ManagedMariaDbRuntime : IDatabaseRuntime +{ + private readonly ExternalMariaDbRuntime validator; + private readonly LauncherLog log; + private Process? process; + + public ManagedMariaDbRuntime(ExternalMariaDbRuntime validator, LauncherLog log) + { + this.validator = validator; + this.log = log; + } + + public bool IsManaged => true; + + public async Task StartAsync(LauncherSettings settings, CancellationToken cancellationToken) + { + if (process is { HasExited: false }) + return; + if (!File.Exists(settings.ManagedDatabaseExePath)) + throw new FileNotFoundException("The configured mariadbd.exe was not found.", settings.ManagedDatabaseExePath); + + var dataDirectory = Path.Combine(settings.RuntimeDirectory, "Database"); + if (!Directory.Exists(Path.Combine(dataDirectory, "mysql"))) + throw new InvalidOperationException( + "Managed MariaDB is experimental and its data directory is not initialized. Initialize this exact MariaDB distribution's data directory first, then retry. No database binaries are downloaded by the launcher."); + + var startInfo = new ProcessStartInfo + { + FileName = settings.ManagedDatabaseExePath, + WorkingDirectory = Path.GetDirectoryName(settings.ManagedDatabaseExePath)!, + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true + }; + startInfo.ArgumentList.Add($"--datadir={dataDirectory}"); + startInfo.ArgumentList.Add($"--port={settings.DatabasePort}"); + startInfo.ArgumentList.Add("--bind-address=127.0.0.1"); + startInfo.ArgumentList.Add("--console"); + + process = new Process { StartInfo = startInfo, EnableRaisingEvents = true }; + process.OutputDataReceived += (_, args) => { if (args.Data is not null) log.Write("[MariaDB] " + args.Data); }; + process.ErrorDataReceived += (_, args) => { if (args.Data is not null) log.Write("[MariaDB] " + args.Data); }; + if (!process.Start()) + throw new InvalidOperationException("MariaDB did not start."); + process.BeginOutputReadLine(); + process.BeginErrorReadLine(); + + var deadline = DateTime.UtcNow.AddSeconds(45); + DatabaseValidationResult result; + do + { + cancellationToken.ThrowIfCancellationRequested(); + if (process.HasExited) + throw new InvalidOperationException($"Managed MariaDB exited unexpectedly (exit code {process.ExitCode})."); + result = await validator.ValidateAsync(settings, cancellationToken); + if (result.IsValid) + return; + await Task.Delay(500, cancellationToken); + } while (DateTime.UtcNow < deadline); + + throw new TimeoutException("Managed MariaDB started but did not become ready within 45 seconds. " + result.Message); + } + + public Task ValidateAsync(LauncherSettings settings, CancellationToken cancellationToken) => + validator.ValidateAsync(settings, cancellationToken); + + public async Task StopAsync(CancellationToken cancellationToken) + { + if (process is null || process.HasExited) + return; + + process.CloseMainWindow(); + try + { + await process.WaitForExitAsync(cancellationToken).WaitAsync(TimeSpan.FromSeconds(10), cancellationToken); + } + catch (TimeoutException) + { + log.Write("Managed MariaDB did not accept a graceful close; stopping the launcher-owned process."); + process.Kill(entireProcessTree: true); + await process.WaitForExitAsync(cancellationToken); + } + } + + public async ValueTask DisposeAsync() + { + await StopAsync(CancellationToken.None); + process?.Dispose(); + } +} diff --git a/Source/ACE.SinglePlayer/Infrastructure/FilePermissionHardener.cs b/Source/ACE.SinglePlayer/Infrastructure/FilePermissionHardener.cs new file mode 100644 index 0000000000..b8786d0257 --- /dev/null +++ b/Source/ACE.SinglePlayer/Infrastructure/FilePermissionHardener.cs @@ -0,0 +1,21 @@ +using System.Security.AccessControl; +using System.Security.Principal; + +namespace ACE.SinglePlayer.Infrastructure; + +public static class FilePermissionHardener +{ + public static void RestrictToCurrentUser(string path) + { + if (!OperatingSystem.IsWindows()) + return; + + var user = WindowsIdentity.GetCurrent().User + ?? throw new InvalidOperationException("The current Windows user has no security identifier."); + var security = new FileSecurity(); + security.SetOwner(user); + security.SetAccessRuleProtection(isProtected: true, preserveInheritance: false); + security.AddAccessRule(new FileSystemAccessRule(user, FileSystemRights.FullControl, AccessControlType.Allow)); + new FileInfo(path).SetAccessControl(security); + } +} diff --git a/Source/ACE.SinglePlayer/Infrastructure/LauncherLog.cs b/Source/ACE.SinglePlayer/Infrastructure/LauncherLog.cs new file mode 100644 index 0000000000..53287b6d21 --- /dev/null +++ b/Source/ACE.SinglePlayer/Infrastructure/LauncherLog.cs @@ -0,0 +1,33 @@ +namespace ACE.SinglePlayer.Infrastructure; + +public sealed class LauncherLog : IDisposable +{ + private readonly object sync = new(); + private readonly StreamWriter writer; + + public LauncherLog(string logsDirectory) + { + Directory.CreateDirectory(logsDirectory); + LogPath = Path.Combine(logsDirectory, "ACE.SinglePlayer.log"); + writer = new StreamWriter(new FileStream(LogPath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite)) + { + AutoFlush = true + }; + } + + public string LogPath { get; } + public event Action? MessageWritten; + + public void Write(string message) + { + if (string.IsNullOrWhiteSpace(message)) + return; + + var line = $"{DateTimeOffset.Now:yyyy-MM-dd HH:mm:ss zzz} {message}"; + lock (sync) + writer.WriteLine(line); + MessageWritten?.Invoke(line); + } + + public void Dispose() => writer.Dispose(); +} diff --git a/Source/ACE.SinglePlayer/Infrastructure/SecretProtector.cs b/Source/ACE.SinglePlayer/Infrastructure/SecretProtector.cs new file mode 100644 index 0000000000..f2c3137bce --- /dev/null +++ b/Source/ACE.SinglePlayer/Infrastructure/SecretProtector.cs @@ -0,0 +1,96 @@ +using System.ComponentModel; +using System.Runtime.InteropServices; +using System.Security.Cryptography; +using System.Text; + +namespace ACE.SinglePlayer.Infrastructure; + +public interface ISecretProtector +{ + string Protect(string value); + string Unprotect(string protectedValue); +} + +public sealed class SecretProtector : ISecretProtector +{ + private const int CryptprotectUiForbidden = 0x1; + + public string Protect(string value) + { + ArgumentNullException.ThrowIfNull(value); + return Convert.ToBase64String(Transform(Encoding.UTF8.GetBytes(value), protect: true)); + } + + public string Unprotect(string protectedValue) + { + ArgumentNullException.ThrowIfNull(protectedValue); + if (protectedValue.Length == 0) + return string.Empty; + + return Encoding.UTF8.GetString(Transform(Convert.FromBase64String(protectedValue), protect: false)); + } + + public static string GeneratePassword() + { + var bytes = RandomNumberGenerator.GetBytes(32); + return Convert.ToBase64String(bytes).TrimEnd('=').Replace('+', '-').Replace('/', '_'); + } + + private static byte[] Transform(byte[] input, bool protect) + { + if (!OperatingSystem.IsWindows()) + throw new PlatformNotSupportedException("Windows DPAPI is required to protect launcher secrets."); + + var inputBlob = new DataBlob(); + var outputBlob = new DataBlob(); + try + { + inputBlob.Size = input.Length; + inputBlob.Data = Marshal.AllocHGlobal(input.Length); + Marshal.Copy(input, 0, inputBlob.Data, input.Length); + + var succeeded = protect + ? CryptProtectData(ref inputBlob, null, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, CryptprotectUiForbidden, ref outputBlob) + : CryptUnprotectData(ref inputBlob, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, CryptprotectUiForbidden, ref outputBlob); + + if (!succeeded) + throw new Win32Exception(Marshal.GetLastWin32Error()); + + var result = new byte[outputBlob.Size]; + Marshal.Copy(outputBlob.Data, result, 0, outputBlob.Size); + return result; + } + finally + { + if (inputBlob.Data != IntPtr.Zero) + { + for (var i = 0; i < input.Length; i++) + Marshal.WriteByte(inputBlob.Data, i, 0); + Marshal.FreeHGlobal(inputBlob.Data); + } + + if (outputBlob.Data != IntPtr.Zero) + LocalFree(outputBlob.Data); + } + } + + [StructLayout(LayoutKind.Sequential)] + private struct DataBlob + { + public int Size; + public IntPtr Data; + } + + [DllImport("crypt32.dll", SetLastError = true, CharSet = CharSet.Unicode)] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool CryptProtectData(ref DataBlob dataIn, string? description, IntPtr optionalEntropy, + IntPtr reserved, IntPtr promptStruct, int flags, ref DataBlob dataOut); + + [DllImport("crypt32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool CryptUnprotectData(ref DataBlob dataIn, IntPtr description, IntPtr optionalEntropy, + IntPtr reserved, IntPtr promptStruct, int flags, ref DataBlob dataOut); + + [DllImport("kernel32.dll")] + private static extern IntPtr LocalFree(IntPtr memory); +} diff --git a/Source/ACE.SinglePlayer/Infrastructure/SettingsStore.cs b/Source/ACE.SinglePlayer/Infrastructure/SettingsStore.cs new file mode 100644 index 0000000000..ef486f5385 --- /dev/null +++ b/Source/ACE.SinglePlayer/Infrastructure/SettingsStore.cs @@ -0,0 +1,64 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Infrastructure; + +public sealed class SettingsStore +{ + private static readonly JsonSerializerOptions JsonOptions = new() + { + WriteIndented = true, + PropertyNameCaseInsensitive = true, + Converters = { new JsonStringEnumConverter() } + }; + + public SettingsStore(string? settingsPath = null) + { + SettingsPath = settingsPath ?? Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), + "ACESinglePlayer", "settings.json"); + } + + public string SettingsPath { get; } + + public bool Exists => File.Exists(SettingsPath); + + public async Task LoadAsync(CancellationToken cancellationToken = default) + { + if (!File.Exists(SettingsPath)) + return null; + + await using var stream = File.OpenRead(SettingsPath); + var settings = await JsonSerializer.DeserializeAsync(stream, JsonOptions, cancellationToken); + if (settings is null) + throw new InvalidDataException("The launcher settings file is empty or invalid."); + if (settings.SettingsVersion > LauncherSettings.CurrentVersion) + throw new InvalidDataException($"Settings version {settings.SettingsVersion} is newer than this launcher supports."); + + settings.SettingsVersion = LauncherSettings.CurrentVersion; + return settings; + } + + public async Task SaveAsync(LauncherSettings settings, CancellationToken cancellationToken = default) + { + settings.SettingsVersion = LauncherSettings.CurrentVersion; + var directory = Path.GetDirectoryName(SettingsPath)!; + Directory.CreateDirectory(directory); + + var temporaryPath = SettingsPath + "." + Guid.NewGuid().ToString("N") + ".tmp"; + try + { + await using (var stream = new FileStream(temporaryPath, FileMode.CreateNew, FileAccess.Write, FileShare.None)) + await JsonSerializer.SerializeAsync(stream, settings, JsonOptions, cancellationToken); + File.Move(temporaryPath, SettingsPath, true); + FilePermissionHardener.RestrictToCurrentUser(SettingsPath); + } + finally + { + if (File.Exists(temporaryPath)) + File.Delete(temporaryPath); + } + } +} diff --git a/Source/ACE.SinglePlayer/Infrastructure/SetupValidator.cs b/Source/ACE.SinglePlayer/Infrastructure/SetupValidator.cs new file mode 100644 index 0000000000..bde511026d --- /dev/null +++ b/Source/ACE.SinglePlayer/Infrastructure/SetupValidator.cs @@ -0,0 +1,68 @@ +using System.Net; + +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Infrastructure; + +public sealed record ValidationResult(bool IsValid, IReadOnlyList Errors) +{ + public string Message => string.Join(Environment.NewLine, Errors); +} + +public static class SetupValidator +{ + public static readonly string[] RequiredDatFiles = + { + "client_cell_1.dat", + "client_portal.dat", + "client_local_English.dat" + }; + + public static ValidationResult Validate(LauncherSettings settings) + { + var errors = new List(); + if (!File.Exists(settings.ClientExePath)) + errors.Add("Select a valid acclient.exe file."); + else if (!string.Equals(Path.GetFileName(settings.ClientExePath), "acclient.exe", StringComparison.OrdinalIgnoreCase)) + errors.Add("The selected client executable must be acclient.exe."); + + if (!File.Exists(settings.ServerExePath)) + errors.Add("Select a published ACE.Server executable."); + + if (!Directory.Exists(settings.DatFilesDirectory)) + errors.Add("Select the directory containing the Asheron's Call DAT files."); + else + foreach (var file in RequiredDatFiles) + if (!File.Exists(Path.Combine(settings.DatFilesDirectory, file))) + errors.Add($"The DAT directory is missing {file}."); + + if (string.IsNullOrWhiteSpace(settings.ModsDirectory)) + errors.Add("Select a Mods directory."); + if (string.IsNullOrWhiteSpace(settings.RuntimeDirectory)) + errors.Add("Select a Runtime directory."); + if (!IPAddress.TryParse(settings.Host, out var host) || !IPAddress.IsLoopback(host)) + errors.Add("The standard single-player host must be a loopback address (127.0.0.1)."); + if (settings.Port is 0 or ushort.MaxValue) + errors.Add("Choose a server port between 1 and 65534 (ACE also uses the next port)."); + if (string.IsNullOrWhiteSpace(settings.AccountName)) + errors.Add("Enter a persistent local account name."); + if (string.IsNullOrWhiteSpace(settings.ProtectedAccountPassword)) + errors.Add("The persistent local account password has not been generated."); + if (string.IsNullOrWhiteSpace(settings.DatabaseHost) || settings.DatabasePort == 0) + errors.Add("Enter valid MariaDB/MySQL connection information."); + if (string.IsNullOrWhiteSpace(settings.DatabaseUsername)) + errors.Add("Enter the MariaDB/MySQL username."); + if (settings.DatabaseMode == DatabaseMode.ManagedExperimental && !File.Exists(settings.ManagedDatabaseExePath)) + errors.Add("Select mariadbd.exe for experimental managed database mode."); + + return new ValidationResult(errors.Count == 0, errors); + } + + public static string? DetectDatDirectory(string clientExePath) + { + var directory = Path.GetDirectoryName(clientExePath); + return directory is not null && RequiredDatFiles.All(file => File.Exists(Path.Combine(directory, file))) + ? directory + : null; + } +} diff --git a/Source/ACE.SinglePlayer/Infrastructure/SingleInstance.cs b/Source/ACE.SinglePlayer/Infrastructure/SingleInstance.cs new file mode 100644 index 0000000000..95132edbb4 --- /dev/null +++ b/Source/ACE.SinglePlayer/Infrastructure/SingleInstance.cs @@ -0,0 +1,21 @@ +namespace ACE.SinglePlayer.Infrastructure; + +public sealed class SingleInstance : IDisposable +{ + private readonly Mutex mutex; + + public SingleInstance(string name) + { + mutex = new Mutex(initiallyOwned: true, name, out var createdNew); + IsPrimary = createdNew; + } + + public bool IsPrimary { get; } + + public void Dispose() + { + if (IsPrimary) + mutex.ReleaseMutex(); + mutex.Dispose(); + } +} diff --git a/Source/ACE.SinglePlayer/Models/LauncherSettings.cs b/Source/ACE.SinglePlayer/Models/LauncherSettings.cs new file mode 100644 index 0000000000..a17f16465e --- /dev/null +++ b/Source/ACE.SinglePlayer/Models/LauncherSettings.cs @@ -0,0 +1,73 @@ +using System.Text.Json.Serialization; + +namespace ACE.SinglePlayer.Models; + +public enum DatabaseMode +{ + External, + ManagedExperimental +} + +public enum ClientLaunchMode +{ + Vanilla, + Decal, + ChoriziteFuture +} + +public sealed class LauncherSettings +{ + public const int CurrentVersion = 1; + + public int SettingsVersion { get; set; } = CurrentVersion; + public string ClientExePath { get; set; } = string.Empty; + public string ServerExePath { get; set; } = string.Empty; + public string DatFilesDirectory { get; set; } = string.Empty; + public string ModsDirectory { get; set; } = string.Empty; + public string RuntimeDirectory { get; set; } = string.Empty; + public string Host { get; set; } = "127.0.0.1"; + public ushort Port { get; set; } = 9000; + public string AccountName { get; set; } = "singleplayer"; + public string ProtectedAccountPassword { get; set; } = string.Empty; + [JsonConverter(typeof(JsonStringEnumConverter))] + public DatabaseMode DatabaseMode { get; set; } = DatabaseMode.External; + public string DatabaseHost { get; set; } = "127.0.0.1"; + public ushort DatabasePort { get; set; } = 3306; + public string DatabaseUsername { get; set; } = "root"; + public string ProtectedDatabasePassword { get; set; } = string.Empty; + public string AuthenticationDatabaseName { get; set; } = "ace_auth"; + public string ShardDatabaseName { get; set; } = "ace_shard"; + public string WorldDatabaseName { get; set; } = "ace_world"; + public string ManagedDatabaseExePath { get; set; } = string.Empty; + public bool StopServerWhenGameExits { get; set; } = true; + public bool StopManagedDatabaseWhenLauncherExits { get; set; } = true; + public bool MinimizeLauncherAfterClientStarts { get; set; } = true; + public int ServerStartupTimeoutSeconds { get; set; } = 180; + [JsonConverter(typeof(JsonStringEnumConverter))] + public ClientLaunchMode ClientLaunchMode { get; set; } = ClientLaunchMode.Vanilla; + + [JsonIgnore] + public string ConfigPath => Path.Combine(RuntimeDirectory, "Config.js"); + + [JsonIgnore] + public string ReadyFilePath => Path.Combine(RuntimeDirectory, "ace-server.ready.json"); + + [JsonIgnore] + public string OwnershipPath => Path.Combine(RuntimeDirectory, "ace-server.process.json"); + + public static LauncherSettings CreateDefaults(string applicationDirectory) + { + var root = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "ACESinglePlayer"); + var packagedClient = Path.Combine(applicationDirectory, "Client", "acclient.exe"); + var packagedServer = Path.Combine(applicationDirectory, "Server", "ACE.Server.exe"); + + return new LauncherSettings + { + ClientExePath = File.Exists(packagedClient) ? packagedClient : string.Empty, + ServerExePath = File.Exists(packagedServer) ? packagedServer : string.Empty, + DatFilesDirectory = File.Exists(packagedClient) ? Path.GetDirectoryName(packagedClient)! : string.Empty, + ModsDirectory = Path.Combine(applicationDirectory, "Mods"), + RuntimeDirectory = Path.Combine(applicationDirectory, "Runtime") + }; + } +} diff --git a/Source/ACE.SinglePlayer/Models/LauncherState.cs b/Source/ACE.SinglePlayer/Models/LauncherState.cs new file mode 100644 index 0000000000..c87e86c0fe --- /dev/null +++ b/Source/ACE.SinglePlayer/Models/LauncherState.cs @@ -0,0 +1,15 @@ +namespace ACE.SinglePlayer.Models; + +public enum LauncherState +{ + NotConfigured, + CheckingDatabase, + StartingDatabase, + StartingServer, + WaitingForWorld, + Ready, + GameRunning, + Error +} + +public sealed record LauncherStateChanged(LauncherState State, string Message); diff --git a/Source/ACE.SinglePlayer/Networking/PortProbe.cs b/Source/ACE.SinglePlayer/Networking/PortProbe.cs new file mode 100644 index 0000000000..3b6f08c1da --- /dev/null +++ b/Source/ACE.SinglePlayer/Networking/PortProbe.cs @@ -0,0 +1,38 @@ +using System.Net; +using System.Net.NetworkInformation; + +namespace ACE.SinglePlayer.Networking; + +public interface IPortProbe +{ + bool IsListening(IPAddress address, int port); + Task WaitUntilListeningAsync(IPAddress address, int port, TimeSpan timeout, CancellationToken cancellationToken); +} + +public sealed class UdpPortProbe : IPortProbe +{ + public bool IsListening(IPAddress address, int port) + { + return IPGlobalProperties.GetIPGlobalProperties() + .GetActiveUdpListeners() + .Any(endpoint => endpoint.Port == port && + (endpoint.Address.Equals(address) || + (IPAddress.IsLoopback(address) && IPAddress.IsLoopback(endpoint.Address)))); + } + + public async Task WaitUntilListeningAsync(IPAddress address, int port, TimeSpan timeout, CancellationToken cancellationToken) + { + using var timeoutSource = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); + timeoutSource.CancelAfter(timeout); + + try + { + while (!IsListening(address, port)) + await Task.Delay(100, timeoutSource.Token); + } + catch (OperationCanceledException) when (!cancellationToken.IsCancellationRequested) + { + throw new TimeoutException($"ACE.Server did not bind UDP {address}:{port} within {timeout.TotalSeconds:N0} seconds."); + } + } +} diff --git a/Source/ACE.SinglePlayer/Networking/ReadyFileMonitor.cs b/Source/ACE.SinglePlayer/Networking/ReadyFileMonitor.cs new file mode 100644 index 0000000000..67daafe246 --- /dev/null +++ b/Source/ACE.SinglePlayer/Networking/ReadyFileMonitor.cs @@ -0,0 +1,84 @@ +using System.Diagnostics; +using System.Net; +using System.Text.Json; + +namespace ACE.SinglePlayer.Networking; + +public sealed class ReadyFilePayload +{ + public int ProcessId { get; set; } + public string WorldName { get; set; } = string.Empty; + public string Host { get; set; } = string.Empty; + public ushort Port { get; set; } + public DateTime ReadyAtUtc { get; set; } +} + +public sealed class ReadyFileMonitor +{ + private readonly IPortProbe portProbe; + + public ReadyFileMonitor(IPortProbe portProbe) + { + this.portProbe = portProbe; + } + + public static ReadyFilePayload Validate(string json, int expectedProcessId, IPAddress expectedHost, int expectedPort) + { + var payload = JsonSerializer.Deserialize(json, new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true + }) ?? throw new InvalidDataException("The ACE.Server ready file is empty."); + + if (payload.ProcessId != expectedProcessId) + throw new InvalidDataException("The ready file belongs to a different ACE.Server process."); + if (!IPAddress.TryParse(payload.Host, out var actualHost) || !actualHost.Equals(expectedHost)) + throw new InvalidDataException("The ready file reports an unexpected server address."); + if (payload.Port != expectedPort) + throw new InvalidDataException("The ready file reports an unexpected server port."); + if (payload.ReadyAtUtc == default) + throw new InvalidDataException("The ready file has no valid readiness timestamp."); + + return payload; + } + + public async Task WaitAsync(string path, Process serverProcess, IPAddress host, int port, + TimeSpan timeout, CancellationToken cancellationToken) + { + using var timeoutSource = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); + timeoutSource.CancelAfter(timeout); + + try + { + while (true) + { + cancellationToken.ThrowIfCancellationRequested(); + if (serverProcess.HasExited) + throw new InvalidOperationException($"ACE.Server exited before the world became ready (exit code {serverProcess.ExitCode})."); + + if (File.Exists(path)) + { + try + { + var payload = Validate(await File.ReadAllTextAsync(path, timeoutSource.Token), serverProcess.Id, host, port); + if (portProbe.IsListening(host, port)) + return payload; + } + catch (IOException) + { + // The server may still be completing the atomic replacement. + } + catch (JsonException) + { + // A partially observed file is retried until timeout. + } + } + + await Task.Delay(100, timeoutSource.Token); + } + } + catch (OperationCanceledException) when (!cancellationToken.IsCancellationRequested) + { + throw new TimeoutException($"ACE.Server did not open the world within {timeout.TotalSeconds:N0} seconds."); + } + } +} diff --git a/Source/ACE.SinglePlayer/Orchestration/LauncherController.cs b/Source/ACE.SinglePlayer/Orchestration/LauncherController.cs new file mode 100644 index 0000000000..9f3d0ad302 --- /dev/null +++ b/Source/ACE.SinglePlayer/Orchestration/LauncherController.cs @@ -0,0 +1,194 @@ +using System.Net; + +using ACE.SinglePlayer.Configuration; +using ACE.SinglePlayer.Database; +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; +using ACE.SinglePlayer.Networking; +using ACE.SinglePlayer.Processes; + +namespace ACE.SinglePlayer.Orchestration; + +public sealed class LauncherController : IAsyncDisposable +{ + private readonly AceConfigurationWriter configurationWriter; + private readonly DatabaseRuntimeFactory databaseRuntimeFactory; + private readonly AceServerProcessManager serverManager; + private readonly ClientProcessManager clientManager; + private readonly ReadyFileMonitor readyFileMonitor; + private readonly ISecretProtector secretProtector; + private readonly LauncherLog log; + private readonly PlayOperationGate playGate = new(); + private CancellationTokenSource? runCancellation; + private IDatabaseRuntime? databaseRuntime; + + public LauncherController(LauncherSettings settings, AceConfigurationWriter configurationWriter, + DatabaseRuntimeFactory databaseRuntimeFactory, AceServerProcessManager serverManager, + ClientProcessManager clientManager, ReadyFileMonitor readyFileMonitor, + ISecretProtector secretProtector, LauncherLog log) + { + Settings = settings; + this.configurationWriter = configurationWriter; + this.databaseRuntimeFactory = databaseRuntimeFactory; + this.serverManager = serverManager; + this.clientManager = clientManager; + this.readyFileMonitor = readyFileMonitor; + this.secretProtector = secretProtector; + this.log = log; + State = new LauncherStateMachine(); + + serverManager.UnexpectedExit += exitCode => State.Set(LauncherState.Error, + $"ACE.Server stopped unexpectedly (exit code {exitCode}). Open Logs for details."); + clientManager.ClientExited += exitCode => { _ = HandleClientExitAsync(); }; + } + + public LauncherSettings Settings { get; private set; } + public LauncherStateMachine State { get; } + public bool IsServerRunning => serverManager.IsRunning; + public bool IsClientRunning => clientManager.IsRunning; + + public void UpdateSettings(LauncherSettings settings) + { + Settings = settings; + State.Set(LauncherState.Ready, "Configuration saved. Click Play."); + } + + public async Task PlayAsync(CancellationToken cancellationToken = default) + { + if (!playGate.TryEnter()) + { + log.Write("Ignored a duplicate Play request while startup is already in progress."); + return false; + } + + try + { + if (clientManager.IsRunning) + { + log.Write("Ignored Play because the game is already running."); + return false; + } + + var validation = SetupValidator.Validate(Settings); + if (!validation.IsValid) + { + State.Set(LauncherState.NotConfigured, validation.Message); + return false; + } + + Directory.CreateDirectory(Settings.RuntimeDirectory); + Directory.CreateDirectory(Settings.ModsDirectory); + runCancellation?.Dispose(); + runCancellation = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); + var token = runCancellation.Token; + + if (!serverManager.IsRunning) + { + databaseRuntime = databaseRuntimeFactory.Create(Settings); + State.Set(databaseRuntime.IsManaged ? LauncherState.StartingDatabase : LauncherState.CheckingDatabase, + databaseRuntime.IsManaged ? "Starting the launcher-managed MariaDB process..." : "Checking MariaDB/MySQL and ACE databases..."); + await databaseRuntime.StartAsync(Settings, token); + + await configurationWriter.WriteAsync(Settings, token); + State.Set(LauncherState.StartingServer, "Starting the local ACE world..."); + var server = await serverManager.TryAttachLauncherOwnedAsync(Settings, token) + ?? await serverManager.StartAsync(Settings, token); + + State.Set(LauncherState.WaitingForWorld, "Waiting for the world to open for logins..."); + await readyFileMonitor.WaitAsync(Settings.ReadyFilePath, server, IPAddress.Loopback, Settings.Port, + TimeSpan.FromSeconds(Settings.ServerStartupTimeoutSeconds), token); + } + + State.Set(LauncherState.Ready, "The local world is ready. Starting Asheron's Call..."); + var password = secretProtector.Unprotect(Settings.ProtectedAccountPassword); + await clientManager.StartAsync(Settings, password, token); + State.Set(LauncherState.GameRunning, "Asheron's Call is running."); + return true; + } + catch (OperationCanceledException) + { + State.Set(LauncherState.Ready, "Startup canceled."); + return false; + } + catch (Exception ex) + { + log.Write("Launch failed: " + ex); + State.Set(LauncherState.Error, ex.Message); + await StopInfrastructureAfterFailureAsync(); + return false; + } + finally + { + playGate.Exit(); + } + } + + public async Task StopAsync(CancellationToken cancellationToken = default) + { + await StopAsync(stopManagedDatabase: true, cancellationToken); + } + + public async Task ShutdownAsync(CancellationToken cancellationToken = default) + { + await StopAsync(Settings.StopManagedDatabaseWhenLauncherExits, cancellationToken); + } + + private async Task StopAsync(bool stopManagedDatabase, CancellationToken cancellationToken) + { + runCancellation?.Cancel(); + try + { + await clientManager.StopAsync(cancellationToken); + await serverManager.StopAsync(cancellationToken); + if (stopManagedDatabase && databaseRuntime?.IsManaged == true) + await databaseRuntime.StopAsync(cancellationToken); + State.Set(LauncherState.Ready, "Stopped. Click Play when you are ready."); + } + catch (Exception ex) + { + log.Write("Stop failed: " + ex); + State.Set(LauncherState.Error, ex.Message); + } + } + + private async Task HandleClientExitAsync() + { + try + { + if (Settings.StopServerWhenGameExits) + { + await serverManager.StopAsync(CancellationToken.None); + if (databaseRuntime?.IsManaged == true && Settings.StopManagedDatabaseWhenLauncherExits) + await databaseRuntime.StopAsync(CancellationToken.None); + } + State.Set(LauncherState.Ready, "Game closed. Click Play to return to your characters."); + } + catch (Exception ex) + { + log.Write("Cleanup after the game closed failed: " + ex); + State.Set(LauncherState.Error, ex.Message); + } + } + + private async Task StopInfrastructureAfterFailureAsync() + { + try + { + await serverManager.StopAsync(CancellationToken.None); + if (databaseRuntime?.IsManaged == true) + await databaseRuntime.StopAsync(CancellationToken.None); + } + catch (Exception stopException) + { + log.Write("Cleanup after failed launch also failed: " + stopException.Message); + } + } + + public async ValueTask DisposeAsync() + { + await ShutdownAsync(CancellationToken.None); + if (databaseRuntime is not null) + await databaseRuntime.DisposeAsync(); + runCancellation?.Dispose(); + } +} diff --git a/Source/ACE.SinglePlayer/Orchestration/LauncherStateMachine.cs b/Source/ACE.SinglePlayer/Orchestration/LauncherStateMachine.cs new file mode 100644 index 0000000000..d3747e49a0 --- /dev/null +++ b/Source/ACE.SinglePlayer/Orchestration/LauncherStateMachine.cs @@ -0,0 +1,17 @@ +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Orchestration; + +public sealed class LauncherStateMachine +{ + public LauncherState State { get; private set; } = LauncherState.NotConfigured; + public string Message { get; private set; } = "Complete setup to begin."; + public event Action? Changed; + + public void Set(LauncherState state, string message) + { + State = state; + Message = message; + Changed?.Invoke(new LauncherStateChanged(state, message)); + } +} diff --git a/Source/ACE.SinglePlayer/Orchestration/PlayOperationGate.cs b/Source/ACE.SinglePlayer/Orchestration/PlayOperationGate.cs new file mode 100644 index 0000000000..61db5fc0ac --- /dev/null +++ b/Source/ACE.SinglePlayer/Orchestration/PlayOperationGate.cs @@ -0,0 +1,12 @@ +namespace ACE.SinglePlayer.Orchestration; + +public sealed class PlayOperationGate +{ + private int active; + + public bool IsActive => Volatile.Read(ref active) != 0; + + public bool TryEnter() => Interlocked.CompareExchange(ref active, 1, 0) == 0; + + public void Exit() => Volatile.Write(ref active, 0); +} diff --git a/Source/ACE.SinglePlayer/Processes/AceServerProcessManager.cs b/Source/ACE.SinglePlayer/Processes/AceServerProcessManager.cs new file mode 100644 index 0000000000..9a1c1e0b5a --- /dev/null +++ b/Source/ACE.SinglePlayer/Processes/AceServerProcessManager.cs @@ -0,0 +1,173 @@ +using System.Diagnostics; + +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Processes; + +public sealed class AceServerProcessManager : IDisposable +{ + private readonly LauncherLog log; + private Process? process; + private ProcessOwnershipRecord? ownership; + private bool stopping; + private bool standardInputAvailable; + private string? ownershipPath; + + public AceServerProcessManager(LauncherLog log) + { + this.log = log; + } + + public bool IsRunning => process is { HasExited: false }; + public Process? Process => process; + public event Action? UnexpectedExit; + + public async Task TryAttachLauncherOwnedAsync(LauncherSettings settings, CancellationToken cancellationToken) + { + if (IsRunning) + return process; + + var record = await ProcessOwnershipRecord.LoadAsync(settings.OwnershipPath, cancellationToken); + if (record is null) + return null; + try + { + var candidate = System.Diagnostics.Process.GetProcessById(record.ProcessId); + if (candidate.HasExited || !record.Matches(candidate.Id, candidate.StartTime.ToUniversalTime(), settings.ServerExePath)) + { + candidate.Dispose(); + return null; + } + + process = candidate; + ownership = record; + ownershipPath = settings.OwnershipPath; + standardInputAvailable = false; + process.EnableRaisingEvents = true; + process.Exited += OnExited; + log.Write($"Attached to launcher-owned ACE.Server process {process.Id}."); + return process; + } + catch (ArgumentException) + { + return null; + } + catch (InvalidOperationException) + { + return null; + } + } + + public async Task StartAsync(LauncherSettings settings, CancellationToken cancellationToken) + { + if (IsRunning) + return process!; + + Directory.CreateDirectory(settings.RuntimeDirectory); + if (File.Exists(settings.ReadyFilePath)) + File.Delete(settings.ReadyFilePath); + + var startInfo = new ProcessStartInfo + { + FileName = settings.ServerExePath, + WorkingDirectory = Path.GetDirectoryName(settings.ServerExePath)!, + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + RedirectStandardInput = true, + CreateNoWindow = true + }; + startInfo.ArgumentList.Add("--config"); + startInfo.ArgumentList.Add(settings.ConfigPath); + startInfo.ArgumentList.Add("--ready-file"); + startInfo.ArgumentList.Add(settings.ReadyFilePath); + + process = new Process { StartInfo = startInfo, EnableRaisingEvents = true }; + process.OutputDataReceived += (_, args) => { if (args.Data is not null) log.Write("[ACE.Server] " + args.Data); }; + process.ErrorDataReceived += (_, args) => { if (args.Data is not null) log.Write("[ACE.Server error] " + args.Data); }; + process.Exited += OnExited; + if (!process.Start()) + throw new InvalidOperationException("Windows did not start ACE.Server."); + + standardInputAvailable = true; + ownershipPath = settings.OwnershipPath; + ownership = ProcessOwnershipRecord.FromProcess(process, settings.ServerExePath); + await ownership.SaveAsync(ownershipPath, cancellationToken); + process.BeginOutputReadLine(); + process.BeginErrorReadLine(); + log.Write($"Started launcher-owned ACE.Server process {process.Id}."); + return process; + } + + public async Task StopAsync(CancellationToken cancellationToken) + { + if (process is null || process.HasExited) + { + DeleteOwnershipRecord(); + return; + } + + stopping = true; + try + { + if (standardInputAvailable) + { + log.Write("Requesting graceful ACE.Server shutdown with its stop-now console command."); + await process.StandardInput.WriteLineAsync("stop-now"); + await process.StandardInput.FlushAsync(cancellationToken); + } + + try + { + await process.WaitForExitAsync(cancellationToken).WaitAsync(TimeSpan.FromSeconds(20), cancellationToken); + } + catch (TimeoutException) + { + if (IsStillOwnedProcess()) + { + log.Write("ACE.Server did not stop within 20 seconds; forcing only the verified launcher-owned process to exit."); + process.Kill(entireProcessTree: true); + await process.WaitForExitAsync(cancellationToken); + } + } + } + finally + { + DeleteOwnershipRecord(); + stopping = false; + } + } + + private bool IsStillOwnedProcess() + { + return process is { HasExited: false } && ownership is not null && + ownership.Matches(process.Id, process.StartTime.ToUniversalTime(), ownership.ExecutablePath); + } + + private void OnExited(object? sender, EventArgs e) + { + if (sender is not Process exited) + return; + log.Write($"ACE.Server process {exited.Id} exited with code {exited.ExitCode}."); + DeleteOwnershipRecord(); + if (!stopping) + UnexpectedExit?.Invoke(exited.ExitCode); + } + + private void DeleteOwnershipRecord() + { + if (ownershipPath is null || !File.Exists(ownershipPath)) + return; + try + { + File.Delete(ownershipPath); + } + catch (IOException) + { + // A later startup will validate the PID and start time before trusting the record. + } + } + + public void Dispose() => process?.Dispose(); +} diff --git a/Source/ACE.SinglePlayer/Processes/ClientProcessManager.cs b/Source/ACE.SinglePlayer/Processes/ClientProcessManager.cs new file mode 100644 index 0000000000..e80ee8e9b7 --- /dev/null +++ b/Source/ACE.SinglePlayer/Processes/ClientProcessManager.cs @@ -0,0 +1,76 @@ +using System.Diagnostics; + +using ACE.SinglePlayer.ClientLaunch; +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Processes; + +public sealed class ClientProcessManager : IDisposable +{ + private readonly IReadOnlyDictionary providers; + private readonly LauncherLog log; + private Process? process; + private bool stopping; + + public ClientProcessManager(IEnumerable providers, LauncherLog log) + { + this.providers = providers.ToDictionary(provider => provider.Mode); + this.log = log; + } + + public bool IsRunning => process is { HasExited: false }; + public event Action? ClientExited; + + public async Task StartAsync(LauncherSettings settings, string accountPassword, CancellationToken cancellationToken) + { + if (IsRunning) + throw new InvalidOperationException("The game is already running."); + if (!providers.TryGetValue(settings.ClientLaunchMode, out var provider)) + throw new NotSupportedException($"Client launch mode '{settings.ClientLaunchMode}' is not implemented."); + if (!provider.IsAvailable(out var reason)) + throw new InvalidOperationException(reason); + + process = await provider.LaunchAsync(new ClientLaunchRequest(settings, accountPassword), cancellationToken); + process.EnableRaisingEvents = true; + process.Exited += OnExited; + log.Write($"Started acclient.exe process {process.Id} using {provider.DisplayName} mode."); + return process; + } + + public async Task StopAsync(CancellationToken cancellationToken) + { + if (process is null || process.HasExited) + return; + + stopping = true; + try + { + process.CloseMainWindow(); + try + { + await process.WaitForExitAsync(cancellationToken).WaitAsync(TimeSpan.FromSeconds(10), cancellationToken); + } + catch (TimeoutException) + { + process.Kill(entireProcessTree: true); + await process.WaitForExitAsync(cancellationToken); + } + } + finally + { + stopping = false; + } + } + + private void OnExited(object? sender, EventArgs e) + { + if (sender is not Process exited) + return; + log.Write($"acclient.exe process {exited.Id} exited with code {exited.ExitCode}."); + if (!stopping) + ClientExited?.Invoke(exited.ExitCode); + } + + public void Dispose() => process?.Dispose(); +} diff --git a/Source/ACE.SinglePlayer/Processes/ProcessOwnershipRecord.cs b/Source/ACE.SinglePlayer/Processes/ProcessOwnershipRecord.cs new file mode 100644 index 0000000000..1e70127c97 --- /dev/null +++ b/Source/ACE.SinglePlayer/Processes/ProcessOwnershipRecord.cs @@ -0,0 +1,50 @@ +using System.Diagnostics; +using System.Text.Json; + +namespace ACE.SinglePlayer.Processes; + +public sealed class ProcessOwnershipRecord +{ + public int ProcessId { get; set; } + public DateTime StartTimeUtc { get; set; } + public string ExecutablePath { get; set; } = string.Empty; + + public bool Matches(int processId, DateTime startTimeUtc, string executablePath) + { + return ProcessId == processId && + Math.Abs((StartTimeUtc - startTimeUtc).TotalSeconds) < 1 && + string.Equals(Path.GetFullPath(ExecutablePath), Path.GetFullPath(executablePath), StringComparison.OrdinalIgnoreCase); + } + + public static ProcessOwnershipRecord FromProcess(Process process, string executablePath) => new() + { + ProcessId = process.Id, + StartTimeUtc = process.StartTime.ToUniversalTime(), + ExecutablePath = Path.GetFullPath(executablePath) + }; + + public static async Task LoadAsync(string path, CancellationToken cancellationToken) + { + if (!File.Exists(path)) + return null; + await using var stream = File.OpenRead(path); + return await JsonSerializer.DeserializeAsync(stream, cancellationToken: cancellationToken); + } + + public async Task SaveAsync(string path, CancellationToken cancellationToken) + { + Directory.CreateDirectory(Path.GetDirectoryName(path)!); + var temporaryPath = path + "." + Guid.NewGuid().ToString("N") + ".tmp"; + try + { + await using (var stream = new FileStream(temporaryPath, FileMode.CreateNew, FileAccess.Write, FileShare.None)) + await JsonSerializer.SerializeAsync(stream, this, cancellationToken: cancellationToken); + File.Move(temporaryPath, path, true); + } + finally + { + if (File.Exists(temporaryPath)) + File.Delete(temporaryPath); + } + } +} diff --git a/Source/ACE.SinglePlayer/Program.cs b/Source/ACE.SinglePlayer/Program.cs new file mode 100644 index 0000000000..fc3abbc47a --- /dev/null +++ b/Source/ACE.SinglePlayer/Program.cs @@ -0,0 +1,99 @@ +using ACE.SinglePlayer.ClientLaunch; +using ACE.SinglePlayer.Configuration; +using ACE.SinglePlayer.Database; +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; +using ACE.SinglePlayer.Networking; +using ACE.SinglePlayer.Orchestration; +using ACE.SinglePlayer.Processes; +using ACE.SinglePlayer.UI; + +namespace ACE.SinglePlayer; + +internal static class Program +{ + [STAThread] + private static void Main() + { + ApplicationConfiguration.Initialize(); + try + { + RunApplication(); + } + catch (Exception ex) + { + WriteStartupFailure(ex); + MessageBox.Show( + "ACE Single Player could not start. Details were written to the launcher log.\r\n\r\n" + ex.Message, + "ACE Single Player startup error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private static void RunApplication() + { + using var instance = new SingleInstance(@"Local\ACE.SinglePlayer"); + if (!instance.IsPrimary) + { + MessageBox.Show("ACE Single Player is already open.", "ACE Single Player", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + + var localRoot = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "ACESinglePlayer"); + using var log = new LauncherLog(Path.Combine(localRoot, "Logs")); + var store = new SettingsStore(); + var protector = new SecretProtector(); + var connectionFactory = new DatabaseConnectionFactory(protector); + var runtimeFactory = new DatabaseRuntimeFactory(connectionFactory, log); + var bootstrapper = new DatabaseBootstrapper(connectionFactory); + + LauncherSettings settings; + try + { + settings = store.LoadAsync().GetAwaiter().GetResult() ?? LauncherSettings.CreateDefaults(AppContext.BaseDirectory); + } + catch (Exception ex) + { + log.Write("Settings could not be loaded: " + ex); + MessageBox.Show("The saved settings could not be read. Setup will open so they can be replaced.\r\n\r\n" + ex.Message, + "Settings error", MessageBoxButtons.OK, MessageBoxIcon.Warning); + settings = LauncherSettings.CreateDefaults(AppContext.BaseDirectory); + } + + if (!store.Exists || !SetupValidator.Validate(settings).IsValid) + { + using var wizard = new SetupWizardForm(settings, store, protector, runtimeFactory, bootstrapper); + if (wizard.ShowDialog() != DialogResult.OK) + return; + settings = wizard.SavedSettings; + } + + using var serverManager = new AceServerProcessManager(log); + using var clientManager = new ClientProcessManager(new IClientLaunchProvider[] + { + new DirectClientLaunchProvider(), + new DecalClientLaunchProvider(log) + }, log); + var controller = new LauncherController(settings, new AceConfigurationWriter(protector), runtimeFactory, + serverManager, clientManager, new ReadyFileMonitor(new UdpPortProbe()), protector, log); + using var main = new MainForm(controller, store, protector, runtimeFactory, bootstrapper, log); + Application.Run(main); + controller.DisposeAsync().AsTask().GetAwaiter().GetResult(); + } + + private static void WriteStartupFailure(Exception exception) + { + try + { + var logDirectory = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), + "ACESinglePlayer", "Logs"); + Directory.CreateDirectory(logDirectory); + File.AppendAllText(Path.Combine(logDirectory, "ACE.SinglePlayer.log"), + $"{DateTimeOffset.Now:yyyy-MM-dd HH:mm:ss zzz} Startup failed: {exception}{Environment.NewLine}"); + } + catch + { + // Preserve the original startup error even if logging is unavailable. + } + } +} diff --git a/Source/ACE.SinglePlayer/UI/MainForm.cs b/Source/ACE.SinglePlayer/UI/MainForm.cs new file mode 100644 index 0000000000..d184af87e2 --- /dev/null +++ b/Source/ACE.SinglePlayer/UI/MainForm.cs @@ -0,0 +1,142 @@ +using System.Diagnostics; + +using ACE.SinglePlayer.Database; +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; +using ACE.SinglePlayer.Orchestration; + +namespace ACE.SinglePlayer.UI; + +public sealed class MainForm : Form +{ + private readonly LauncherController controller; + private readonly SettingsStore settingsStore; + private readonly ISecretProtector secretProtector; + private readonly DatabaseRuntimeFactory databaseRuntimeFactory; + private readonly DatabaseBootstrapper databaseBootstrapper; + private readonly LauncherLog log; + private readonly Label state = new() { AutoSize = false, Dock = DockStyle.Top, Height = 64, TextAlign = ContentAlignment.MiddleCenter, Font = new Font(SystemFonts.MessageBoxFont!.FontFamily, 14, FontStyle.Bold) }; + private readonly Button play = new() { Text = "PLAY", Width = 330, Height = 100, Font = new Font(SystemFonts.MessageBoxFont.FontFamily, 26, FontStyle.Bold) }; + private readonly Button stop = new() { Text = "Stop", Width = 100, Height = 38 }; + private readonly TextBox diagnostics = new() { Dock = DockStyle.Fill, Multiline = true, ReadOnly = true, ScrollBars = ScrollBars.Vertical, Font = new Font(FontFamily.GenericMonospace, 9) }; + private readonly Panel diagnosticPanel = new() { Dock = DockStyle.Fill, Visible = false, Padding = new Padding(8) }; + private bool closingAllowed; + + public MainForm(LauncherController controller, SettingsStore settingsStore, ISecretProtector secretProtector, + DatabaseRuntimeFactory databaseRuntimeFactory, DatabaseBootstrapper databaseBootstrapper, LauncherLog log) + { + this.controller = controller; + this.settingsStore = settingsStore; + this.secretProtector = secretProtector; + this.databaseRuntimeFactory = databaseRuntimeFactory; + this.databaseBootstrapper = databaseBootstrapper; + this.log = log; + + Text = "ACE Single Player"; + StartPosition = FormStartPosition.CenterScreen; + MinimumSize = new Size(700, 520); + Size = new Size(820, 650); + + var main = new TableLayoutPanel { Dock = DockStyle.Fill, RowCount = 4, ColumnCount = 1 }; + main.RowStyles.Add(new RowStyle(SizeType.Absolute, 70)); + main.RowStyles.Add(new RowStyle(SizeType.Absolute, 150)); + main.RowStyles.Add(new RowStyle(SizeType.Absolute, 60)); + main.RowStyles.Add(new RowStyle(SizeType.Percent, 100)); + main.Controls.Add(state, 0, 0); + + var playPanel = new FlowLayoutPanel { Dock = DockStyle.Fill, FlowDirection = FlowDirection.LeftToRight, WrapContents = false, Padding = new Padding(150, 15, 0, 0) }; + playPanel.Controls.Add(play); + playPanel.Controls.Add(stop); + main.Controls.Add(playPanel, 0, 1); + + var actions = new FlowLayoutPanel { Dock = DockStyle.Fill, FlowDirection = FlowDirection.LeftToRight, Padding = new Padding(15, 8, 0, 0) }; + var settings = new Button { Text = "Settings", AutoSize = true }; + var mods = new Button { Text = "Mods", AutoSize = true }; + var logs = new Button { Text = "Open Logs", AutoSize = true }; + var showDiagnostics = new CheckBox { Text = "Show diagnostics", AutoSize = true, Padding = new Padding(10, 7, 0, 0) }; + actions.Controls.AddRange(new Control[] { settings, mods, logs, showDiagnostics }); + main.Controls.Add(actions, 0, 2); + + diagnosticPanel.Controls.Add(diagnostics); + main.Controls.Add(diagnosticPanel, 0, 3); + Controls.Add(main); + + controller.State.Changed += UpdateState; + log.MessageWritten += AppendDiagnostic; + play.Click += async (_, _) => + { + play.Enabled = false; + var started = await controller.PlayAsync(); + play.Enabled = !controller.IsClientRunning; + if (started && controller.Settings.MinimizeLauncherAfterClientStarts) + WindowState = FormWindowState.Minimized; + }; + stop.Click += async (_, _) => await controller.StopAsync(); + settings.Click += async (_, _) => await ShowSettingsAsync(); + mods.Click += (_, _) => new ModsForm(controller.Settings, () => controller.IsServerRunning).ShowDialog(this); + logs.Click += (_, _) => Process.Start(new ProcessStartInfo { FileName = Path.GetDirectoryName(log.LogPath)!, UseShellExecute = true }); + showDiagnostics.CheckedChanged += (_, _) => diagnosticPanel.Visible = showDiagnostics.Checked; + FormClosing += OnFormClosing; + + controller.State.Set(LauncherState.Ready, "Ready — click Play"); + } + + private async Task ShowSettingsAsync() + { + if (controller.IsServerRunning) + { + MessageBox.Show(this, "Stop the game and local server before changing settings.", "Server is running", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + using var wizard = new SetupWizardForm(controller.Settings, settingsStore, secretProtector, databaseRuntimeFactory, databaseBootstrapper); + if (wizard.ShowDialog(this) == DialogResult.OK) + controller.UpdateSettings(wizard.SavedSettings); + await Task.CompletedTask; + } + + private void UpdateState(LauncherStateChanged change) + { + if (InvokeRequired) + { + BeginInvoke(() => UpdateState(change)); + return; + } + state.Text = $"{ToDisplayName(change.State)}\r\n{change.Message}"; + stop.Enabled = controller.IsServerRunning || controller.IsClientRunning; + play.Enabled = (change.State is LauncherState.Ready or LauncherState.Error or LauncherState.NotConfigured) && !controller.IsClientRunning; + if (change.State == LauncherState.Error) + diagnosticPanel.Visible = true; + } + + private void AppendDiagnostic(string line) + { + if (InvokeRequired) + { + BeginInvoke(() => AppendDiagnostic(line)); + return; + } + diagnostics.AppendText(line + Environment.NewLine); + } + + private async void OnFormClosing(object? sender, FormClosingEventArgs args) + { + if (closingAllowed) + return; + args.Cancel = true; + Enabled = false; + await controller.ShutdownAsync(); + closingAllowed = true; + Close(); + } + + private static string ToDisplayName(LauncherState value) => value switch + { + LauncherState.NotConfigured => "Not configured", + LauncherState.CheckingDatabase => "Checking database", + LauncherState.StartingDatabase => "Starting database", + LauncherState.StartingServer => "Starting server", + LauncherState.WaitingForWorld => "Waiting for world", + LauncherState.GameRunning => "Game running", + _ => value.ToString() + }; +} diff --git a/Source/ACE.SinglePlayer/UI/ModsForm.cs b/Source/ACE.SinglePlayer/UI/ModsForm.cs new file mode 100644 index 0000000000..335c3fb7f2 --- /dev/null +++ b/Source/ACE.SinglePlayer/UI/ModsForm.cs @@ -0,0 +1,128 @@ +using System.ComponentModel; +using System.Diagnostics; + +using ACE.SinglePlayer.Models; +using ACE.SinglePlayer.Mods; + +namespace ACE.SinglePlayer.UI; + +public sealed class ModsForm : Form +{ + private readonly LauncherSettings settings; + private readonly Func isServerRunning; + private readonly DataGridView grid = new() { Dock = DockStyle.Fill, AutoGenerateColumns = false, ReadOnly = true, AllowUserToAddRows = false, SelectionMode = DataGridViewSelectionMode.FullRowSelect }; + private BindingList records = new(); + + public ModsForm(LauncherSettings settings, Func isServerRunning) + { + this.settings = settings; + this.isServerRunning = isServerRunning; + Text = "Mods and client plugins"; + StartPosition = FormStartPosition.CenterParent; + Size = new Size(1000, 600); + + AddColumns(); + grid.CellContentClick += async (_, args) => await ToggleAsync(args); + grid.CellFormatting += FormatCell; + + var buttons = new FlowLayoutPanel { Dock = DockStyle.Bottom, Height = 48, Padding = new Padding(8), AutoSize = false }; + var refresh = new Button { Text = "Refresh", AutoSize = true }; + var openMods = new Button { Text = "Open Mods Folder", AutoSize = true }; + var openMod = new Button { Text = "Open Selected Folder", AutoSize = true }; + var openSettings = new Button { Text = "Open Settings.json", AutoSize = true }; + buttons.Controls.AddRange(new Control[] { refresh, openMods, openMod, openSettings }); + refresh.Click += (_, _) => RefreshCatalog(); + openMods.Click += (_, _) => Open(settings.ModsDirectory); + openMod.Click += (_, _) => { if (Selected is { InstalledPath.Length: > 0 } record) Open(record.InstalledPath); }; + openSettings.Click += (_, _) => + { + if (Selected is { SettingsPath.Length: > 0 } record && File.Exists(record.SettingsPath)) Open(record.SettingsPath); + else MessageBox.Show(this, "This server mod has no Settings.json file.", "No settings file", MessageBoxButtons.OK, MessageBoxIcon.Information); + }; + + var note = new Label + { + Dock = DockStyle.Top, + Height = 48, + Padding = new Padding(10), + Text = "ACE server mods are loaded by ACE.Server's existing Harmony ModManager. Decal entries are read-only and load only in Decal mode. Server-mod changes require a restart." + }; + Controls.Add(grid); + Controls.Add(buttons); + Controls.Add(note); + RefreshCatalog(); + } + + private ModRecord? Selected => grid.CurrentRow?.DataBoundItem as ModRecord; + + private void RefreshCatalog() + { + var catalog = new ModCatalog(new IModProvider[] + { + new AceServerModProvider(settings.ModsDirectory), + new DecalPluginProvider(), + new ChorizitePluginProvider(), + new AceContentPackProvider() + }); + records = new BindingList(catalog.Scan().ToList()); + grid.DataSource = records; + } + + private async Task ToggleAsync(DataGridViewCellEventArgs args) + { + if (args.RowIndex < 0 || grid.Columns[args.ColumnIndex].Name != "Enabled" || grid.Rows[args.RowIndex].DataBoundItem is not ModRecord record) + return; + if (!record.CanToggle) + { + MessageBox.Show(this, record.Type == ModType.DecalPlugin + ? "Decal registration is read-only until its current format is fully tested." + : "Malformed metadata cannot be edited safely.", "Read-only", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + if (isServerRunning()) + { + MessageBox.Show(this, "Stop ACE.Server before changing mod metadata. The change requires a server restart.", "Restart required", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + + try + { + record.Enabled = !record.Enabled; + await ModMetadataEditor.SetEnabledAsync(record.MetadataPath, record.Enabled); + grid.InvalidateRow(args.RowIndex); + } + catch (Exception ex) + { + record.Enabled = !record.Enabled; + MessageBox.Show(this, ex.Message, "Could not update Meta.json", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private static void Open(string path) + { + Process.Start(new ProcessStartInfo { FileName = path, UseShellExecute = true }); + } + + private void FormatCell(object? sender, DataGridViewCellFormattingEventArgs args) + { + if (args.RowIndex < 0 || grid.Rows[args.RowIndex].DataBoundItem is not ModRecord record) + return; + if (record.IsMalformed || record.CompatibilityStatus == CompatibilityStatus.LoadFailed) + args.CellStyle.BackColor = Color.MistyRose; + else if (record.Type == ModType.DecalPlugin) + args.CellStyle.BackColor = Color.AliceBlue; + } + + private void AddColumns() + { + grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModRecord.Type), HeaderText = "Type", Width = 110 }); + grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModRecord.Name), HeaderText = "Name", Width = 160 }); + grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModRecord.Author), HeaderText = "Author", Width = 110 }); + grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModRecord.Version), HeaderText = "Version", Width = 75 }); + grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModRecord.Priority), HeaderText = "Priority", Width = 65 }); + grid.Columns.Add(new DataGridViewCheckBoxColumn { Name = "Enabled", DataPropertyName = nameof(ModRecord.Enabled), HeaderText = "Enabled", Width = 65 }); + grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModRecord.CompatibilityStatus), HeaderText = "Compatibility", Width = 120 }); + grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModRecord.Description), HeaderText = "Description", AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill }); + grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModRecord.LastLoadError), HeaderText = "Last error", Width = 180 }); + } +} diff --git a/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs b/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs new file mode 100644 index 0000000000..c33c114d28 --- /dev/null +++ b/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs @@ -0,0 +1,404 @@ +using ACE.SinglePlayer.ClientLaunch; +using ACE.SinglePlayer.Database; +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.UI; + +public sealed class SetupWizardForm : Form +{ + private readonly SettingsStore settingsStore; + private readonly ISecretProtector secretProtector; + private readonly DatabaseRuntimeFactory databaseRuntimeFactory; + private readonly DatabaseBootstrapper databaseBootstrapper; + private readonly TabControl pages = new() { Dock = DockStyle.Fill, Appearance = TabAppearance.FlatButtons, ItemSize = new Size(0, 1), SizeMode = TabSizeMode.Fixed }; + private readonly TextBox clientPath = new(); + private readonly TextBox datPath = new(); + private readonly TextBox serverPath = new(); + private readonly TextBox modsPath = new(); + private readonly TextBox runtimePath = new(); + private readonly ComboBox databaseMode = new() { DropDownStyle = ComboBoxStyle.DropDownList }; + private readonly TextBox databaseHost = new(); + private readonly NumericUpDown databasePort = new() { Minimum = 1, Maximum = 65535 }; + private readonly TextBox databaseUser = new(); + private readonly TextBox databasePassword = new() { UseSystemPasswordChar = true }; + private readonly TextBox authDatabase = new(); + private readonly TextBox shardDatabase = new(); + private readonly TextBox worldDatabase = new(); + private readonly TextBox managedDatabaseExe = new(); + private readonly TextBox worldSql = new(); + private readonly TextBox accountName = new(); + private readonly NumericUpDown serverPort = new() { Minimum = 1, Maximum = 65534 }; + private readonly NumericUpDown startupTimeout = new() { Minimum = 30, Maximum = 900, Increment = 30 }; + private readonly ComboBox clientMode = new() { DropDownStyle = ComboBoxStyle.DropDownList }; + private readonly CheckBox stopWithGame = new() { Text = "Stop the local server when the game exits", AutoSize = true }; + private readonly CheckBox stopManagedDatabase = new() { Text = "Stop launcher-managed MariaDB when this launcher exits", AutoSize = true }; + private readonly CheckBox minimize = new() { Text = "Minimize this launcher after the client starts", AutoSize = true }; + private readonly Label pageTitle = new() { AutoSize = true, Font = new Font(SystemFonts.MessageBoxFont!.FontFamily, 15, FontStyle.Bold) }; + private readonly Label databaseStatus = new() { AutoSize = true, MaximumSize = new Size(620, 0) }; + private readonly Label decalStatus = new() { AutoSize = true, MaximumSize = new Size(620, 0) }; + private readonly Button back = new() { Text = "Back", AutoSize = true }; + private readonly Button next = new() { Text = "Next", AutoSize = true }; + private readonly Button finish = new() { Text = "Save Setup", AutoSize = true }; + private LauncherSettings settings; + + public SetupWizardForm(LauncherSettings settings, SettingsStore settingsStore, ISecretProtector secretProtector, + DatabaseRuntimeFactory databaseRuntimeFactory, DatabaseBootstrapper databaseBootstrapper) + { + this.settings = settings; + this.settingsStore = settingsStore; + this.secretProtector = secretProtector; + this.databaseRuntimeFactory = databaseRuntimeFactory; + this.databaseBootstrapper = databaseBootstrapper; + + Text = settingsStore.Exists ? "ACE Single Player Settings" : "ACE Single Player Setup"; + StartPosition = FormStartPosition.CenterScreen; + MinimumSize = new Size(760, 590); + Size = new Size(820, 650); + FormBorderStyle = FormBorderStyle.Sizable; + + databaseMode.Items.AddRange(new object[] { "Already-running MariaDB/MySQL", "Launcher-managed MariaDB (experimental)" }); + clientMode.Items.AddRange(new object[] { "Vanilla", "Decal", "Chorizite (future)" }); + + pages.TabPages.Add(CreateClientPage()); + pages.TabPages.Add(CreateServerPage()); + pages.TabPages.Add(CreateDatabasePage()); + pages.TabPages.Add(CreatePlayPage()); + + var header = new Panel { Dock = DockStyle.Top, Height = 62, Padding = new Padding(18, 14, 18, 8) }; + header.Controls.Add(pageTitle); + var buttons = new FlowLayoutPanel + { + Dock = DockStyle.Bottom, + Height = 55, + FlowDirection = FlowDirection.RightToLeft, + Padding = new Padding(12), + WrapContents = false + }; + buttons.Controls.Add(finish); + buttons.Controls.Add(next); + buttons.Controls.Add(back); + Controls.Add(pages); + Controls.Add(buttons); + Controls.Add(header); + + back.Click += (_, _) => { if (pages.SelectedIndex > 0) pages.SelectedIndex--; UpdateNavigation(); }; + next.Click += (_, _) => { if (pages.SelectedIndex < pages.TabCount - 1) pages.SelectedIndex++; UpdateNavigation(); }; + finish.Click += async (_, _) => await SaveAsync(); + pages.SelectedIndexChanged += (_, _) => UpdateNavigation(); + databaseMode.SelectedIndexChanged += (_, _) => managedDatabaseExe.Enabled = databaseMode.SelectedIndex == 1; + + LoadSettings(); + pages.SelectedIndex = 0; + UpdateNavigation(); + } + + public LauncherSettings SavedSettings => settings; + + private TabPage CreateClientPage() + { + var page = NewPage(); + var layout = NewFields(); + AddPathRow(layout, "acclient.exe", clientPath, "Select acclient.exe", () => BrowseFile(clientPath, "acclient.exe|acclient.exe"), 0); + AddPathRow(layout, "DAT-file directory", datPath, "Select the folder containing the client DAT files", () => BrowseFolder(datPath), 1); + var note = new Label + { + Text = "The launcher does not download or redistribute the proprietary client. Required: client_cell_1.dat, client_portal.dat, and client_local_English.dat. client_highres.dat is optional for ACE.Server.", + AutoSize = true, + MaximumSize = new Size(650, 0) + }; + layout.Controls.Add(note, 0, 2); + layout.SetColumnSpan(note, 3); + page.Controls.Add(layout); + return page; + } + + private TabPage CreateServerPage() + { + var page = NewPage(); + var layout = NewFields(); + AddPathRow(layout, "ACE.Server.exe", serverPath, "Select the published server executable", () => BrowseFile(serverPath, "ACE.Server|ACE.Server.exe"), 0); + AddPathRow(layout, "Mods directory", modsPath, "Select the ACE server-mod directory", () => BrowseFolder(modsPath), 1); + AddPathRow(layout, "Runtime directory", runtimePath, "Select the private runtime-data directory", () => BrowseFolder(runtimePath), 2); + var note = new Label + { + Text = "The dedicated single-player Config.js, ready file, process record, and optional managed database data live under Runtime. The server always binds to 127.0.0.1.", + AutoSize = true, + MaximumSize = new Size(650, 0) + }; + layout.Controls.Add(note, 0, 3); + layout.SetColumnSpan(note, 3); + page.Controls.Add(layout); + return page; + } + + private TabPage CreateDatabasePage() + { + var page = NewPage(); + var layout = NewFields(); + AddRow(layout, "Database mode", databaseMode, 0); + AddRow(layout, "Host", databaseHost, 1); + AddRow(layout, "Port", databasePort, 2); + AddRow(layout, "Username", databaseUser, 3); + AddRow(layout, "Password", databasePassword, 4); + AddRow(layout, "Authentication DB", authDatabase, 5); + AddRow(layout, "Shard DB", shardDatabase, 6); + AddRow(layout, "World DB", worldDatabase, 7); + AddPathRow(layout, "mariadbd.exe", managedDatabaseExe, "Only needed for experimental managed mode", () => BrowseFile(managedDatabaseExe, "MariaDB server|mariadbd.exe"), 8); + AddPathRow(layout, "World SQL package", worldSql, "Required only when the world database is missing", () => BrowseFile(worldSql, "SQL files|*.sql"), 9); + + var actions = new FlowLayoutPanel { AutoSize = true, FlowDirection = FlowDirection.LeftToRight }; + var test = new Button { Text = "Test Connection", AutoSize = true }; + var initialize = new Button { Text = "Initialize Missing Databases", AutoSize = true }; + actions.Controls.Add(test); + actions.Controls.Add(initialize); + layout.Controls.Add(actions, 1, 10); + layout.SetColumnSpan(actions, 2); + layout.Controls.Add(databaseStatus, 1, 11); + layout.SetColumnSpan(databaseStatus, 2); + test.Click += async (_, _) => await TestDatabaseAsync(test); + initialize.Click += async (_, _) => await InitializeDatabaseAsync(initialize); + page.Controls.Add(layout); + return page; + } + + private TabPage CreatePlayPage() + { + var page = NewPage(); + var layout = NewFields(); + AddRow(layout, "Persistent account", accountName, 0); + AddRow(layout, "Local server port", serverPort, 1); + AddRow(layout, "Startup timeout (seconds)", startupTimeout, 2); + AddRow(layout, "Client launch mode", clientMode, 3); + layout.Controls.Add(decalStatus, 1, 4); + layout.SetColumnSpan(decalStatus, 2); + layout.Controls.Add(stopWithGame, 1, 5); + layout.SetColumnSpan(stopWithGame, 2); + layout.Controls.Add(stopManagedDatabase, 1, 6); + layout.SetColumnSpan(stopManagedDatabase, 2); + layout.Controls.Add(minimize, 1, 7); + layout.SetColumnSpan(minimize, 2); + var note = new Label + { + Text = "A strong account password is generated once and protected for your Windows user. The same account is reused on every launch, so its characters remain in the shard database.", + AutoSize = true, + MaximumSize = new Size(650, 0) + }; + layout.Controls.Add(note, 0, 8); + layout.SetColumnSpan(note, 3); + page.Controls.Add(layout); + return page; + } + + private void LoadSettings() + { + clientPath.Text = settings.ClientExePath; + datPath.Text = settings.DatFilesDirectory; + serverPath.Text = settings.ServerExePath; + modsPath.Text = settings.ModsDirectory; + runtimePath.Text = settings.RuntimeDirectory; + databaseMode.SelectedIndex = settings.DatabaseMode == DatabaseMode.External ? 0 : 1; + databaseHost.Text = settings.DatabaseHost; + databasePort.Value = settings.DatabasePort; + databaseUser.Text = settings.DatabaseUsername; + try + { + databasePassword.Text = string.IsNullOrEmpty(settings.ProtectedDatabasePassword) + ? string.Empty + : secretProtector.Unprotect(settings.ProtectedDatabasePassword); + } + catch (Exception ex) when (ex is FormatException or System.ComponentModel.Win32Exception) + { + databasePassword.Text = string.Empty; + databaseStatus.Text = "The saved database password could not be decrypted. Enter it again."; + } + authDatabase.Text = settings.AuthenticationDatabaseName; + shardDatabase.Text = settings.ShardDatabaseName; + worldDatabase.Text = settings.WorldDatabaseName; + managedDatabaseExe.Text = settings.ManagedDatabaseExePath; + accountName.Text = settings.AccountName; + serverPort.Value = settings.Port; + startupTimeout.Value = Math.Clamp(settings.ServerStartupTimeoutSeconds, (int)startupTimeout.Minimum, (int)startupTimeout.Maximum); + clientMode.SelectedIndex = (int)settings.ClientLaunchMode; + stopWithGame.Checked = settings.StopServerWhenGameExits; + stopManagedDatabase.Checked = settings.StopManagedDatabaseWhenLauncherExits; + minimize.Checked = settings.MinimizeLauncherAfterClientStarts; + decalStatus.Text = DecalDetector.Detect() is null + ? "Decal is not detected. Vanilla mode is fully supported; Chorizite is reserved for future work." + : "Decal and Inject.dll were detected. Decal mode is optional; Vanilla remains available if injection fails."; + } + + private LauncherSettings BuildSettings() + { + var result = settings; + result.ClientExePath = clientPath.Text.Trim(); + result.DatFilesDirectory = datPath.Text.Trim(); + result.ServerExePath = serverPath.Text.Trim(); + result.ModsDirectory = modsPath.Text.Trim(); + result.RuntimeDirectory = runtimePath.Text.Trim(); + result.Host = "127.0.0.1"; + result.Port = (ushort)serverPort.Value; + result.ServerStartupTimeoutSeconds = (int)startupTimeout.Value; + result.AccountName = accountName.Text.Trim(); + if (string.IsNullOrWhiteSpace(result.ProtectedAccountPassword)) + result.ProtectedAccountPassword = secretProtector.Protect(SecretProtector.GeneratePassword()); + result.DatabaseMode = databaseMode.SelectedIndex == 1 ? DatabaseMode.ManagedExperimental : DatabaseMode.External; + result.DatabaseHost = databaseHost.Text.Trim(); + result.DatabasePort = (ushort)databasePort.Value; + result.DatabaseUsername = databaseUser.Text.Trim(); + result.ProtectedDatabasePassword = secretProtector.Protect(databasePassword.Text); + result.AuthenticationDatabaseName = authDatabase.Text.Trim(); + result.ShardDatabaseName = shardDatabase.Text.Trim(); + result.WorldDatabaseName = worldDatabase.Text.Trim(); + result.ManagedDatabaseExePath = managedDatabaseExe.Text.Trim(); + result.StopServerWhenGameExits = stopWithGame.Checked; + result.StopManagedDatabaseWhenLauncherExits = stopManagedDatabase.Checked; + result.MinimizeLauncherAfterClientStarts = minimize.Checked; + result.ClientLaunchMode = clientMode.SelectedIndex switch + { + 1 => ClientLaunchMode.Decal, + 2 => ClientLaunchMode.ChoriziteFuture, + _ => ClientLaunchMode.Vanilla + }; + return result; + } + + private async Task SaveAsync() + { + settings = BuildSettings(); + var validation = SetupValidator.Validate(settings); + if (!validation.IsValid) + { + MessageBox.Show(this, validation.Message, "Setup needs attention", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + if (settings.ClientLaunchMode == ClientLaunchMode.Decal && DecalDetector.Detect() is null) + { + MessageBox.Show(this, "Decal is not detected. Choose Vanilla mode to continue.", "Decal unavailable", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + if (settings.ClientLaunchMode == ClientLaunchMode.ChoriziteFuture) + { + MessageBox.Show(this, "Chorizite launch support is reserved for a future release. Choose Vanilla or detected Decal mode.", "Not implemented", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + + Directory.CreateDirectory(settings.RuntimeDirectory); + Directory.CreateDirectory(settings.ModsDirectory); + await settingsStore.SaveAsync(settings); + DialogResult = DialogResult.OK; + Close(); + } + + private async Task TestDatabaseAsync(Button button) + { + button.Enabled = false; + databaseStatus.Text = "Checking..."; + try + { + var current = BuildSettings(); + await using var runtime = databaseRuntimeFactory.Create(current); + var result = await runtime.ValidateAsync(current, CancellationToken.None); + databaseStatus.Text = result.Message; + } + catch (Exception ex) + { + databaseStatus.Text = ex.Message; + } + finally + { + button.Enabled = true; + } + } + + private async Task InitializeDatabaseAsync(Button button) + { + button.Enabled = false; + databaseStatus.Text = "Initializing only databases that are completely missing..."; + var current = BuildSettings(); + await using var runtime = databaseRuntimeFactory.Create(current); + try + { + if (runtime.IsManaged) + await runtime.StartAsync(current, CancellationToken.None); + await databaseBootstrapper.BootstrapAsync(current, worldSql.Text.Trim(), CancellationToken.None); + var result = await runtime.ValidateAsync(current, CancellationToken.None); + databaseStatus.Text = result.Message; + } + catch (Exception ex) + { + databaseStatus.Text = ex.Message; + } + finally + { + await runtime.StopAsync(CancellationToken.None); + button.Enabled = true; + } + } + + private void BrowseFile(TextBox target, string filter) + { + using var dialog = new OpenFileDialog { Filter = filter, CheckFileExists = true, FileName = target.Text }; + if (dialog.ShowDialog(this) != DialogResult.OK) + return; + target.Text = dialog.FileName; + if (target == clientPath && SetupValidator.DetectDatDirectory(dialog.FileName) is { } detected) + datPath.Text = detected; + } + + private void BrowseFolder(TextBox target) + { + using var dialog = new FolderBrowserDialog { SelectedPath = target.Text, ShowNewFolderButton = true }; + if (dialog.ShowDialog(this) == DialogResult.OK) + target.Text = dialog.SelectedPath; + } + + private void UpdateNavigation() + { + var titles = new[] { "Choose your Asheron's Call client", "Choose the local ACE server", "Connect persistent storage", "One-click Play settings" }; + var selectedIndex = pages.SelectedIndex; + if (selectedIndex < 0 || selectedIndex >= Math.Min(titles.Length, pages.TabCount)) + selectedIndex = 0; + + pageTitle.Text = titles[selectedIndex]; + back.Enabled = selectedIndex > 0; + next.Visible = selectedIndex < pages.TabCount - 1; + finish.Visible = selectedIndex == pages.TabCount - 1; + } + + private static TabPage NewPage() => new() { Padding = new Padding(20) }; + + private static TableLayoutPanel NewFields() => new() + { + Dock = DockStyle.Fill, + AutoScroll = true, + ColumnCount = 3, + RowCount = 14, + Padding = new Padding(5), + ColumnStyles = + { + new ColumnStyle(SizeType.Absolute, 160), + new ColumnStyle(SizeType.Percent, 100), + new ColumnStyle(SizeType.Absolute, 105) + } + }; + + private static void AddRow(TableLayoutPanel layout, string label, Control control, int row) + { + control.Dock = DockStyle.Top; + layout.Controls.Add(new Label { Text = label, AutoSize = true, Padding = new Padding(0, 5, 0, 0) }, 0, row); + layout.Controls.Add(control, 1, row); + layout.SetColumnSpan(control, 2); + } + + private static void AddPathRow(TableLayoutPanel layout, string label, TextBox textBox, string accessibleDescription, Action browse, int row) + { + textBox.Dock = DockStyle.Top; + textBox.AccessibleDescription = accessibleDescription; + var button = new Button { Text = "Browse...", AutoSize = true, Dock = DockStyle.Top }; + button.Click += (_, _) => browse(); + layout.Controls.Add(new Label { Text = label, AutoSize = true, Padding = new Padding(0, 5, 0, 0) }, 0, row); + layout.Controls.Add(textBox, 1, row); + layout.Controls.Add(button, 2, row); + } +} diff --git a/docs/AQUIFIR_MOD_COMPATIBILITY.md b/docs/AQUIFIR_MOD_COMPATIBILITY.md new file mode 100644 index 0000000000..ff8252ce56 --- /dev/null +++ b/docs/AQUIFIR_MOD_COMPATIBILITY.md @@ -0,0 +1,21 @@ +# Aquafir project compatibility with current ACE + +Assessment date: 2026-07-13. Current ACE checkout: `08471633`, .NET 10. The external repositories were inspected at their default branches. They were not copied into ACE, and the real client-side projects were not executed. + +| Project | Type | Current target/dependencies | Builds against this ACE as-is? | Without Thwarg/Decal? | Status and recommendation | +|---|---|---|---|---|---| +| `aquafir/ACE.BaseMod` | ACE server-mod framework/templates | `ACE.Shared` net8.0 x64, Harmony 2.3.3, Krafs.Publicizer; package notes say ACE 1.64.4610 and references default to `C:\ACE\Server` | No checkout-to-checkout build path; it targets an older installed ACE output. Current ACE already contains the corresponding `ModManager`, `ModContainer`, `IHarmonyMod`, metadata, commands, and Harmony loader. | Yes, server-side | **Needs source port / do not integrate as a second loader.** Reuse current ACE's loader. Port only still-useful shared helpers or individual samples after license/API review. | +| `aquafir/LootAll` | ACE server mod | net8.0 x64, Harmony 2.3.2, `ACEmulator.ACE.Shared` 1.0.0, publicized/hardcoded `C:\ACE\Server` assemblies; sample-like Meta.json | No. It is not configured for current net10 ACE and was not proven against current APIs. | Yes | **Compatible after rebuild or needs source port.** Retarget net10, reference the exact current ACE publish, update shared/Harmony assumptions, then test load and gameplay. Place only a successful port in the ACE Mods directory. | +| `aquafir/AltLevels` | ACE server mod | net8.0 x64, Harmony 2.3.3, `ACEmulator.ACE.Shared` 1.0.0, EF/ACE assemblies from `C:\ACE\Server`; sample-like Meta.json | No. Same installed-old-ACE assumptions; current API compatibility is unverified. | Yes | **Needs source port.** Retarget/rebuild against current ACE and add behavior/data-migration tests before installation. | +| `aquafir/Chorizite` | Client plugin framework/launcher, not an ACE server mod | net8.0; x86 launcher; native bootstrapper, standalone loader, RmlUI/AC protocol and its own manifest format | Not applicable to ACE.Server; it is a separate client framework and build graph. | Yes without Thwarg and Decal; it uses its own bootstrap/injection path and may optionally load Decal | **Wrong mod type for ModsDirectory / future integration.** Implement the reserved `ChorizitePluginProvider` and launch provider only after its bootstrap licensing, packaging, and current client behavior are tested. | +| `aquafir/UtilityFace` | Decal client plugin and hot-reload network filter | .NET Framework 4.8 x86, Decal 2.9.8.2 interop, D3DService/DirectX, UtilityBelt.Service; some machine-specific reference paths | Not applicable to ACE.Server. Its project may need dependency-path cleanup to reproduce a build. | Works without Thwarg, but not without Decal and its dependencies | **Wrong mod type for ModsDirectory.** Inventory through the read-only Decal provider. Install/register through a tested Decal workflow; use only when Decal launch mode succeeds. | +| `aquafir/InterfaceReplacement` (`InventoryUI`) | Decal client UI plugin and hot-reload network filter | .NET Framework 4.8 x86, Decal Adapter/Interop 2.9.8.2, UtilityBelt.Service, NSIS | Not applicable to ACE.Server. It targets Decal rather than ACE APIs. | Works without Thwarg, but not without Decal and UtilityBelt.Service | **Wrong mod type for ModsDirectory.** Treat as a Decal plugin, keep registry management external/read-only for now, and test with the optional Decal provider. | + +## Important distinctions + +- **ACE server mods** run inside ACE.Server through its existing Harmony loader. They can work with the Vanilla client and never need Decal. +- **Decal plugins** run inside the 32-bit client after Decal injection. They never belong in ACE's server Mods directory. +- **Chorizite plugins** use Chorizite's bootstrap and manifest system. They are neither ACE Harmony mods nor Decal registrations. +- **World content** is database/content SQL and must be validated and backed up as data, not treated as an arbitrary DLL mod. + +The launcher reports metadata and registration state, not binary compatibility. A successful rebuild plus a clean ACE.Server load and functional test is required before marking a server mod Compatible. diff --git a/docs/SINGLE_PLAYER_ARCHITECTURE.md b/docs/SINGLE_PLAYER_ARCHITECTURE.md new file mode 100644 index 0000000000..bde372591b --- /dev/null +++ b/docs/SINGLE_PLAYER_ARCHITECTURE.md @@ -0,0 +1,51 @@ +# ACE Single Player architecture + +## Process boundary + +`ACE.SinglePlayer.exe` is a WinForms orchestrator, not an offline rewrite of ACE. It owns and monitors these optional child processes: + +1. A user-supplied `mariadbd.exe` only in experimental managed mode. +2. The published `ACE.Server.exe`, started with `--config ` and `--ready-file `. +3. `acclient.exe`, launched directly in Vanilla mode or through the package's isolated x86 Decal helper. + +The original server behavior is unchanged when the two new arguments are omitted. The normal cross-platform `Source/ACE.sln` is unchanged; Windows packaging uses `Source/ACE.SinglePlayer.slnx`. + +The release package publishes the launcher and server self-contained for Windows x64. This avoids a first-run dependency on Windows' .NET runtime installer. The isolated Decal helper remains self-contained Windows x86. + +## Configuration and readiness + +The launcher references `ACE.Common` and serializes the current `MasterConfiguration`. It does not edit JavaScript with regular expressions. Defaults are `127.0.0.1`, port 9000, four sessions, automatic account creation, no world precache, automatic ACE schema updates, and no automatic world-database download/update. + +At startup ACE.Server deletes a stale requested ready file. After all managers and commands are initialized and `WorldManager.Open` has made logins possible, it atomically writes process ID, world name, host, port, and UTC timestamp. Normal process exit removes the file. The launcher requires a matching PID, loopback host, expected port, a live process, and an active local UDP listener. ACE uses UDP 9000/9001, so a TCP probe would be incorrect. + +## Persistence and security + +The same account name and randomly generated password are passed on every launch. Windows DPAPI protects stored account and database passwords for the current user. Settings and generated server configuration receive a current-user-only Windows ACL. The database credential must be present in the generated ACE Config.js while the server runs; that file is ignored by Git and excluded from packages. + +Process arguments are added individually. Arguments and configuration content are never logged. Process ownership records contain PID, start time, and executable path; shutdown never selects a process by name alone. ACE's supported `stop-now` console command is used before a bounded forced stop. + +## Databases + +`IDatabaseRuntime` separates external and managed MariaDB. External mode checks authentication, all three schema names, and core tables (`account`, `character`, and `weenie`). `DatabaseBootstrapper` uses the packaged ACE authentication/shard base SQL and a user-selected world SQL package. It applies a base only when the target schema is entirely absent and refuses partial or existing incomplete schemas. + +Managed mode is deliberately experimental. It accepts a specific `mariadbd.exe`, binds it to loopback, and uses `Runtime\Database`, but requires the matching distribution to have initialized that data directory already. + +## Client providers + +`IClientLaunchProvider` isolates client choices. `DirectClientLaunchProvider` uses `ProcessStartInfo.ArgumentList` for `-a`, `-v`, `-h`, and `-rodat off`; it has no Decal, Thwarg, Chorizite, or injection dependency. + +`DecalClientLaunchProvider` detects `SOFTWARE\Decal\Agent\AgentPath` in 32/64-bit HKLM/HKCU views and validates `Inject.dll`. A separately built, self-contained x86 helper creates the 32-bit client suspended, loads the installed `Inject.dll`, invokes its exported `DecalStartup`, resumes the client, and returns a diagnostic PID. It bundles no Decal or third-party injector binaries and does not use ThwargLauncher or ThwargFilter. Invocation is diagnosed, but actual in-game Decal/plugin loading was not end-to-end tested in this repository environment. + +## Mods + +ACE server mods remain owned by the existing `ModManager`, `ModContainer`, `IHarmonyMod`, and `Meta.json` flow. The launcher only inventories metadata and safely changes `Enabled` while preserving unknown JSON fields. Editing is disabled while the server runs. + +Decal registry inventory is read-only and clearly typed as client-side. Chorizite and world-content providers are empty future boundaries. A DLL's presence never establishes compatibility; ACE.Server output remains the source for load errors. + +## Known Phase-1 limitations + +- A real client, DATs, MariaDB service, and populated world package are user-supplied. +- Managed MariaDB does not perform distribution-specific first initialization. +- The client and live character-selection screen were not available for end-to-end testing here. +- Decal's startup export is invoked and diagnosed, but in-game injection/plugin behavior requires a machine with a working Decal/client installation. +- Chorizite launch and package installation are reserved for future work. diff --git a/docs/SINGLE_PLAYER_BUILD_AND_TEST.md b/docs/SINGLE_PLAYER_BUILD_AND_TEST.md new file mode 100644 index 0000000000..b26039a8ec --- /dev/null +++ b/docs/SINGLE_PLAYER_BUILD_AND_TEST.md @@ -0,0 +1,22 @@ +# ACE Single Player build and test + +Building requires the .NET 10 SDK on Windows. The packaging script publishes the launcher and server self-contained for Windows x64 and the optional Decal helper self-contained for Windows x86. Users of the finished package do not need a separate .NET installation. + +Run these commands from the repository root: + +```powershell +dotnet build .\Source\ACE.SinglePlayer.slnx -c Release +dotnet test .\Source\ACE.SinglePlayer.Tests\ACE.SinglePlayer.Tests.csproj -c Release +dotnet test .\Source\ACE.Server.Tests\ACE.Server.Tests.csproj -c Release --filter "FullyQualifiedName~SinglePlayerStartupTests" +powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\publish-singleplayer.ps1 -Configuration Release +``` + +The clean package is written to `artifacts\ACE-SinglePlayer`. The packaging script stages publish output under the current user's temporary directory to avoid a .NET 10 publish-transform bug when the repository path contains an apostrophe. It then checks that the package contains no generated Config.js, settings, logs, database data, proprietary client/DAT files, or MariaDB executable. + +The normal ACE solution remains separate and can be verified with: + +```powershell +dotnet build .\Source\ACE.sln -c Release +``` + +Upstream `ACE.DatLoader.Tests` require proprietary DAT files at their hardcoded test location. `ACE.Database.Tests` and `ACE.Server.Tests.StartupTests` require a configured live ACE database. Those environment-dependent suites are not prerequisites for the launcher logic tests and must not be reported as passing unless their external data and database are actually available. diff --git a/docs/SINGLE_PLAYER_FIRST_RUN.md b/docs/SINGLE_PLAYER_FIRST_RUN.md new file mode 100644 index 0000000000..0518188090 --- /dev/null +++ b/docs/SINGLE_PLAYER_FIRST_RUN.md @@ -0,0 +1,43 @@ +# ACE Single Player: first run + +ACE Single Player keeps ACE.Server as a private local process and launches the original client directly. It does not include or download Asheron's Call, DAT files, MariaDB, Decal, or community mods. + +## Before opening the launcher + +1. Put the package in a folder your Windows user can write to, such as `C:\Games\ACE-SinglePlayer`. Do not install it under `Program Files` unless you deliberately choose a different writable Runtime directory. The package is self-contained and does not require a separate .NET installation. +2. Have an existing `acclient.exe` installation. Its directory must contain: + - `client_cell_1.dat` + - `client_portal.dat` + - `client_local_English.dat` + - `client_highres.dat` is optional for ACE.Server, although the client installation normally includes it. +3. Have MariaDB/MySQL running locally. External mode is the dependable Phase-1 option. You need a database user that can create the three ACE databases during setup, or pre-create valid `ace_auth`, `ace_shard`, and `ace_world` databases yourself. +4. Have an appropriate ACE world-database SQL package available if `ace_world` is missing. The launcher never downloads a database from an unverified source. + +## Setup wizard + +Double-click `ACE.SinglePlayer.exe`. + +1. Select `acclient.exe`. The wizard fills the DAT directory automatically when all three required DAT files are beside it. +2. Select the packaged `Server\ACE.Server.exe`. +3. Keep the package `Mods` and `Runtime` directories unless you intentionally store them elsewhere. +4. Choose **Already-running MariaDB/MySQL**, then enter host, port, username, password, and database names. The defaults are `127.0.0.1:3306`, `ace_auth`, `ace_shard`, and `ace_world`. +5. Click **Test Connection**. If databases are missing, select the world SQL package and click **Initialize Missing Databases**. Authentication and shard base schemas come from the packaged ACE server. Existing complete databases are never overwritten; partial databases produce an error and are not modified. +6. Keep the account name `singleplayer` or choose one permanent name. A strong password is generated once, protected with Windows DPAPI, and reused. Do not change or delete this account if you want the same characters. +7. Keep local port `9000` unless it conflicts with another application. +8. Choose **Vanilla** for the dependable direct-launch path. Choose **Decal** only when Decal and its `Inject.dll` are detected. Chorizite is displayed as future work and cannot be selected yet. +9. Save setup. + +Experimental managed MariaDB mode starts only a user-supplied `mariadbd.exe` and an already initialized data directory at `Runtime\Database`. It does not download binaries or guess distribution-specific initialization flags. External mode is recommended for this release. + +## Normal play + +1. Double-click `ACE.SinglePlayer.exe`. +2. Click **PLAY** once. +3. The launcher checks the persistent databases, writes a private loopback-only config, starts ACE.Server, waits for an atomic ready signal and the UDP listener, and launches `acclient.exe`. +4. Use the normal character-selection screen. ACE automatically creates the persistent local account on its first successful login. + +Repeated Play clicks do not create duplicate processes. By default, closing the game gracefully stops the launcher-owned server. The Stop button requests ACE's `stop-now` console command and forces termination only if that verified child does not exit within 20 seconds. + +Characters live in `ace_shard`, not in the launcher. Back up the MariaDB data, and do not delete or replace the shard database when upgrading the launcher. Settings live at `%LOCALAPPDATA%\ACESinglePlayer\settings.json`; secrets there are DPAPI-protected. The generated Runtime `Config.js` necessarily contains the database password for ACE.Server and is restricted to the current Windows user. + +Use **Open Logs** for startup errors. The launcher never writes account or database passwords to its log. The real client and a live ACE world database are required for an end-to-end character-screen test. diff --git a/docs/SINGLE_PLAYER_ROADMAP.md b/docs/SINGLE_PLAYER_ROADMAP.md new file mode 100644 index 0000000000..d414946a32 --- /dev/null +++ b/docs/SINGLE_PLAYER_ROADMAP.md @@ -0,0 +1,14 @@ +# ACE Single Player roadmap + +Phase 1 deliberately keeps a narrow, dependable loopback server and direct-client path. Future work should be delivered without weakening Vanilla launch: + +- Fully portable launcher-managed MariaDB initialization, tied to a supported and licensed MariaDB distribution. +- Signed or checksum-verified mod package installation with provenance and rollback. +- Port selected aquafir ACE server mods to current ACE/.NET after source review and automated compatibility tests. +- Back up and restore authentication, character/shard, world, settings, and managed database data. +- Import an existing ACE account without changing its character ownership. +- Optional last-character selection only if a safe, maintainable approach is found that does not depend on Thwarg, fragile memory offsets, or general UI automation. +- A signed installer that preserves Runtime and database data across upgrades. +- Automatic launcher/server updates with checksum validation, backups, rollback, and no silent client/DAT replacement. +- Implement and test the reserved Chorizite client-launch provider separately from Vanilla and Decal. +- Improve managed MariaDB graceful shutdown through a distribution-supported administrative control channel. diff --git a/scripts/publish-singleplayer.ps1 b/scripts/publish-singleplayer.ps1 new file mode 100644 index 0000000000..a6f2ed86e5 --- /dev/null +++ b/scripts/publish-singleplayer.ps1 @@ -0,0 +1,84 @@ +param( + [ValidateSet("Debug", "Release")] + [string] $Configuration = "Release", + [string] $OutputDirectory +) + +$ErrorActionPreference = "Stop" +$repoRoot = [IO.Path]::GetFullPath((Split-Path $PSScriptRoot -Parent)) +if ([string]::IsNullOrWhiteSpace($OutputDirectory)) { + $OutputDirectory = Join-Path $repoRoot "artifacts\ACE-SinglePlayer" +} +$OutputDirectory = [IO.Path]::GetFullPath($OutputDirectory) +$artifactsRoot = [IO.Path]::GetFullPath((Join-Path $repoRoot "artifacts")) +$artifactsPrefix = $artifactsRoot.TrimEnd([IO.Path]::DirectorySeparatorChar, [IO.Path]::AltDirectorySeparatorChar) + [IO.Path]::DirectorySeparatorChar +if ($OutputDirectory -ne $artifactsRoot -and -not $OutputDirectory.StartsWith($artifactsPrefix, [StringComparison]::OrdinalIgnoreCase)) { + throw "OutputDirectory must remain under $artifactsRoot" +} + +$localDotnet = Join-Path $repoRoot ".dotnet\dotnet.exe" +$dotnet = if (Test-Path -LiteralPath $localDotnet) { + $localDotnet +} else { + (Get-Command dotnet -ErrorAction Stop).Source +} + +# Microsoft.NET.Publish.targets uses a single-quoted item transform for PublishDir. +# Staging outside a repository path containing an apostrophe avoids MSB3094 on .NET 10. +$tempRoot = [IO.Path]::GetFullPath([IO.Path]::GetTempPath()) +$stage = [IO.Path]::GetFullPath((Join-Path $tempRoot "ACE-SinglePlayer-Publish-$PID")) +$tempPrefix = $tempRoot.TrimEnd([IO.Path]::DirectorySeparatorChar, [IO.Path]::AltDirectorySeparatorChar) + [IO.Path]::DirectorySeparatorChar +if (-not $stage.StartsWith($tempPrefix, [StringComparison]::OrdinalIgnoreCase)) { + throw "Temporary staging directory must remain under $tempRoot" +} +$launcherPublish = Join-Path $stage "Launcher" +$serverPublish = Join-Path $stage "Server" +$decalHostPublish = Join-Path $stage "DecalHost" + +function Invoke-DotNet([string[]] $Arguments) { + & $dotnet @Arguments + if ($LASTEXITCODE -ne 0) { + throw "dotnet $($Arguments -join ' ') failed with exit code $LASTEXITCODE" + } +} + +foreach ($path in @($stage, $OutputDirectory)) { + if (Test-Path -LiteralPath $path) { + Remove-Item -LiteralPath $path -Recurse -Force + } +} +New-Item -ItemType Directory -Path $launcherPublish, $serverPublish, $decalHostPublish, $OutputDirectory | Out-Null + +Write-Host "Publishing ACE.Server as self-contained Windows x64..." +Invoke-DotNet @("publish", (Join-Path $repoRoot "Source\ACE.Server\ACE.Server.csproj"), "-c", $Configuration, "-r", "win-x64", "--self-contained", "true", "-o", $serverPublish) + +Write-Host "Publishing ACE.SinglePlayer as self-contained Windows x64..." +Invoke-DotNet @("publish", (Join-Path $repoRoot "Source\ACE.SinglePlayer\ACE.SinglePlayer.csproj"), "-c", $Configuration, "-r", "win-x64", "--self-contained", "true", "-o", $launcherPublish) + +Write-Host "Publishing the optional Decal helper as a self-contained Windows x86 executable..." +Invoke-DotNet @("publish", (Join-Path $repoRoot "Source\ACE.SinglePlayer.DecalHost\ACE.SinglePlayer.DecalHost.csproj"), "-c", $Configuration, "-r", "win-x86", "--self-contained", "true", "-p:PublishSingleFile=true", "-o", $decalHostPublish) + +Copy-Item -Path (Join-Path $launcherPublish "*") -Destination $OutputDirectory -Recurse -Force +New-Item -ItemType Directory -Path (Join-Path $OutputDirectory "Server"), (Join-Path $OutputDirectory "Tools") | Out-Null +Copy-Item -Path (Join-Path $serverPublish "*") -Destination (Join-Path $OutputDirectory "Server") -Recurse -Force +Copy-Item -Path (Join-Path $decalHostPublish "ACE.SinglePlayer.DecalHost.exe") -Destination (Join-Path $OutputDirectory "Tools") -Force + +foreach ($directory in @("Runtime", "Mods", "Logs", "Client", "Docs")) { + New-Item -ItemType Directory -Path (Join-Path $OutputDirectory $directory) -Force | Out-Null +} +Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_FIRST_RUN.md") (Join-Path $OutputDirectory "FIRST_RUN.md") +Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_ARCHITECTURE.md") (Join-Path $OutputDirectory "Docs") +Copy-Item (Join-Path $repoRoot "docs\AQUIFIR_MOD_COMPATIBILITY.md") (Join-Path $OutputDirectory "Docs") +Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_ROADMAP.md") (Join-Path $OutputDirectory "Docs") +Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_BUILD_AND_TEST.md") (Join-Path $OutputDirectory "Docs") + +$forbidden = Get-ChildItem -LiteralPath $OutputDirectory -Recurse -File | Where-Object { + $_.Name -in @("Config.js", "settings.json", "acclient.exe", "mariadbd.exe", "ace-server.ready.json", "ace-server.process.json") -or + $_.Name -like "client_*.dat" -or $_.Extension -eq ".log" +} +if ($forbidden) { + throw "Packaging safety check found forbidden runtime/proprietary files: $($forbidden.FullName -join ', ')" +} + +Remove-Item -LiteralPath $stage -Recurse -Force +Write-Host "ACE Single Player package created at: $OutputDirectory" From 76cf3f7a80259ac397c5a6540b6c7d0fad18b9e0 Mon Sep 17 00:00:00 2001 From: titaniumweiner <147983421+titaniumweiner@users.noreply.github.com> Date: Tue, 14 Jul 2026 19:40:51 -0400 Subject: [PATCH 02/15] Add isolated private MariaDB launcher support --- .../ConfigurationAndValidationTests.cs | 4 + .../PrivateDatabaseTests.cs | 213 +++++++++ .../SavedPrivateDatabaseIntegrationTests.cs | 48 ++ .../SettingsAndSecretsTests.cs | 67 +++ .../Database/DatabaseBootstrapper.cs | 212 ++++++++- .../Database/DatabaseConnectionFactory.cs | 19 +- .../Database/DatabaseRuntimeFactory.cs | 6 +- .../Database/ExternalMariaDbRuntime.cs | 18 +- .../Database/ManagedMariaDbRuntime.cs | 417 ++++++++++++++++-- .../Database/MariaDbInstallationLocator.cs | 91 ++++ .../Database/PrivateDatabasePortFinder.cs | 38 ++ .../Database/WorldSqlPackageInspector.cs | 42 ++ .../Infrastructure/FilePermissionHardener.cs | 16 + .../Infrastructure/SettingsStore.cs | 27 ++ .../Infrastructure/SetupValidator.cs | 30 +- .../Models/LauncherSettings.cs | 28 +- .../Orchestration/LauncherController.cs | 18 +- Source/ACE.SinglePlayer/Program.cs | 8 +- .../Properties/AssemblyInfo.cs | 3 + Source/ACE.SinglePlayer/UI/SetupWizardForm.cs | 201 +++++++-- docs/SINGLE_PLAYER_ARCHITECTURE.md | 14 +- docs/SINGLE_PLAYER_BUILD_AND_TEST.md | 9 + docs/SINGLE_PLAYER_FIRST_RUN.md | 18 +- docs/SINGLE_PLAYER_ROADMAP.md | 3 +- 24 files changed, 1419 insertions(+), 131 deletions(-) create mode 100644 Source/ACE.SinglePlayer.Tests/PrivateDatabaseTests.cs create mode 100644 Source/ACE.SinglePlayer.Tests/SavedPrivateDatabaseIntegrationTests.cs create mode 100644 Source/ACE.SinglePlayer/Database/MariaDbInstallationLocator.cs create mode 100644 Source/ACE.SinglePlayer/Database/PrivateDatabasePortFinder.cs create mode 100644 Source/ACE.SinglePlayer/Database/WorldSqlPackageInspector.cs create mode 100644 Source/ACE.SinglePlayer/Properties/AssemblyInfo.cs diff --git a/Source/ACE.SinglePlayer.Tests/ConfigurationAndValidationTests.cs b/Source/ACE.SinglePlayer.Tests/ConfigurationAndValidationTests.cs index 5a85af2b05..3d6dcf6351 100644 --- a/Source/ACE.SinglePlayer.Tests/ConfigurationAndValidationTests.cs +++ b/Source/ACE.SinglePlayer.Tests/ConfigurationAndValidationTests.cs @@ -74,6 +74,10 @@ private static LauncherSettings ValidSettings(string root) DatFilesDirectory = root, ModsDirectory = Path.Combine(root, "Mods"), RuntimeDirectory = Path.Combine(root, "Runtime"), + DatabaseMode = DatabaseMode.External, + DatabaseHost = "127.0.0.1", + DatabasePort = 3306, + DatabaseUsername = "root", ProtectedAccountPassword = "protected", ProtectedDatabasePassword = "protected" }; diff --git a/Source/ACE.SinglePlayer.Tests/PrivateDatabaseTests.cs b/Source/ACE.SinglePlayer.Tests/PrivateDatabaseTests.cs new file mode 100644 index 0000000000..66a9a7da2d --- /dev/null +++ b/Source/ACE.SinglePlayer.Tests/PrivateDatabaseTests.cs @@ -0,0 +1,213 @@ +using System.Net; +using System.Net.Sockets; + +using Microsoft.VisualStudio.TestTools.UnitTesting; +using MySqlConnector; + +using ACE.SinglePlayer.Database; +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Tests; + +[TestClass] +public sealed class PrivateDatabaseTests +{ + [TestMethod] + public void LocatorFindsNewestCompleteMariaDbInstallation() + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + CreateFakeInstallation(root, "MariaDB 10.11"); + var expected = CreateFakeInstallation(root, "MariaDB 11.2"); + var incomplete = Path.Combine(root, "MariaDB 12.0", "bin"); + Directory.CreateDirectory(incomplete); + File.WriteAllText(Path.Combine(incomplete, "mariadbd.exe"), string.Empty); + + Assert.AreEqual(expected, MariaDbInstallationLocator.FindUnderRoots(new[] { root })); + } + finally + { + Directory.Delete(root, true); + } + } + + [TestMethod] + public void LocatorFindsImportClientBesideServer() + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + var server = CreateFakeInstallation(root, "MariaDB 11.2"); + var expected = Path.Combine(Path.GetDirectoryName(server)!, "mariadb.exe"); + Assert.AreEqual(expected, MariaDbInstallationLocator.FindClient(server)); + } + finally + { + Directory.Delete(root, true); + } + } + + [TestMethod] + public async Task WorldPackageInspectorRejectsSchemaOnlySqlAndAcceptsRequiredData() + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + var schemaOnly = Path.Combine(root, "WorldBase.sql"); + var populated = Path.Combine(root, "ACE-World-Database.sql"); + await File.WriteAllTextAsync(schemaOnly, "CREATE TABLE `weenie` (`class_Id` int);"); + await File.WriteAllTextAsync(populated, + new string('-', 70_000) + "INSERT INTO `weenie` VALUES (1,'human',10,'2005-02-09 10:00:00');"); + + Assert.IsFalse(await WorldSqlPackageInspector.ContainsRequiredWorldDataAsync(schemaOnly, CancellationToken.None)); + Assert.IsTrue(await WorldSqlPackageInspector.ContainsRequiredWorldDataAsync(populated, CancellationToken.None)); + } + finally + { + Directory.Delete(root, true); + } + } + + [TestMethod] + public async Task WorldImportStreamReplacesDatabaseNameAcrossBufferBoundaries() + { + var prefix = new string('x', 1024 * 1024 - 5); + await using var source = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(prefix + "`ace_world` tail")); + await using var destination = new MemoryStream(); + + await DatabaseBootstrapper.CopyReplacingAsync(source, destination, + System.Text.Encoding.UTF8.GetBytes("`ace_world`"), + System.Text.Encoding.UTF8.GetBytes("`custom_world`"), CancellationToken.None); + + Assert.AreEqual(prefix + "`custom_world` tail", System.Text.Encoding.UTF8.GetString(destination.ToArray())); + } + + [TestMethod] + public void PortFinderSkipsAnOccupiedLoopbackPort() + { + using var listener = new TcpListener(IPAddress.Loopback, 0); + listener.Start(); + var occupied = (ushort)((IPEndPoint)listener.LocalEndpoint).Port; + if (occupied > ushort.MaxValue - 10) + return; + + var selected = PrivateDatabasePortFinder.FindAvailablePort(occupied, (ushort)(occupied + 10)); + Assert.AreNotEqual(occupied, selected); + } + + [TestMethod] + public void PrivateArgumentsStayLoopbackOnlyAndDoNotEnableRemoteRoot() + { + var initialization = ManagedMariaDbRuntime.CreateInitializationArguments(@"C:\ACE Runtime\Database", "secret value", 3307); + var server = ManagedMariaDbRuntime.CreateServerArguments(@"C:\ACE Runtime\Database", 3307); + + CollectionAssert.Contains(initialization.ToArray(), "--password=secret value"); + CollectionAssert.Contains(server.ToArray(), "--bind-address=127.0.0.1"); + CollectionAssert.DoesNotContain(initialization.ToArray(), "--allow-remote-root-access"); + Assert.AreEqual("--no-defaults", server[0]); + } + + [TestMethod] + [TestCategory("MariaDbIntegration")] + public async Task InstalledMariaDbCanInitializeBootstrapValidateAndStopPrivateInstance() + { + var mariaDb = Environment.GetEnvironmentVariable("ACE_TEST_MARIADBD"); + if (string.IsNullOrWhiteSpace(mariaDb) || !File.Exists(mariaDb)) + return; + + var root = TestPaths.CreateTemporaryDirectory(); + try + { + var protector = new SecretProtector(); + var serverDirectory = Path.Combine(root, "Server"); + var baseDirectory = Path.Combine(serverDirectory, "DatabaseSetupScripts", "Base"); + Directory.CreateDirectory(baseDirectory); + var repositoryRoot = FindRepositoryRoot(); + foreach (var name in new[] { "AuthenticationBase.sql", "ShardBase.sql", "WorldBase.sql" }) + File.Copy(Path.Combine(repositoryRoot, "Database", "Base", name), Path.Combine(baseDirectory, name)); + var populatedWorld = Environment.GetEnvironmentVariable("ACE_TEST_WORLD_SQL"); + if (string.IsNullOrWhiteSpace(populatedWorld) || !File.Exists(populatedWorld)) + { + populatedWorld = Path.Combine(baseDirectory, "PopulatedWorld.sql"); + File.Copy(Path.Combine(baseDirectory, "WorldBase.sql"), populatedWorld); + await File.AppendAllTextAsync(populatedWorld, + "\r\nUSE `ace_world`;\r\nINSERT INTO `weenie` VALUES (1,'human',10,'2005-02-09 10:00:00');\r\n"); + } + + var serverExe = Path.Combine(serverDirectory, "ACE.Server.exe"); + File.WriteAllText(serverExe, string.Empty); + var settings = new LauncherSettings + { + DatabaseMode = DatabaseMode.Private, + DatabaseHost = "127.0.0.1", + DatabasePort = PrivateDatabasePortFinder.FindAvailablePort(3340, 3399), + DatabaseUsername = "ace_singleplayer", + ProtectedDatabasePassword = protector.Protect(SecretProtector.GeneratePassword()), + ProtectedPrivateDatabaseAdminPassword = protector.Protect(SecretProtector.GeneratePassword()), + ManagedDatabaseExePath = mariaDb, + RuntimeDirectory = Path.Combine(root, "Runtime"), + PrivateDatabaseDirectoryPath = Path.Combine(root, "Runtime", "Database"), + ServerExePath = serverExe, + WorldDatabaseSqlPath = populatedWorld + }; + settings.ProtectedPrivateDatabasePassword = settings.ProtectedDatabasePassword; + + using var log = new LauncherLog(Path.Combine(root, "Logs")); + var factory = new DatabaseConnectionFactory(protector); + await using var runtime = new ManagedMariaDbRuntime(factory, new ExternalMariaDbRuntime(factory), log); + await runtime.StartAsync(settings, CancellationToken.None); + + // Reproduce the old launcher's failure state: all world tables exist, but they are empty. + await using (var connection = factory.Create(settings)) + { + await connection.OpenAsync(CancellationToken.None); + var schemaOnlySql = await File.ReadAllTextAsync(Path.Combine(baseDirectory, "WorldBase.sql")); + await using var schemaOnly = new MySqlCommand(schemaOnlySql, connection) { CommandTimeout = 300 }; + await schemaOnly.ExecuteNonQueryAsync(CancellationToken.None); + } + + await new DatabaseBootstrapper(factory).BootstrapAsync(settings, settings.WorldDatabaseSqlPath, CancellationToken.None); + var validation = await runtime.ValidateAsync(settings, CancellationToken.None); + + Assert.IsTrue(validation.IsValid, validation.Message); + Assert.IsTrue(Directory.Exists(Path.Combine(settings.PrivateDatabaseDirectory, "mysql"))); + await runtime.StopAsync(CancellationToken.None); + } + finally + { + for (var attempt = 0; attempt < 10; attempt++) + { + try + { + Directory.Delete(root, true); + break; + } + catch (IOException) when (attempt < 9) + { + await Task.Delay(200); + } + } + } + } + + private static string CreateFakeInstallation(string root, string name) + { + var bin = Path.Combine(root, name, "bin"); + Directory.CreateDirectory(bin); + var server = Path.Combine(bin, "mariadbd.exe"); + File.WriteAllText(server, string.Empty); + File.WriteAllText(Path.Combine(bin, "mariadb-install-db.exe"), string.Empty); + File.WriteAllText(Path.Combine(bin, "mariadb.exe"), string.Empty); + return server; + } + + private static string FindRepositoryRoot() + { + var directory = new DirectoryInfo(AppContext.BaseDirectory); + while (directory is not null && !Directory.Exists(Path.Combine(directory.FullName, "Database", "Base"))) + directory = directory.Parent; + return directory?.FullName ?? throw new DirectoryNotFoundException("Could not locate Database\\Base."); + } +} diff --git a/Source/ACE.SinglePlayer.Tests/SavedPrivateDatabaseIntegrationTests.cs b/Source/ACE.SinglePlayer.Tests/SavedPrivateDatabaseIntegrationTests.cs new file mode 100644 index 0000000000..7e9139ecd6 --- /dev/null +++ b/Source/ACE.SinglePlayer.Tests/SavedPrivateDatabaseIntegrationTests.cs @@ -0,0 +1,48 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using ACE.SinglePlayer.Database; +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Tests; + +[TestClass] +public sealed class SavedPrivateDatabaseIntegrationTests +{ + [TestMethod] + [TestCategory("SavedPrivateDatabaseIntegration")] + public async Task SavedPrivateDatabaseCanBootstrapAndValidate() + { + if (!string.Equals(Environment.GetEnvironmentVariable("ACE_TEST_SAVED_PRIVATE_DATABASE"), "1", + StringComparison.Ordinal)) + return; + + var settings = await new SettingsStore().LoadAsync() + ?? throw new InvalidOperationException("ACE Single Player settings have not been saved."); + Assert.AreEqual(DatabaseMode.Private, settings.DatabaseMode); + + var logRoot = TestPaths.CreateTemporaryDirectory(); + try + { + using var log = new LauncherLog(logRoot); + var factory = new DatabaseConnectionFactory(new SecretProtector()); + await using var runtime = new ManagedMariaDbRuntime(factory, new ExternalMariaDbRuntime(factory), log); + try + { + await runtime.StartAsync(settings, CancellationToken.None); + await new DatabaseBootstrapper(factory, log).BootstrapAsync( + settings, settings.WorldDatabaseSqlPath, CancellationToken.None); + var validation = await runtime.ValidateAsync(settings, CancellationToken.None); + Assert.IsTrue(validation.IsValid, validation.Message); + } + finally + { + await runtime.StopAsync(CancellationToken.None); + } + } + finally + { + Directory.Delete(logRoot, recursive: true); + } + } +} diff --git a/Source/ACE.SinglePlayer.Tests/SettingsAndSecretsTests.cs b/Source/ACE.SinglePlayer.Tests/SettingsAndSecretsTests.cs index 27943038bc..99a3539391 100644 --- a/Source/ACE.SinglePlayer.Tests/SettingsAndSecretsTests.cs +++ b/Source/ACE.SinglePlayer.Tests/SettingsAndSecretsTests.cs @@ -57,6 +57,73 @@ public async Task NewerSettingsVersionIsRejected() } } + [TestMethod] + public async Task VersionOneLocalRootSettingsMigrateToPrivateDatabase() + { + var directory = TestPaths.CreateTemporaryDirectory(); + try + { + var path = Path.Combine(directory, "settings.json"); + await File.WriteAllTextAsync(path, + """ + { + "SettingsVersion": 1, + "DatabaseMode": "External", + "DatabaseHost": "127.0.0.1", + "DatabasePort": 3306, + "DatabaseUsername": "root", + "ProtectedDatabasePassword": "old-protected-password" + } + """); + + var loaded = await new SettingsStore(path).LoadAsync(); + + Assert.IsNotNull(loaded); + Assert.AreEqual(LauncherSettings.CurrentVersion, loaded.SettingsVersion); + Assert.AreEqual(DatabaseMode.Private, loaded.DatabaseMode); + Assert.AreEqual((ushort)3307, loaded.DatabasePort); + Assert.AreEqual("ace_singleplayer", loaded.DatabaseUsername); + Assert.AreEqual(string.Empty, loaded.ProtectedDatabasePassword); + Assert.AreEqual("old-protected-password", loaded.ProtectedExternalDatabasePassword); + } + finally + { + Directory.Delete(directory, true); + } + } + + [TestMethod] + public async Task VersionOneManagedRootPasswordBecomesPrivateAdministratorPassword() + { + var directory = TestPaths.CreateTemporaryDirectory(); + try + { + var path = Path.Combine(directory, "settings.json"); + await File.WriteAllTextAsync(path, + """ + { + "SettingsVersion": 1, + "DatabaseMode": "ManagedExperimental", + "DatabaseHost": "127.0.0.1", + "DatabasePort": 3310, + "DatabaseUsername": "root", + "ProtectedDatabasePassword": "old-managed-root-password" + } + """); + + var loaded = await new SettingsStore(path).LoadAsync(); + + Assert.IsNotNull(loaded); + Assert.AreEqual(DatabaseMode.Private, loaded.DatabaseMode); + Assert.AreEqual("old-managed-root-password", loaded.ProtectedPrivateDatabaseAdminPassword); + Assert.AreEqual(string.Empty, loaded.ProtectedDatabasePassword); + } + finally + { + Directory.Delete(directory, true); + } + } + [TestMethod] public void DpapiRoundTripUsesCurrentWindowsUser() { diff --git a/Source/ACE.SinglePlayer/Database/DatabaseBootstrapper.cs b/Source/ACE.SinglePlayer/Database/DatabaseBootstrapper.cs index 54a52292b2..3c5c22587b 100644 --- a/Source/ACE.SinglePlayer/Database/DatabaseBootstrapper.cs +++ b/Source/ACE.SinglePlayer/Database/DatabaseBootstrapper.cs @@ -1,5 +1,9 @@ +using System.Diagnostics; +using System.Text; + using MySqlConnector; +using ACE.SinglePlayer.Infrastructure; using ACE.SinglePlayer.Models; namespace ACE.SinglePlayer.Database; @@ -7,10 +11,12 @@ namespace ACE.SinglePlayer.Database; public sealed class DatabaseBootstrapper { private readonly DatabaseConnectionFactory connectionFactory; + private readonly LauncherLog? log; - public DatabaseBootstrapper(DatabaseConnectionFactory connectionFactory) + public DatabaseBootstrapper(DatabaseConnectionFactory connectionFactory, LauncherLog? log = null) { this.connectionFactory = connectionFactory; + this.log = log; } public async Task BootstrapAsync(LauncherSettings settings, string worldSqlPath, CancellationToken cancellationToken) @@ -26,16 +32,194 @@ public async Task BootstrapAsync(LauncherSettings settings, string worldSqlPath, await ApplyIfMissingAsync(connection, settings.AuthenticationDatabaseName, "account", authenticationSql, "ace_auth", cancellationToken); await ApplyIfMissingAsync(connection, settings.ShardDatabaseName, "character", shardSql, "ace_shard", cancellationToken); + await PrepareWorldAsync(connection, settings, worldSqlPath, cancellationToken); + } + + private async Task PrepareWorldAsync(MySqlConnection connection, LauncherSettings settings, string worldSqlPath, + CancellationToken cancellationToken) + { + var schemaExists = await ExternalMariaDbRuntime.SchemaExistsAsync(connection, settings.WorldDatabaseName, cancellationToken); + var tableExists = schemaExists && await ExternalMariaDbRuntime.TableExistsAsync( + connection, settings.WorldDatabaseName, "weenie", cancellationToken); + var requiredDataExists = tableExists && await ExternalMariaDbRuntime.RequiredHumanExistsAsync( + connection, settings.WorldDatabaseName, cancellationToken); + if (requiredDataExists) + return; - if (!await ExternalMariaDbRuntime.SchemaExistsAsync(connection, settings.WorldDatabaseName, cancellationToken)) + if (schemaExists && settings.DatabaseMode == DatabaseMode.External) + throw new InvalidOperationException( + $"Database '{settings.WorldDatabaseName}' exists but is missing required ACE world data. It was not modified."); + + if (!File.Exists(worldSqlPath)) + throw new FileNotFoundException( + "Select the populated ACE-World-Database SQL package before initializing the world database.", worldSqlPath); + if (!await WorldSqlPackageInspector.ContainsRequiredWorldDataAsync(worldSqlPath, cancellationToken)) + throw new InvalidDataException( + "The selected World SQL file contains empty table definitions but not the required ACE world data. " + + "Do not select Database\\Base\\WorldBase.sql. Extract and select ACE-World-Database-*.sql from the official ACE-World release package."); + + if (settings.DatabaseMode == DatabaseMode.Private) + await ImportPrivateWorldAsync(settings, worldSqlPath, cancellationToken); + else + await ApplySqlAsync(connection, settings.WorldDatabaseName, "weenie", worldSqlPath, "ace_world", cancellationToken); + + if (!await ExternalMariaDbRuntime.TableExistsAsync(connection, settings.WorldDatabaseName, "weenie", cancellationToken) || + !await ExternalMariaDbRuntime.RequiredHumanExistsAsync(connection, settings.WorldDatabaseName, cancellationToken)) { - if (!File.Exists(worldSqlPath)) - throw new FileNotFoundException("Select an ACE world-database SQL package before initializing a missing world database.", worldSqlPath); - await ApplyIfMissingAsync(connection, settings.WorldDatabaseName, "weenie", worldSqlPath, "ace_world", cancellationToken); + throw new InvalidOperationException( + $"The world SQL package completed but '{settings.WorldDatabaseName}' still lacks the required Human world record (weenie 1)."); } - else if (!await ExternalMariaDbRuntime.TableExistsAsync(connection, settings.WorldDatabaseName, "weenie", cancellationToken)) + } + + private async Task ImportPrivateWorldAsync(LauncherSettings settings, string scriptPath, + CancellationToken cancellationToken) + { + var client = MariaDbInstallationLocator.FindClient(settings.ManagedDatabaseExePath) + ?? throw new FileNotFoundException( + "The MariaDB import program (mariadb.exe or mysql.exe) was not found beside mariadbd.exe. Repair the MariaDB installation and retry."); + var privateRoot = Path.GetDirectoryName(settings.PrivateDatabaseDirectory) + ?? throw new InvalidOperationException("The private database directory has no parent directory."); + Directory.CreateDirectory(privateRoot); + var optionsPath = Path.Combine(privateRoot, "DatabaseImport-" + Guid.NewGuid().ToString("N") + ".cnf"); + var targetDatabase = settings.WorldDatabaseName.Replace("`", "``", StringComparison.Ordinal); + using var administrator = connectionFactory.CreatePrivateAdministrator(settings); + var connection = new MySqlConnectionStringBuilder(administrator.ConnectionString); + var options = $"[client]{Environment.NewLine}" + + $"host={connection.Server}{Environment.NewLine}" + + $"port={connection.Port}{Environment.NewLine}" + + $"user={connection.UserID}{Environment.NewLine}" + + $"password={connection.Password}{Environment.NewLine}" + + $"protocol=tcp{Environment.NewLine}"; + + try { - throw new InvalidOperationException($"Database '{settings.WorldDatabaseName}' exists but is partial. It was not modified."); + await File.WriteAllTextAsync(optionsPath, options, new UTF8Encoding(encoderShouldEmitUTF8Identifier: false), cancellationToken); + FilePermissionHardener.RestrictToCurrentUser(optionsPath); + + var startInfo = new ProcessStartInfo + { + FileName = client, + WorkingDirectory = Path.GetDirectoryName(client)!, + UseShellExecute = false, + RedirectStandardInput = true, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true + }; + // MariaDB requires the defaults-file argument to be first. + startInfo.ArgumentList.Add($"--defaults-extra-file={optionsPath}"); + startInfo.ArgumentList.Add("--binary-mode=1"); + startInfo.ArgumentList.Add("--max-allowed-packet=1G"); + + using var process = new Process { StartInfo = startInfo }; + log?.Write($"Importing the populated ACE world database from '{Path.GetFileName(scriptPath)}'. This can take several minutes."); + if (!process.Start()) + throw new InvalidOperationException("The MariaDB world import process did not start."); + + var standardOutput = process.StandardOutput.ReadToEndAsync(); + var standardError = process.StandardError.ReadToEndAsync(); + using var timeout = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); + timeout.CancelAfter(TimeSpan.FromMinutes(20)); + var importToken = timeout.Token; + Exception? copyError = null; + try + { + try + { + await using var sql = new FileStream(scriptPath, FileMode.Open, FileAccess.Read, FileShare.Read, + bufferSize: 1024 * 1024, FileOptions.Asynchronous | FileOptions.SequentialScan); + await CopyReplacingAsync(sql, process.StandardInput.BaseStream, + Encoding.UTF8.GetBytes("`ace_world`"), Encoding.UTF8.GetBytes($"`{targetDatabase}`"), importToken); + await process.StandardInput.BaseStream.FlushAsync(importToken); + } + catch (Exception ex) when (ex is IOException or ObjectDisposedException) + { + copyError = ex; + } + finally + { + process.StandardInput.Close(); + } + + await process.WaitForExitAsync(importToken); + } + catch (OperationCanceledException) when (!cancellationToken.IsCancellationRequested) + { + throw new TimeoutException("The ACE world database import did not finish within 20 minutes."); + } + finally + { + if (!process.HasExited) + { + process.Kill(entireProcessTree: true); + await process.WaitForExitAsync(CancellationToken.None); + } + } + + var output = Condense((await standardError) + " " + (await standardOutput)); + if (process.ExitCode != 0 || copyError is not null) + { + throw new InvalidOperationException( + $"The ACE world database import failed with exit code {process.ExitCode}. {output}", copyError); + } + + log?.Write("The populated ACE world database imported successfully."); + } + finally + { + if (File.Exists(optionsPath)) + { + try + { + File.Delete(optionsPath); + } + catch (Exception ex) when (ex is IOException or UnauthorizedAccessException) + { + log?.Write("The temporary private-database import settings could not be removed: " + ex.Message); + } + } + } + } + + internal static async Task CopyReplacingAsync(Stream source, Stream destination, byte[] search, byte[] replacement, + CancellationToken cancellationToken) + { + if (search.Length == 0) + throw new ArgumentException("The search sequence cannot be empty.", nameof(search)); + + var buffer = new byte[1024 * 1024 + search.Length - 1]; + var retained = 0; + while (true) + { + var read = await source.ReadAsync(buffer.AsMemory(retained, buffer.Length - retained), cancellationToken); + var total = retained + read; + var finalBlock = read == 0; + var processThrough = finalBlock ? total : Math.Max(0, total - search.Length + 1); + var segmentStart = 0; + var index = 0; + + while (index < processThrough && index <= total - search.Length) + { + if (buffer.AsSpan(index, search.Length).SequenceEqual(search)) + { + await destination.WriteAsync(buffer.AsMemory(segmentStart, index - segmentStart), cancellationToken); + await destination.WriteAsync(replacement, cancellationToken); + index += search.Length; + segmentStart = index; + } + else + { + index++; + } + } + + var keepFrom = finalBlock ? total : Math.Max(segmentStart, processThrough); + await destination.WriteAsync(buffer.AsMemory(segmentStart, keepFrom - segmentStart), cancellationToken); + if (finalBlock) + return; + + retained = total - keepFrom; + buffer.AsSpan(keepFrom, retained).CopyTo(buffer); } } @@ -49,8 +233,14 @@ private static async Task ApplyIfMissingAsync(MySqlConnection connection, string return; } + await ApplySqlAsync(connection, database, coreTable, scriptPath, defaultDatabase, cancellationToken); + } + + private static async Task ApplySqlAsync(MySqlConnection connection, string database, string coreTable, + string scriptPath, string defaultDatabase, CancellationToken cancellationToken) + { var sql = await File.ReadAllTextAsync(scriptPath, cancellationToken); - sql = sql.Replace($"`{defaultDatabase}`", $"`{database.Replace("`", "``")}`", StringComparison.Ordinal); + sql = sql.Replace($"`{defaultDatabase}`", $"`{database.Replace("`", "``", StringComparison.Ordinal)}`", StringComparison.Ordinal); await using var command = new MySqlCommand(sql, connection) { CommandTimeout = 300 }; try { @@ -65,4 +255,10 @@ private static async Task ApplyIfMissingAsync(MySqlConnection connection, string if (!await ExternalMariaDbRuntime.TableExistsAsync(connection, database, coreTable, cancellationToken)) throw new InvalidOperationException($"The SQL package completed but '{database}.{coreTable}' is still missing."); } + + private static string Condense(string value) + { + var condensed = string.Join(" ", value.Split((char[]?)null, StringSplitOptions.RemoveEmptyEntries)); + return condensed.Length <= 1000 ? condensed : condensed[..1000] + "..."; + } } diff --git a/Source/ACE.SinglePlayer/Database/DatabaseConnectionFactory.cs b/Source/ACE.SinglePlayer/Database/DatabaseConnectionFactory.cs index bec8324231..d253d41fa5 100644 --- a/Source/ACE.SinglePlayer/Database/DatabaseConnectionFactory.cs +++ b/Source/ACE.SinglePlayer/Database/DatabaseConnectionFactory.cs @@ -15,13 +15,28 @@ public DatabaseConnectionFactory(ISecretProtector secretProtector) } public MySqlConnection Create(LauncherSettings settings, string? database = null) + { + return Create(settings, settings.DatabaseUsername, + secretProtector.Unprotect(settings.ProtectedDatabasePassword), database); + } + + public MySqlConnection CreatePrivateAdministrator(LauncherSettings settings) + { + if (settings.DatabaseMode == DatabaseMode.External) + throw new InvalidOperationException("Private administrator credentials are not available in external database mode."); + + return Create(settings, "root", + secretProtector.Unprotect(settings.ProtectedPrivateDatabaseAdminPassword), database: null); + } + + private static MySqlConnection Create(LauncherSettings settings, string username, string password, string? database) { var builder = new MySqlConnectionStringBuilder { Server = settings.DatabaseHost, Port = settings.DatabasePort, - UserID = settings.DatabaseUsername, - Password = secretProtector.Unprotect(settings.ProtectedDatabasePassword), + UserID = username, + Password = password, Database = database ?? string.Empty, SslMode = MySqlSslMode.None, AllowPublicKeyRetrieval = true, diff --git a/Source/ACE.SinglePlayer/Database/DatabaseRuntimeFactory.cs b/Source/ACE.SinglePlayer/Database/DatabaseRuntimeFactory.cs index a8eab02f5b..715f1b8117 100644 --- a/Source/ACE.SinglePlayer/Database/DatabaseRuntimeFactory.cs +++ b/Source/ACE.SinglePlayer/Database/DatabaseRuntimeFactory.cs @@ -17,8 +17,8 @@ public DatabaseRuntimeFactory(DatabaseConnectionFactory connectionFactory, Launc public IDatabaseRuntime Create(LauncherSettings settings) { var external = new ExternalMariaDbRuntime(connectionFactory); - return settings.DatabaseMode == DatabaseMode.ManagedExperimental - ? new ManagedMariaDbRuntime(external, log) - : external; + return settings.DatabaseMode == DatabaseMode.External + ? external + : new ManagedMariaDbRuntime(connectionFactory, external, log); } } diff --git a/Source/ACE.SinglePlayer/Database/ExternalMariaDbRuntime.cs b/Source/ACE.SinglePlayer/Database/ExternalMariaDbRuntime.cs index 14d2554a3c..2ad7718ed0 100644 --- a/Source/ACE.SinglePlayer/Database/ExternalMariaDbRuntime.cs +++ b/Source/ACE.SinglePlayer/Database/ExternalMariaDbRuntime.cs @@ -45,7 +45,14 @@ public async Task ValidateAsync(LauncherSettings setti return new(false, $"Database '{database}' is only partially initialized; required table '{required.Table}' is missing."); } - return new(true, "MariaDB/MySQL is reachable and all three ACE databases contain their required core tables."); + if (!await RequiredHumanExistsAsync(connection, settings.WorldDatabaseName, cancellationToken)) + { + return new(false, + $"World database '{settings.WorldDatabaseName}' has tables but not the required Human world record (weenie 1). " + + "Select the populated ACE-World-Database SQL package; Database\\Base\\WorldBase.sql contains only empty tables."); + } + + return new(true, "MariaDB/MySQL is reachable and all three ACE databases contain the required ACE data."); } catch (MySqlException ex) { @@ -77,4 +84,13 @@ internal static async Task TableExistsAsync(MySqlConnection connection, st command.Parameters.AddWithValue("@table", table); return Convert.ToInt32(await command.ExecuteScalarAsync(cancellationToken)) == 1; } + + internal static async Task RequiredHumanExistsAsync(MySqlConnection connection, string database, + CancellationToken cancellationToken) + { + var escapedDatabase = database.Replace("`", "``", StringComparison.Ordinal); + await using var command = new MySqlCommand( + $"SELECT COUNT(*) FROM `{escapedDatabase}`.`weenie` WHERE `class_Id` = 1 AND `class_Name` = 'human'", connection); + return Convert.ToInt32(await command.ExecuteScalarAsync(cancellationToken)) == 1; + } } diff --git a/Source/ACE.SinglePlayer/Database/ManagedMariaDbRuntime.cs b/Source/ACE.SinglePlayer/Database/ManagedMariaDbRuntime.cs index e26ea2999d..deecbc30f3 100644 --- a/Source/ACE.SinglePlayer/Database/ManagedMariaDbRuntime.cs +++ b/Source/ACE.SinglePlayer/Database/ManagedMariaDbRuntime.cs @@ -1,4 +1,7 @@ using System.Diagnostics; +using System.Text; + +using MySqlConnector; using ACE.SinglePlayer.Infrastructure; using ACE.SinglePlayer.Models; @@ -7,12 +10,16 @@ namespace ACE.SinglePlayer.Database; public sealed class ManagedMariaDbRuntime : IDatabaseRuntime { + private const string PrivateUser = "ace_singleplayer"; + private readonly DatabaseConnectionFactory connectionFactory; private readonly ExternalMariaDbRuntime validator; private readonly LauncherLog log; private Process? process; + private LauncherSettings? activeSettings; - public ManagedMariaDbRuntime(ExternalMariaDbRuntime validator, LauncherLog log) + public ManagedMariaDbRuntime(DatabaseConnectionFactory connectionFactory, ExternalMariaDbRuntime validator, LauncherLog log) { + this.connectionFactory = connectionFactory; this.validator = validator; this.log = log; } @@ -23,50 +30,44 @@ public async Task StartAsync(LauncherSettings settings, CancellationToken cancel { if (process is { HasExited: false }) return; - if (!File.Exists(settings.ManagedDatabaseExePath)) - throw new FileNotFoundException("The configured mariadbd.exe was not found.", settings.ManagedDatabaseExePath); - var dataDirectory = Path.Combine(settings.RuntimeDirectory, "Database"); - if (!Directory.Exists(Path.Combine(dataDirectory, "mysql"))) - throw new InvalidOperationException( - "Managed MariaDB is experimental and its data directory is not initialized. Initialize this exact MariaDB distribution's data directory first, then retry. No database binaries are downloaded by the launcher."); + ValidatePrivateSettings(settings); + activeSettings = settings; - var startInfo = new ProcessStartInfo - { - FileName = settings.ManagedDatabaseExePath, - WorkingDirectory = Path.GetDirectoryName(settings.ManagedDatabaseExePath)!, - UseShellExecute = false, - RedirectStandardOutput = true, - RedirectStandardError = true, - CreateNoWindow = true - }; - startInfo.ArgumentList.Add($"--datadir={dataDirectory}"); - startInfo.ArgumentList.Add($"--port={settings.DatabasePort}"); - startInfo.ArgumentList.Add("--bind-address=127.0.0.1"); - startInfo.ArgumentList.Add("--console"); - - process = new Process { StartInfo = startInfo, EnableRaisingEvents = true }; - process.OutputDataReceived += (_, args) => { if (args.Data is not null) log.Write("[MariaDB] " + args.Data); }; - process.ErrorDataReceived += (_, args) => { if (args.Data is not null) log.Write("[MariaDB] " + args.Data); }; - if (!process.Start()) - throw new InvalidOperationException("MariaDB did not start."); - process.BeginOutputReadLine(); - process.BeginErrorReadLine(); + var dataDirectory = settings.PrivateDatabaseDirectory; + await MigrateLegacyDataDirectoryAsync(settings, cancellationToken); + var isInitialized = IsInitialized(dataDirectory); - var deadline = DateTime.UtcNow.AddSeconds(45); - DatabaseValidationResult result; - do + if (!PrivateDatabasePortFinder.IsAvailable(settings.DatabasePort)) { - cancellationToken.ThrowIfCancellationRequested(); - if (process.HasExited) - throw new InvalidOperationException($"Managed MariaDB exited unexpectedly (exit code {process.ExitCode})."); - result = await validator.ValidateAsync(settings, cancellationToken); - if (result.IsValid) + if (await CanConnectAsPrivateAdministratorAsync(settings, cancellationToken)) + { + log.Write($"Using the already-running private MariaDB on 127.0.0.1:{settings.DatabasePort}."); + await ProvisionApplicationUserAsync(settings, cancellationToken); return; - await Task.Delay(500, cancellationToken); - } while (DateTime.UtcNow < deadline); + } + + settings.DatabasePort = PrivateDatabasePortFinder.FindAvailablePort(); + log.Write($"Private MariaDB selected available loopback port {settings.DatabasePort}."); + } + + if (!isInitialized) + await InitializeDataDirectoryAsync(settings, cancellationToken); + + FilePermissionHardener.RestrictDirectoryToCurrentUser(dataDirectory); + process = StartServerProcess(settings); - throw new TimeoutException("Managed MariaDB started but did not become ready within 45 seconds. " + result.Message); + try + { + await WaitForAdministratorConnectionAsync(settings, cancellationToken); + await ProvisionApplicationUserAsync(settings, cancellationToken); + log.Write("Private MariaDB is ready and its ACE-only database user is configured."); + } + catch + { + await StopAsync(CancellationToken.None); + throw; + } } public Task ValidateAsync(LauncherSettings settings, CancellationToken cancellationToken) => @@ -77,14 +78,28 @@ public async Task StopAsync(CancellationToken cancellationToken) if (process is null || process.HasExited) return; - process.CloseMainWindow(); + if (activeSettings is not null) + { + try + { + await using var connection = connectionFactory.CreatePrivateAdministrator(activeSettings); + await connection.OpenAsync(cancellationToken); + await using var command = new MySqlCommand("SHUTDOWN", connection) { CommandTimeout = 10 }; + await command.ExecuteNonQueryAsync(cancellationToken); + } + catch (Exception ex) when (ex is MySqlException or TimeoutException or OperationCanceledException) + { + log.Write("Private MariaDB did not accept a graceful shutdown request: " + ex.Message); + } + } + try { - await process.WaitForExitAsync(cancellationToken).WaitAsync(TimeSpan.FromSeconds(10), cancellationToken); + await process.WaitForExitAsync(cancellationToken).WaitAsync(TimeSpan.FromSeconds(15), cancellationToken); } catch (TimeoutException) { - log.Write("Managed MariaDB did not accept a graceful close; stopping the launcher-owned process."); + log.Write("Private MariaDB did not stop within 15 seconds; stopping only the launcher-owned process."); process.Kill(entireProcessTree: true); await process.WaitForExitAsync(cancellationToken); } @@ -95,4 +110,322 @@ public async ValueTask DisposeAsync() await StopAsync(CancellationToken.None); process?.Dispose(); } + + internal static IReadOnlyList CreateInitializationArguments(string dataDirectory, string adminPassword, ushort port) => + new[] + { + $"--datadir={dataDirectory}", + $"--password={adminPassword}", + $"--port={port}", + "--silent" + }; + + internal static IReadOnlyList CreateServerArguments(string dataDirectory, ushort port) => + new[] + { + "--no-defaults", + $"--datadir={dataDirectory}", + $"--port={port}", + "--bind-address=127.0.0.1", + "--skip-networking=0", + "--max-connections=20", + "--local-infile=0", + "--console" + }; + + private static bool IsInitialized(string dataDirectory) => Directory.Exists(Path.Combine(dataDirectory, "mysql")); + + private async Task MigrateLegacyDataDirectoryAsync(LauncherSettings settings, CancellationToken cancellationToken) + { + var source = Path.GetFullPath(settings.LegacyPrivateDatabaseDirectory); + var target = Path.GetFullPath(settings.PrivateDatabaseDirectory); + if (string.Equals(source, target, StringComparison.OrdinalIgnoreCase) || !IsInitialized(source) || + (Directory.Exists(target) && Directory.EnumerateFileSystemEntries(target).Any())) + return; + + if (Directory.Exists(target)) + Directory.Delete(target); + + var parent = Path.GetDirectoryName(target) + ?? throw new InvalidOperationException("The private database directory has no parent directory."); + Directory.CreateDirectory(parent); + var staging = target + ".migrating-" + Guid.NewGuid().ToString("N"); + log.Write("Moving the private MariaDB data out of the launcher folder so cloud-sync software cannot lock its database files."); + + try + { + Directory.CreateDirectory(staging); + foreach (var sourceDirectory in Directory.EnumerateDirectories(source, "*", SearchOption.AllDirectories)) + { + cancellationToken.ThrowIfCancellationRequested(); + Directory.CreateDirectory(Path.Combine(staging, Path.GetRelativePath(source, sourceDirectory))); + } + + foreach (var sourceFile in Directory.EnumerateFiles(source, "*", SearchOption.AllDirectories)) + { + cancellationToken.ThrowIfCancellationRequested(); + var destinationFile = Path.Combine(staging, Path.GetRelativePath(source, sourceFile)); + Directory.CreateDirectory(Path.GetDirectoryName(destinationFile)!); + await using var input = new FileStream(sourceFile, FileMode.Open, FileAccess.Read, FileShare.Read, + bufferSize: 1024 * 1024, FileOptions.Asynchronous | FileOptions.SequentialScan); + await using var output = new FileStream(destinationFile, FileMode.CreateNew, FileAccess.Write, FileShare.None, + bufferSize: 1024 * 1024, FileOptions.Asynchronous | FileOptions.SequentialScan); + await input.CopyToAsync(output, cancellationToken); + } + + if (!IsInitialized(staging)) + throw new InvalidOperationException("The copied private database does not contain MariaDB system tables."); + FilePermissionHardener.RestrictDirectoryToCurrentUser(staging); + Directory.Move(staging, target); + log.Write($"Private MariaDB data moved to '{target}'. The previous copy was retained at '{source}' as a backup."); + } + catch + { + if (Directory.Exists(staging)) + Directory.Delete(staging, recursive: true); + throw; + } + } + + private static void ValidatePrivateSettings(LauncherSettings settings) + { + if (settings.DatabaseMode == DatabaseMode.External) + throw new InvalidOperationException("The private MariaDB runtime cannot start in external database mode."); + if (!File.Exists(settings.ManagedDatabaseExePath)) + throw new FileNotFoundException("MariaDB was not found. Install MariaDB or select mariadbd.exe in Settings.", settings.ManagedDatabaseExePath); + if (MariaDbInstallationLocator.FindInitializer(settings.ManagedDatabaseExePath) is null) + throw new FileNotFoundException("The MariaDB initializer was not found beside mariadbd.exe. Repair the MariaDB installation and retry."); + if (!string.Equals(settings.DatabaseHost, "127.0.0.1", StringComparison.Ordinal)) + throw new InvalidOperationException("The private database must use 127.0.0.1."); + if (!string.Equals(settings.DatabaseUsername, PrivateUser, StringComparison.Ordinal)) + throw new InvalidOperationException($"The private database must use its isolated '{PrivateUser}' account."); + if (string.IsNullOrWhiteSpace(settings.ProtectedDatabasePassword) || + string.IsNullOrWhiteSpace(settings.ProtectedPrivateDatabaseAdminPassword)) + throw new InvalidOperationException("Private database credentials have not been generated. Open Settings and save the setup again."); + } + + private async Task InitializeDataDirectoryAsync(LauncherSettings settings, CancellationToken cancellationToken) + { + var target = settings.PrivateDatabaseDirectory; + if (Directory.Exists(target) && Directory.EnumerateFileSystemEntries(target).Any()) + throw new InvalidOperationException( + $"The private database folder exists but is not a valid initialized MariaDB data directory: {target}. Its contents were left untouched."); + + var parent = Path.GetDirectoryName(target) + ?? throw new InvalidOperationException("The private database directory has no parent directory."); + Directory.CreateDirectory(parent); + var staging = Path.Combine(parent, "Database.initializing-" + Guid.NewGuid().ToString("N")); + var initializer = MariaDbInstallationLocator.FindInitializer(settings.ManagedDatabaseExePath)!; + var adminPassword = GetAdministratorPassword(settings); + var output = new StringBuilder(); + + try + { + using var initializerProcess = new Process + { + StartInfo = CreateProcessStartInfo(initializer, Path.GetDirectoryName(initializer)!, + CreateInitializationArguments(staging, adminPassword, settings.DatabasePort)), + EnableRaisingEvents = true + }; + initializerProcess.OutputDataReceived += (_, args) => AppendRedacted(output, args.Data, adminPassword); + initializerProcess.ErrorDataReceived += (_, args) => AppendRedacted(output, args.Data, adminPassword); + + log.Write("Initializing a private MariaDB data directory for this launcher. The system MariaDB service is not being changed."); + if (!initializerProcess.Start()) + throw new InvalidOperationException("The MariaDB initializer did not start."); + initializerProcess.BeginOutputReadLine(); + initializerProcess.BeginErrorReadLine(); + + using var timeout = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); + timeout.CancelAfter(TimeSpan.FromMinutes(2)); + try + { + await initializerProcess.WaitForExitAsync(timeout.Token); + } + catch (OperationCanceledException) when (!cancellationToken.IsCancellationRequested) + { + if (!initializerProcess.HasExited) + initializerProcess.Kill(entireProcessTree: true); + throw new TimeoutException("MariaDB initialization did not finish within two minutes."); + } + + if (initializerProcess.ExitCode != 0 || !IsInitialized(staging)) + throw new InvalidOperationException( + $"MariaDB initialization failed with exit code {initializerProcess.ExitCode}. {Condense(Snapshot(output))}"); + + if (Directory.Exists(target)) + Directory.Delete(target); + Directory.Move(staging, target); + FilePermissionHardener.RestrictDirectoryToCurrentUser(target); + log.Write("Private MariaDB data directory initialized successfully."); + } + finally + { + if (Directory.Exists(staging)) + { + try + { + Directory.Delete(staging, recursive: true); + } + catch (IOException ex) + { + log.Write("A failed MariaDB initialization staging folder could not be removed: " + ex.Message); + } + } + } + } + + private Process StartServerProcess(LauncherSettings settings) + { + var startInfo = CreateProcessStartInfo(settings.ManagedDatabaseExePath, + Path.GetDirectoryName(settings.ManagedDatabaseExePath)!, + CreateServerArguments(settings.PrivateDatabaseDirectory, settings.DatabasePort)); + + var serverProcess = new Process { StartInfo = startInfo, EnableRaisingEvents = true }; + var adminPassword = GetAdministratorPassword(settings); + var applicationPassword = GetApplicationPassword(settings); + serverProcess.OutputDataReceived += (_, args) => LogMariaDbLine(args.Data, adminPassword, applicationPassword); + serverProcess.ErrorDataReceived += (_, args) => LogMariaDbLine(args.Data, adminPassword, applicationPassword); + if (!serverProcess.Start()) + throw new InvalidOperationException("Private MariaDB did not start."); + serverProcess.BeginOutputReadLine(); + serverProcess.BeginErrorReadLine(); + return serverProcess; + } + + private async Task WaitForAdministratorConnectionAsync(LauncherSettings settings, CancellationToken cancellationToken) + { + var deadline = DateTime.UtcNow.AddSeconds(45); + Exception? lastError = null; + while (DateTime.UtcNow < deadline) + { + cancellationToken.ThrowIfCancellationRequested(); + if (process is { HasExited: true }) + throw new InvalidOperationException($"Private MariaDB exited unexpectedly (exit code {process.ExitCode}). Open Logs for details."); + + try + { + await using var connection = connectionFactory.CreatePrivateAdministrator(settings); + await connection.OpenAsync(cancellationToken); + return; + } + catch (MySqlException ex) + { + lastError = ex; + } + + await Task.Delay(300, cancellationToken); + } + + throw new TimeoutException( + "Private MariaDB started but its protected administrator credential was not accepted. " + + "The existing private data was not changed. Restore the matching settings before retrying. " + lastError?.Message); + } + + private async Task CanConnectAsPrivateAdministratorAsync(LauncherSettings settings, CancellationToken cancellationToken) + { + try + { + await using var connection = connectionFactory.CreatePrivateAdministrator(settings); + await connection.OpenAsync(cancellationToken); + return true; + } + catch (MySqlException) + { + return false; + } + } + + private async Task ProvisionApplicationUserAsync(LauncherSettings settings, CancellationToken cancellationToken) + { + await using var connection = connectionFactory.CreatePrivateAdministrator(settings); + await connection.OpenAsync(cancellationToken); + var password = GetApplicationPassword(settings); + + foreach (var host in new[] { "127.0.0.1", "localhost" }) + { + await ExecuteWithPasswordAsync(connection, + $"CREATE USER IF NOT EXISTS '{PrivateUser}'@'{host}' IDENTIFIED BY @password", password, cancellationToken); + await ExecuteWithPasswordAsync(connection, + $"ALTER USER '{PrivateUser}'@'{host}' IDENTIFIED BY @password", password, cancellationToken); + + foreach (var database in new[] + { + settings.AuthenticationDatabaseName, + settings.ShardDatabaseName, + settings.WorldDatabaseName + }) + { + var escapedDatabase = database.Replace("`", "``", StringComparison.Ordinal); + await using var grant = new MySqlCommand( + $"GRANT ALL PRIVILEGES ON `{escapedDatabase}`.* TO '{PrivateUser}'@'{host}'", connection); + await grant.ExecuteNonQueryAsync(cancellationToken); + } + } + } + + private static async Task ExecuteWithPasswordAsync(MySqlConnection connection, string sql, string password, + CancellationToken cancellationToken) + { + await using var command = new MySqlCommand(sql, connection); + command.Parameters.AddWithValue("@password", password); + await command.ExecuteNonQueryAsync(cancellationToken); + } + + private static ProcessStartInfo CreateProcessStartInfo(string executable, string workingDirectory, + IEnumerable arguments) + { + var startInfo = new ProcessStartInfo + { + FileName = executable, + WorkingDirectory = workingDirectory, + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true + }; + foreach (var argument in arguments) + startInfo.ArgumentList.Add(argument); + return startInfo; + } + + private string GetAdministratorPassword(LauncherSettings settings) + { + using var connection = connectionFactory.CreatePrivateAdministrator(settings); + return new MySqlConnectionStringBuilder(connection.ConnectionString).Password; + } + + private string GetApplicationPassword(LauncherSettings settings) + { + using var connection = connectionFactory.Create(settings); + return new MySqlConnectionStringBuilder(connection.ConnectionString).Password; + } + + private void LogMariaDbLine(string? line, params string[] secrets) + { + if (line is null) + return; + foreach (var secret in secrets.Where(value => value.Length > 0)) + line = line.Replace(secret, "[REDACTED]", StringComparison.Ordinal); + log.Write("[Private MariaDB] " + line); + } + + private static void AppendRedacted(StringBuilder output, string? line, string secret) + { + if (line is not null) + lock (output) + output.AppendLine(line.Replace(secret, "[REDACTED]", StringComparison.Ordinal)); + } + + private static string Snapshot(StringBuilder output) + { + lock (output) + return output.ToString(); + } + + private static string Condense(string value) + { + var condensed = string.Join(" ", value.Split((char[]?)null, StringSplitOptions.RemoveEmptyEntries)); + return condensed.Length <= 800 ? condensed : condensed[..800] + "..."; + } } diff --git a/Source/ACE.SinglePlayer/Database/MariaDbInstallationLocator.cs b/Source/ACE.SinglePlayer/Database/MariaDbInstallationLocator.cs new file mode 100644 index 0000000000..7db3060384 --- /dev/null +++ b/Source/ACE.SinglePlayer/Database/MariaDbInstallationLocator.cs @@ -0,0 +1,91 @@ +namespace ACE.SinglePlayer.Database; + +public static class MariaDbInstallationLocator +{ + public static string? FindServerExecutable(string? preferredPath = null) + { + if (!string.IsNullOrWhiteSpace(preferredPath) && File.Exists(preferredPath)) + return Path.GetFullPath(preferredPath); + + foreach (var pathEntry in (Environment.GetEnvironmentVariable("PATH") ?? string.Empty) + .Split(Path.PathSeparator, StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries)) + { + var candidate = Path.Combine(pathEntry, "mariadbd.exe"); + if (File.Exists(candidate) && FindInitializer(candidate) is not null) + return Path.GetFullPath(candidate); + } + + return FindUnderRoots(new[] + { + Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), + Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86) + }); + } + + internal static string? FindUnderRoots(IEnumerable roots) + { + var candidates = new List(); + foreach (var root in roots.Where(path => !string.IsNullOrWhiteSpace(path) && Directory.Exists(path))) + { + try + { + foreach (var directory in Directory.EnumerateDirectories(root, "MariaDB *", SearchOption.TopDirectoryOnly)) + { + var candidate = Path.Combine(directory, "bin", "mariadbd.exe"); + if (File.Exists(candidate) && FindInitializer(candidate) is not null) + candidates.Add(candidate); + } + } + catch (UnauthorizedAccessException) + { + // A locked Program Files child should not prevent checking other roots. + } + } + + return candidates + .OrderByDescending(GetVersionFromParentDirectory) + .ThenByDescending(File.GetLastWriteTimeUtc) + .FirstOrDefault(); + } + + public static string? FindInitializer(string serverExecutablePath) + { + var directory = Path.GetDirectoryName(serverExecutablePath); + if (directory is null) + return null; + + foreach (var name in new[] { "mariadb-install-db.exe", "mysql_install_db.exe" }) + { + var candidate = Path.Combine(directory, name); + if (File.Exists(candidate)) + return candidate; + } + + return null; + } + + public static string? FindClient(string serverExecutablePath) + { + var directory = Path.GetDirectoryName(serverExecutablePath); + if (directory is null) + return null; + + foreach (var name in new[] { "mariadb.exe", "mysql.exe" }) + { + var candidate = Path.Combine(directory, name); + if (File.Exists(candidate)) + return candidate; + } + + return null; + } + + private static Version GetVersionFromParentDirectory(string executablePath) + { + var directoryName = Directory.GetParent(Path.GetDirectoryName(executablePath)!)?.Name ?? string.Empty; + var value = directoryName.StartsWith("MariaDB ", StringComparison.OrdinalIgnoreCase) + ? directoryName["MariaDB ".Length..] + : string.Empty; + return Version.TryParse(value, out var version) ? version : new Version(0, 0); + } +} diff --git a/Source/ACE.SinglePlayer/Database/PrivateDatabasePortFinder.cs b/Source/ACE.SinglePlayer/Database/PrivateDatabasePortFinder.cs new file mode 100644 index 0000000000..2ba1ed777e --- /dev/null +++ b/Source/ACE.SinglePlayer/Database/PrivateDatabasePortFinder.cs @@ -0,0 +1,38 @@ +using System.Net; +using System.Net.Sockets; + +namespace ACE.SinglePlayer.Database; + +public static class PrivateDatabasePortFinder +{ + public static ushort FindAvailablePort(ushort preferredPort = 3307, ushort lastPort = 3399) + { + if (preferredPort == 0 || lastPort < preferredPort) + throw new ArgumentOutOfRangeException(nameof(preferredPort)); + + for (var port = (int)preferredPort; port <= lastPort; port++) + if (IsAvailable((ushort)port)) + return (ushort)port; + + throw new InvalidOperationException($"No free private-database port was found between {preferredPort} and {lastPort}."); + } + + public static bool IsAvailable(ushort port) + { + TcpListener? listener = null; + try + { + listener = new TcpListener(IPAddress.Loopback, port); + listener.Start(); + return true; + } + catch (SocketException) + { + return false; + } + finally + { + listener?.Stop(); + } + } +} diff --git a/Source/ACE.SinglePlayer/Database/WorldSqlPackageInspector.cs b/Source/ACE.SinglePlayer/Database/WorldSqlPackageInspector.cs new file mode 100644 index 0000000000..15f8f7f7f5 --- /dev/null +++ b/Source/ACE.SinglePlayer/Database/WorldSqlPackageInspector.cs @@ -0,0 +1,42 @@ +using System.Text; + +namespace ACE.SinglePlayer.Database; + +public static class WorldSqlPackageInspector +{ + private static readonly byte[] RequiredHumanInsert = + Encoding.ASCII.GetBytes("INSERT INTO `weenie` VALUES (1,"); + + public static async Task ContainsRequiredWorldDataAsync(string path, CancellationToken cancellationToken) + { + if (!File.Exists(path)) + return false; + + await using var stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, + bufferSize: 64 * 1024, FileOptions.Asynchronous | FileOptions.SequentialScan); + var buffer = new byte[64 * 1024]; + var matched = 0; + + while (true) + { + var read = await stream.ReadAsync(buffer, cancellationToken); + if (read == 0) + return false; + + for (var index = 0; index < read; index++) + { + var value = buffer[index]; + if (value == RequiredHumanInsert[matched]) + { + matched++; + if (matched == RequiredHumanInsert.Length) + return true; + } + else + { + matched = value == RequiredHumanInsert[0] ? 1 : 0; + } + } + } + } +} diff --git a/Source/ACE.SinglePlayer/Infrastructure/FilePermissionHardener.cs b/Source/ACE.SinglePlayer/Infrastructure/FilePermissionHardener.cs index b8786d0257..cc2276d1e1 100644 --- a/Source/ACE.SinglePlayer/Infrastructure/FilePermissionHardener.cs +++ b/Source/ACE.SinglePlayer/Infrastructure/FilePermissionHardener.cs @@ -18,4 +18,20 @@ public static void RestrictToCurrentUser(string path) security.AddAccessRule(new FileSystemAccessRule(user, FileSystemRights.FullControl, AccessControlType.Allow)); new FileInfo(path).SetAccessControl(security); } + + public static void RestrictDirectoryToCurrentUser(string path) + { + if (!OperatingSystem.IsWindows()) + return; + + var user = WindowsIdentity.GetCurrent().User + ?? throw new InvalidOperationException("The current Windows user has no security identifier."); + var security = new DirectorySecurity(); + security.SetOwner(user); + security.SetAccessRuleProtection(isProtected: true, preserveInheritance: false); + security.AddAccessRule(new FileSystemAccessRule(user, FileSystemRights.FullControl, + InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, + PropagationFlags.None, AccessControlType.Allow)); + new DirectoryInfo(path).SetAccessControl(security); + } } diff --git a/Source/ACE.SinglePlayer/Infrastructure/SettingsStore.cs b/Source/ACE.SinglePlayer/Infrastructure/SettingsStore.cs index ef486f5385..28aa1e0128 100644 --- a/Source/ACE.SinglePlayer/Infrastructure/SettingsStore.cs +++ b/Source/ACE.SinglePlayer/Infrastructure/SettingsStore.cs @@ -37,6 +37,7 @@ public SettingsStore(string? settingsPath = null) if (settings.SettingsVersion > LauncherSettings.CurrentVersion) throw new InvalidDataException($"Settings version {settings.SettingsVersion} is newer than this launcher supports."); + Migrate(settings); settings.SettingsVersion = LauncherSettings.CurrentVersion; return settings; } @@ -61,4 +62,30 @@ public async Task SaveAsync(LauncherSettings settings, CancellationToken cancell File.Delete(temporaryPath); } } + + private static void Migrate(LauncherSettings settings) + { + if (settings.SettingsVersion >= 2) + return; + + var usedExperimentalManagedMode = settings.DatabaseMode == DatabaseMode.ManagedExperimental; + var usedLocalRoot = settings.DatabaseMode == DatabaseMode.External && + string.Equals(settings.DatabaseHost, "127.0.0.1", StringComparison.OrdinalIgnoreCase) && + string.Equals(settings.DatabaseUsername, "root", StringComparison.OrdinalIgnoreCase); + + if (!usedExperimentalManagedMode && !usedLocalRoot) + return; + + var previousPassword = settings.ProtectedDatabasePassword; + var previousUserWasRoot = string.Equals(settings.DatabaseUsername, "root", StringComparison.OrdinalIgnoreCase); + settings.DatabaseMode = DatabaseMode.Private; + settings.DatabaseHost = "127.0.0.1"; + settings.DatabasePort = 3307; + settings.DatabaseUsername = "ace_singleplayer"; + if (usedExperimentalManagedMode && previousUserWasRoot) + settings.ProtectedPrivateDatabaseAdminPassword = previousPassword; + else + settings.ProtectedExternalDatabasePassword = previousPassword; + settings.ProtectedDatabasePassword = string.Empty; + } } diff --git a/Source/ACE.SinglePlayer/Infrastructure/SetupValidator.cs b/Source/ACE.SinglePlayer/Infrastructure/SetupValidator.cs index bde511026d..30413ed6b4 100644 --- a/Source/ACE.SinglePlayer/Infrastructure/SetupValidator.cs +++ b/Source/ACE.SinglePlayer/Infrastructure/SetupValidator.cs @@ -48,12 +48,30 @@ public static ValidationResult Validate(LauncherSettings settings) errors.Add("Enter a persistent local account name."); if (string.IsNullOrWhiteSpace(settings.ProtectedAccountPassword)) errors.Add("The persistent local account password has not been generated."); - if (string.IsNullOrWhiteSpace(settings.DatabaseHost) || settings.DatabasePort == 0) - errors.Add("Enter valid MariaDB/MySQL connection information."); - if (string.IsNullOrWhiteSpace(settings.DatabaseUsername)) - errors.Add("Enter the MariaDB/MySQL username."); - if (settings.DatabaseMode == DatabaseMode.ManagedExperimental && !File.Exists(settings.ManagedDatabaseExePath)) - errors.Add("Select mariadbd.exe for experimental managed database mode."); + if (settings.DatabaseMode == DatabaseMode.External) + { + if (string.IsNullOrWhiteSpace(settings.DatabaseHost) || settings.DatabasePort == 0) + errors.Add("Enter valid MariaDB/MySQL connection information."); + if (string.IsNullOrWhiteSpace(settings.DatabaseUsername)) + errors.Add("Enter the MariaDB/MySQL username."); + } + else + { + if (!string.Equals(settings.DatabaseHost, "127.0.0.1", StringComparison.Ordinal)) + errors.Add("The automatic private database must use 127.0.0.1."); + if (!string.Equals(settings.DatabaseUsername, "ace_singleplayer", StringComparison.Ordinal)) + errors.Add("The automatic private database must use its isolated ACE account."); + if (!File.Exists(settings.ManagedDatabaseExePath)) + errors.Add("MariaDB was not detected. Install MariaDB or select its mariadbd.exe file."); + else if (Database.MariaDbInstallationLocator.FindInitializer(settings.ManagedDatabaseExePath) is null) + errors.Add("The MariaDB initializer is missing beside mariadbd.exe. Repair the MariaDB installation."); + if (string.IsNullOrWhiteSpace(settings.ProtectedDatabasePassword) || + string.IsNullOrWhiteSpace(settings.ProtectedPrivateDatabaseAdminPassword)) + errors.Add("The automatic private database credentials have not been generated."); + if (!Directory.Exists(Path.Combine(settings.PrivateDatabaseDirectory, "mysql")) && + !File.Exists(settings.WorldDatabaseSqlPath)) + errors.Add("Select an ACE world-database SQL package for the private database's first setup."); + } return new ValidationResult(errors.Count == 0, errors); } diff --git a/Source/ACE.SinglePlayer/Models/LauncherSettings.cs b/Source/ACE.SinglePlayer/Models/LauncherSettings.cs index a17f16465e..fe7857b2bd 100644 --- a/Source/ACE.SinglePlayer/Models/LauncherSettings.cs +++ b/Source/ACE.SinglePlayer/Models/LauncherSettings.cs @@ -4,7 +4,9 @@ namespace ACE.SinglePlayer.Models; public enum DatabaseMode { + Private, External, + // Kept so version-1 settings deserialize and can be migrated safely. ManagedExperimental } @@ -17,7 +19,7 @@ public enum ClientLaunchMode public sealed class LauncherSettings { - public const int CurrentVersion = 1; + public const int CurrentVersion = 2; public int SettingsVersion { get; set; } = CurrentVersion; public string ClientExePath { get; set; } = string.Empty; @@ -30,15 +32,20 @@ public sealed class LauncherSettings public string AccountName { get; set; } = "singleplayer"; public string ProtectedAccountPassword { get; set; } = string.Empty; [JsonConverter(typeof(JsonStringEnumConverter))] - public DatabaseMode DatabaseMode { get; set; } = DatabaseMode.External; + public DatabaseMode DatabaseMode { get; set; } = DatabaseMode.Private; public string DatabaseHost { get; set; } = "127.0.0.1"; - public ushort DatabasePort { get; set; } = 3306; - public string DatabaseUsername { get; set; } = "root"; + public ushort DatabasePort { get; set; } = 3307; + public string DatabaseUsername { get; set; } = "ace_singleplayer"; public string ProtectedDatabasePassword { get; set; } = string.Empty; + public string ProtectedPrivateDatabasePassword { get; set; } = string.Empty; + public string ProtectedExternalDatabasePassword { get; set; } = string.Empty; + public string ProtectedPrivateDatabaseAdminPassword { get; set; } = string.Empty; + public string PrivateDatabaseDirectoryPath { get; set; } = GetDefaultPrivateDatabaseDirectory(); public string AuthenticationDatabaseName { get; set; } = "ace_auth"; public string ShardDatabaseName { get; set; } = "ace_shard"; public string WorldDatabaseName { get; set; } = "ace_world"; public string ManagedDatabaseExePath { get; set; } = string.Empty; + public string WorldDatabaseSqlPath { get; set; } = string.Empty; public bool StopServerWhenGameExits { get; set; } = true; public bool StopManagedDatabaseWhenLauncherExits { get; set; } = true; public bool MinimizeLauncherAfterClientStarts { get; set; } = true; @@ -55,6 +62,14 @@ public sealed class LauncherSettings [JsonIgnore] public string OwnershipPath => Path.Combine(RuntimeDirectory, "ace-server.process.json"); + [JsonIgnore] + public string PrivateDatabaseDirectory => string.IsNullOrWhiteSpace(PrivateDatabaseDirectoryPath) + ? GetDefaultPrivateDatabaseDirectory() + : PrivateDatabaseDirectoryPath; + + [JsonIgnore] + public string LegacyPrivateDatabaseDirectory => Path.Combine(RuntimeDirectory, "Database"); + public static LauncherSettings CreateDefaults(string applicationDirectory) { var root = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "ACESinglePlayer"); @@ -67,7 +82,10 @@ public static LauncherSettings CreateDefaults(string applicationDirectory) ServerExePath = File.Exists(packagedServer) ? packagedServer : string.Empty, DatFilesDirectory = File.Exists(packagedClient) ? Path.GetDirectoryName(packagedClient)! : string.Empty, ModsDirectory = Path.Combine(applicationDirectory, "Mods"), - RuntimeDirectory = Path.Combine(applicationDirectory, "Runtime") + RuntimeDirectory = Path.Combine(root, "Runtime") }; } + + private static string GetDefaultPrivateDatabaseDirectory() => Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "ACESinglePlayer", "Database"); } diff --git a/Source/ACE.SinglePlayer/Orchestration/LauncherController.cs b/Source/ACE.SinglePlayer/Orchestration/LauncherController.cs index 9f3d0ad302..9c0ed55fe4 100644 --- a/Source/ACE.SinglePlayer/Orchestration/LauncherController.cs +++ b/Source/ACE.SinglePlayer/Orchestration/LauncherController.cs @@ -13,6 +13,8 @@ public sealed class LauncherController : IAsyncDisposable { private readonly AceConfigurationWriter configurationWriter; private readonly DatabaseRuntimeFactory databaseRuntimeFactory; + private readonly DatabaseBootstrapper databaseBootstrapper; + private readonly SettingsStore settingsStore; private readonly AceServerProcessManager serverManager; private readonly ClientProcessManager clientManager; private readonly ReadyFileMonitor readyFileMonitor; @@ -23,13 +25,16 @@ public sealed class LauncherController : IAsyncDisposable private IDatabaseRuntime? databaseRuntime; public LauncherController(LauncherSettings settings, AceConfigurationWriter configurationWriter, - DatabaseRuntimeFactory databaseRuntimeFactory, AceServerProcessManager serverManager, + DatabaseRuntimeFactory databaseRuntimeFactory, DatabaseBootstrapper databaseBootstrapper, + SettingsStore settingsStore, AceServerProcessManager serverManager, ClientProcessManager clientManager, ReadyFileMonitor readyFileMonitor, ISecretProtector secretProtector, LauncherLog log) { Settings = settings; this.configurationWriter = configurationWriter; this.databaseRuntimeFactory = databaseRuntimeFactory; + this.databaseBootstrapper = databaseBootstrapper; + this.settingsStore = settingsStore; this.serverManager = serverManager; this.clientManager = clientManager; this.readyFileMonitor = readyFileMonitor; @@ -86,9 +91,18 @@ public async Task PlayAsync(CancellationToken cancellationToken = default) { databaseRuntime = databaseRuntimeFactory.Create(Settings); State.Set(databaseRuntime.IsManaged ? LauncherState.StartingDatabase : LauncherState.CheckingDatabase, - databaseRuntime.IsManaged ? "Starting the launcher-managed MariaDB process..." : "Checking MariaDB/MySQL and ACE databases..."); + databaseRuntime.IsManaged ? "Preparing your private local database..." : "Checking MariaDB/MySQL and ACE databases..."); await databaseRuntime.StartAsync(Settings, token); + if (databaseRuntime.IsManaged) + { + await databaseBootstrapper.BootstrapAsync(Settings, Settings.WorldDatabaseSqlPath, token); + var databaseValidation = await databaseRuntime.ValidateAsync(Settings, token); + if (!databaseValidation.IsValid) + throw new InvalidOperationException(databaseValidation.Message); + await settingsStore.SaveAsync(Settings, token); + } + await configurationWriter.WriteAsync(Settings, token); State.Set(LauncherState.StartingServer, "Starting the local ACE world..."); var server = await serverManager.TryAttachLauncherOwnedAsync(Settings, token) diff --git a/Source/ACE.SinglePlayer/Program.cs b/Source/ACE.SinglePlayer/Program.cs index fc3abbc47a..f5fcee15a0 100644 --- a/Source/ACE.SinglePlayer/Program.cs +++ b/Source/ACE.SinglePlayer/Program.cs @@ -44,7 +44,7 @@ private static void RunApplication() var protector = new SecretProtector(); var connectionFactory = new DatabaseConnectionFactory(protector); var runtimeFactory = new DatabaseRuntimeFactory(connectionFactory, log); - var bootstrapper = new DatabaseBootstrapper(connectionFactory); + var bootstrapper = new DatabaseBootstrapper(connectionFactory, log); LauncherSettings settings; try @@ -59,6 +59,10 @@ private static void RunApplication() settings = LauncherSettings.CreateDefaults(AppContext.BaseDirectory); } + if (settings.DatabaseMode != DatabaseMode.External) + settings.ManagedDatabaseExePath = MariaDbInstallationLocator.FindServerExecutable(settings.ManagedDatabaseExePath) + ?? settings.ManagedDatabaseExePath; + if (!store.Exists || !SetupValidator.Validate(settings).IsValid) { using var wizard = new SetupWizardForm(settings, store, protector, runtimeFactory, bootstrapper); @@ -74,7 +78,7 @@ private static void RunApplication() new DecalClientLaunchProvider(log) }, log); var controller = new LauncherController(settings, new AceConfigurationWriter(protector), runtimeFactory, - serverManager, clientManager, new ReadyFileMonitor(new UdpPortProbe()), protector, log); + bootstrapper, store, serverManager, clientManager, new ReadyFileMonitor(new UdpPortProbe()), protector, log); using var main = new MainForm(controller, store, protector, runtimeFactory, bootstrapper, log); Application.Run(main); controller.DisposeAsync().AsTask().GetAwaiter().GetResult(); diff --git a/Source/ACE.SinglePlayer/Properties/AssemblyInfo.cs b/Source/ACE.SinglePlayer/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..ab596f2fb5 --- /dev/null +++ b/Source/ACE.SinglePlayer/Properties/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("ACE.SinglePlayer.Tests")] diff --git a/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs b/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs index c33c114d28..00da49d688 100644 --- a/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs +++ b/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs @@ -36,10 +36,20 @@ public sealed class SetupWizardForm : Form private readonly CheckBox minimize = new() { Text = "Minimize this launcher after the client starts", AutoSize = true }; private readonly Label pageTitle = new() { AutoSize = true, Font = new Font(SystemFonts.MessageBoxFont!.FontFamily, 15, FontStyle.Bold) }; private readonly Label databaseStatus = new() { AutoSize = true, MaximumSize = new Size(620, 0) }; + private readonly Label privateDatabaseNote = new() + { + Text = "Recommended: the launcher creates an isolated database in your local Windows app-data folder (outside OneDrive), generates its credentials, binds it only to this PC, and leaves the Windows MariaDB service untouched. Select an extracted, populated ACE-World-Database-*.sql file; Database\\Base\\WorldBase.sql contains only empty tables.", + AutoSize = true, + MaximumSize = new Size(650, 0) + }; private readonly Label decalStatus = new() { AutoSize = true, MaximumSize = new Size(620, 0) }; + private readonly Button testDatabase = new() { Text = "Check Database", AutoSize = true }; + private readonly Button initializeDatabase = new() { Text = "Prepare Private Database", AutoSize = true }; private readonly Button back = new() { Text = "Back", AutoSize = true }; private readonly Button next = new() { Text = "Next", AutoSize = true }; private readonly Button finish = new() { Text = "Save Setup", AutoSize = true }; + private readonly List externalDatabaseControls = new(); + private readonly List privateDatabaseControls = new(); private LauncherSettings settings; public SetupWizardForm(LauncherSettings settings, SettingsStore settingsStore, ISecretProtector secretProtector, @@ -57,7 +67,7 @@ public SetupWizardForm(LauncherSettings settings, SettingsStore settingsStore, I Size = new Size(820, 650); FormBorderStyle = FormBorderStyle.Sizable; - databaseMode.Items.AddRange(new object[] { "Already-running MariaDB/MySQL", "Launcher-managed MariaDB (experimental)" }); + databaseMode.Items.AddRange(new object[] { "Automatic private database (recommended)", "Existing MariaDB/MySQL (advanced)" }); clientMode.Items.AddRange(new object[] { "Vanilla", "Decal", "Chorizite (future)" }); pages.TabPages.Add(CreateClientPage()); @@ -86,7 +96,7 @@ public SetupWizardForm(LauncherSettings settings, SettingsStore settingsStore, I next.Click += (_, _) => { if (pages.SelectedIndex < pages.TabCount - 1) pages.SelectedIndex++; UpdateNavigation(); }; finish.Click += async (_, _) => await SaveAsync(); pages.SelectedIndexChanged += (_, _) => UpdateNavigation(); - databaseMode.SelectedIndexChanged += (_, _) => managedDatabaseExe.Enabled = databaseMode.SelectedIndex == 1; + databaseMode.SelectedIndexChanged += (_, _) => UpdateDatabaseModeControls(); LoadSettings(); pages.SelectedIndex = 0; @@ -137,27 +147,34 @@ private TabPage CreateDatabasePage() var page = NewPage(); var layout = NewFields(); AddRow(layout, "Database mode", databaseMode, 0); - AddRow(layout, "Host", databaseHost, 1); - AddRow(layout, "Port", databasePort, 2); - AddRow(layout, "Username", databaseUser, 3); - AddRow(layout, "Password", databasePassword, 4); - AddRow(layout, "Authentication DB", authDatabase, 5); - AddRow(layout, "Shard DB", shardDatabase, 6); - AddRow(layout, "World DB", worldDatabase, 7); - AddPathRow(layout, "mariadbd.exe", managedDatabaseExe, "Only needed for experimental managed mode", () => BrowseFile(managedDatabaseExe, "MariaDB server|mariadbd.exe"), 8); - AddPathRow(layout, "World SQL package", worldSql, "Required only when the world database is missing", () => BrowseFile(worldSql, "SQL files|*.sql"), 9); + layout.Controls.Add(privateDatabaseNote, 0, 1); + layout.SetColumnSpan(privateDatabaseNote, 3); + privateDatabaseControls.Add(privateDatabaseNote); + + TrackExternal(AddRow(layout, "Host", databaseHost, 2), databaseHost); + TrackExternal(AddRow(layout, "Port", databasePort, 3), databasePort); + TrackExternal(AddRow(layout, "Username", databaseUser, 4), databaseUser); + TrackExternal(AddRow(layout, "Password", databasePassword, 5), databasePassword); + TrackExternal(AddRow(layout, "Authentication DB", authDatabase, 6), authDatabase); + TrackExternal(AddRow(layout, "Shard DB", shardDatabase, 7), shardDatabase); + TrackExternal(AddRow(layout, "World DB", worldDatabase, 8), worldDatabase); + var mariaDbPathControls = AddPathRow(layout, "MariaDB program", managedDatabaseExe, + "Automatically detected; browse to mariadbd.exe only when needed", + () => BrowseFile(managedDatabaseExe, "MariaDB server|mariadbd.exe"), 9); + privateDatabaseControls.AddRange(new Control[] { mariaDbPathControls.Label, managedDatabaseExe, mariaDbPathControls.Button }); + AddPathRow(layout, "World SQL package", worldSql, + "Select extracted ACE-World-Database-*.sql, not Database\\Base\\WorldBase.sql", + () => BrowseFile(worldSql, "SQL files|*.sql"), 10); var actions = new FlowLayoutPanel { AutoSize = true, FlowDirection = FlowDirection.LeftToRight }; - var test = new Button { Text = "Test Connection", AutoSize = true }; - var initialize = new Button { Text = "Initialize Missing Databases", AutoSize = true }; - actions.Controls.Add(test); - actions.Controls.Add(initialize); - layout.Controls.Add(actions, 1, 10); + actions.Controls.Add(testDatabase); + actions.Controls.Add(initializeDatabase); + layout.Controls.Add(actions, 1, 11); layout.SetColumnSpan(actions, 2); - layout.Controls.Add(databaseStatus, 1, 11); + layout.Controls.Add(databaseStatus, 1, 12); layout.SetColumnSpan(databaseStatus, 2); - test.Click += async (_, _) => await TestDatabaseAsync(test); - initialize.Click += async (_, _) => await InitializeDatabaseAsync(initialize); + testDatabase.Click += async (_, _) => await TestDatabaseAsync(testDatabase); + initializeDatabase.Click += async (_, _) => await InitializeDatabaseAsync(initializeDatabase); page.Controls.Add(layout); return page; } @@ -197,13 +214,16 @@ private void LoadSettings() serverPath.Text = settings.ServerExePath; modsPath.Text = settings.ModsDirectory; runtimePath.Text = settings.RuntimeDirectory; - databaseMode.SelectedIndex = settings.DatabaseMode == DatabaseMode.External ? 0 : 1; + if (settings.DatabaseMode != DatabaseMode.External) + settings.ManagedDatabaseExePath = MariaDbInstallationLocator.FindServerExecutable(settings.ManagedDatabaseExePath) + ?? settings.ManagedDatabaseExePath; + databaseMode.SelectedIndex = settings.DatabaseMode == DatabaseMode.External ? 1 : 0; databaseHost.Text = settings.DatabaseHost; databasePort.Value = settings.DatabasePort; databaseUser.Text = settings.DatabaseUsername; try { - databasePassword.Text = string.IsNullOrEmpty(settings.ProtectedDatabasePassword) + databasePassword.Text = settings.DatabaseMode != DatabaseMode.External || string.IsNullOrEmpty(settings.ProtectedDatabasePassword) ? string.Empty : secretProtector.Unprotect(settings.ProtectedDatabasePassword); } @@ -216,6 +236,7 @@ private void LoadSettings() shardDatabase.Text = settings.ShardDatabaseName; worldDatabase.Text = settings.WorldDatabaseName; managedDatabaseExe.Text = settings.ManagedDatabaseExePath; + worldSql.Text = settings.WorldDatabaseSqlPath; accountName.Text = settings.AccountName; serverPort.Value = settings.Port; startupTimeout.Value = Math.Clamp(settings.ServerStartupTimeoutSeconds, (int)startupTimeout.Minimum, (int)startupTimeout.Maximum); @@ -226,6 +247,7 @@ private void LoadSettings() decalStatus.Text = DecalDetector.Detect() is null ? "Decal is not detected. Vanilla mode is fully supported; Chorizite is reserved for future work." : "Decal and Inject.dll were detected. Decal mode is optional; Vanilla remains available if injection fails."; + UpdateDatabaseModeControls(); } private LauncherSettings BuildSettings() @@ -242,15 +264,46 @@ private LauncherSettings BuildSettings() result.AccountName = accountName.Text.Trim(); if (string.IsNullOrWhiteSpace(result.ProtectedAccountPassword)) result.ProtectedAccountPassword = secretProtector.Protect(SecretProtector.GeneratePassword()); - result.DatabaseMode = databaseMode.SelectedIndex == 1 ? DatabaseMode.ManagedExperimental : DatabaseMode.External; - result.DatabaseHost = databaseHost.Text.Trim(); - result.DatabasePort = (ushort)databasePort.Value; - result.DatabaseUsername = databaseUser.Text.Trim(); - result.ProtectedDatabasePassword = secretProtector.Protect(databasePassword.Text); + var previousDatabaseMode = result.DatabaseMode; + var usePrivateDatabase = databaseMode.SelectedIndex != 1; + if (usePrivateDatabase) + { + if (previousDatabaseMode == DatabaseMode.External) + { + result.ProtectedExternalDatabasePassword = result.ProtectedDatabasePassword; + result.ProtectedDatabasePassword = result.ProtectedPrivateDatabasePassword; + } + + result.DatabaseMode = DatabaseMode.Private; + result.DatabaseHost = "127.0.0.1"; + if (previousDatabaseMode == DatabaseMode.External || result.DatabasePort == 3306) + result.DatabasePort = PrivateDatabasePortFinder.FindAvailablePort(); + result.DatabaseUsername = "ace_singleplayer"; + var privateDatabaseExists = Directory.Exists(Path.Combine(result.PrivateDatabaseDirectory, "mysql")); + if (string.IsNullOrWhiteSpace(result.ProtectedDatabasePassword)) + result.ProtectedDatabasePassword = secretProtector.Protect(SecretProtector.GeneratePassword()); + if (string.IsNullOrWhiteSpace(result.ProtectedPrivateDatabaseAdminPassword) && !privateDatabaseExists) + result.ProtectedPrivateDatabaseAdminPassword = secretProtector.Protect(SecretProtector.GeneratePassword()); + result.ProtectedPrivateDatabasePassword = result.ProtectedDatabasePassword; + result.ManagedDatabaseExePath = MariaDbInstallationLocator.FindServerExecutable(managedDatabaseExe.Text.Trim()) + ?? managedDatabaseExe.Text.Trim(); + } + else + { + if (previousDatabaseMode != DatabaseMode.External) + result.ProtectedPrivateDatabasePassword = result.ProtectedDatabasePassword; + result.DatabaseMode = DatabaseMode.External; + result.DatabaseHost = databaseHost.Text.Trim(); + result.DatabasePort = (ushort)databasePort.Value; + result.DatabaseUsername = databaseUser.Text.Trim(); + result.ProtectedDatabasePassword = secretProtector.Protect(databasePassword.Text); + result.ProtectedExternalDatabasePassword = result.ProtectedDatabasePassword; + result.ManagedDatabaseExePath = managedDatabaseExe.Text.Trim(); + } result.AuthenticationDatabaseName = authDatabase.Text.Trim(); result.ShardDatabaseName = shardDatabase.Text.Trim(); result.WorldDatabaseName = worldDatabase.Text.Trim(); - result.ManagedDatabaseExePath = managedDatabaseExe.Text.Trim(); + result.WorldDatabaseSqlPath = worldSql.Text.Trim(); result.StopServerWhenGameExits = stopWithGame.Checked; result.StopManagedDatabaseWhenLauncherExits = stopManagedDatabase.Checked; result.MinimizeLauncherAfterClientStarts = minimize.Checked; @@ -283,11 +336,31 @@ private async Task SaveAsync() return; } - Directory.CreateDirectory(settings.RuntimeDirectory); - Directory.CreateDirectory(settings.ModsDirectory); - await settingsStore.SaveAsync(settings); - DialogResult = DialogResult.OK; - Close(); + finish.Enabled = false; + try + { + Directory.CreateDirectory(settings.RuntimeDirectory); + Directory.CreateDirectory(settings.ModsDirectory); + if (settings.DatabaseMode != DatabaseMode.External) + { + pages.SelectedIndex = 2; + databaseStatus.Text = "Preparing the private database. The first world import can take several minutes..."; + await PrepareDatabaseAsync(settings, CancellationToken.None); + } + + await settingsStore.SaveAsync(settings); + DialogResult = DialogResult.OK; + Close(); + } + catch (Exception ex) + { + databaseStatus.Text = ex.Message; + MessageBox.Show(this, ex.Message, "Database setup needs attention", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } + finally + { + finish.Enabled = true; + } } private async Task TestDatabaseAsync(Button button) @@ -298,8 +371,10 @@ private async Task TestDatabaseAsync(Button button) { var current = BuildSettings(); await using var runtime = databaseRuntimeFactory.Create(current); + await runtime.StartAsync(current, CancellationToken.None); var result = await runtime.ValidateAsync(current, CancellationToken.None); databaseStatus.Text = result.Message; + await runtime.StopAsync(CancellationToken.None); } catch (Exception ex) { @@ -314,16 +389,13 @@ private async Task TestDatabaseAsync(Button button) private async Task InitializeDatabaseAsync(Button button) { button.Enabled = false; - databaseStatus.Text = "Initializing only databases that are completely missing..."; + databaseStatus.Text = databaseMode.SelectedIndex == 0 + ? "Preparing the private database. The first world import can take several minutes..." + : "Initializing only databases that are completely missing..."; var current = BuildSettings(); - await using var runtime = databaseRuntimeFactory.Create(current); try { - if (runtime.IsManaged) - await runtime.StartAsync(current, CancellationToken.None); - await databaseBootstrapper.BootstrapAsync(current, worldSql.Text.Trim(), CancellationToken.None); - var result = await runtime.ValidateAsync(current, CancellationToken.None); - databaseStatus.Text = result.Message; + databaseStatus.Text = await PrepareDatabaseAsync(current, CancellationToken.None); } catch (Exception ex) { @@ -331,11 +403,48 @@ private async Task InitializeDatabaseAsync(Button button) } finally { - await runtime.StopAsync(CancellationToken.None); button.Enabled = true; } } + private async Task PrepareDatabaseAsync(LauncherSettings current, CancellationToken cancellationToken) + { + await using var runtime = databaseRuntimeFactory.Create(current); + try + { + if (runtime.IsManaged) + await runtime.StartAsync(current, cancellationToken); + await databaseBootstrapper.BootstrapAsync(current, current.WorldDatabaseSqlPath, cancellationToken); + var result = await runtime.ValidateAsync(current, cancellationToken); + if (!result.IsValid) + throw new InvalidOperationException(result.Message); + return result.Message; + } + finally + { + await runtime.StopAsync(CancellationToken.None); + } + } + + private void UpdateDatabaseModeControls() + { + var usePrivateDatabase = databaseMode.SelectedIndex != 1; + foreach (var control in externalDatabaseControls) + control.Visible = !usePrivateDatabase; + foreach (var control in privateDatabaseControls) + control.Visible = usePrivateDatabase; + + testDatabase.Text = usePrivateDatabase ? "Check Private Database" : "Test Connection"; + initializeDatabase.Text = usePrivateDatabase ? "Prepare Private Database" : "Initialize Missing Databases"; + stopManagedDatabase.Visible = usePrivateDatabase; + } + + private void TrackExternal(Label label, Control field) + { + externalDatabaseControls.Add(label); + externalDatabaseControls.Add(field); + } + private void BrowseFile(TextBox target, string filter) { using var dialog = new OpenFileDialog { Filter = filter, CheckFileExists = true, FileName = target.Text }; @@ -383,22 +492,26 @@ private void UpdateNavigation() } }; - private static void AddRow(TableLayoutPanel layout, string label, Control control, int row) + private static Label AddRow(TableLayoutPanel layout, string label, Control control, int row) { control.Dock = DockStyle.Top; - layout.Controls.Add(new Label { Text = label, AutoSize = true, Padding = new Padding(0, 5, 0, 0) }, 0, row); + var labelControl = new Label { Text = label, AutoSize = true, Padding = new Padding(0, 5, 0, 0) }; + layout.Controls.Add(labelControl, 0, row); layout.Controls.Add(control, 1, row); layout.SetColumnSpan(control, 2); + return labelControl; } - private static void AddPathRow(TableLayoutPanel layout, string label, TextBox textBox, string accessibleDescription, Action browse, int row) + private static (Label Label, Button Button) AddPathRow(TableLayoutPanel layout, string label, TextBox textBox, string accessibleDescription, Action browse, int row) { textBox.Dock = DockStyle.Top; textBox.AccessibleDescription = accessibleDescription; var button = new Button { Text = "Browse...", AutoSize = true, Dock = DockStyle.Top }; button.Click += (_, _) => browse(); - layout.Controls.Add(new Label { Text = label, AutoSize = true, Padding = new Padding(0, 5, 0, 0) }, 0, row); + var labelControl = new Label { Text = label, AutoSize = true, Padding = new Padding(0, 5, 0, 0) }; + layout.Controls.Add(labelControl, 0, row); layout.Controls.Add(textBox, 1, row); layout.Controls.Add(button, 2, row); + return (labelControl, button); } } diff --git a/docs/SINGLE_PLAYER_ARCHITECTURE.md b/docs/SINGLE_PLAYER_ARCHITECTURE.md index bde372591b..8895c26feb 100644 --- a/docs/SINGLE_PLAYER_ARCHITECTURE.md +++ b/docs/SINGLE_PLAYER_ARCHITECTURE.md @@ -4,13 +4,13 @@ `ACE.SinglePlayer.exe` is a WinForms orchestrator, not an offline rewrite of ACE. It owns and monitors these optional child processes: -1. A user-supplied `mariadbd.exe` only in experimental managed mode. +1. A user-installed `mariadbd.exe` in automatic private-database mode. 2. The published `ACE.Server.exe`, started with `--config ` and `--ready-file `. 3. `acclient.exe`, launched directly in Vanilla mode or through the package's isolated x86 Decal helper. The original server behavior is unchanged when the two new arguments are omitted. The normal cross-platform `Source/ACE.sln` is unchanged; Windows packaging uses `Source/ACE.SinglePlayer.slnx`. -The release package publishes the launcher and server self-contained for Windows x64. This avoids a first-run dependency on Windows' .NET runtime installer. The isolated Decal helper remains self-contained Windows x86. +The release package publishes the launcher and server self-contained for Windows x64. This avoids a first-run dependency on Windows' .NET runtime installer. The isolated Decal helper remains self-contained Windows x86. New setups place operational Runtime files and the private MariaDB data under `%LOCALAPPDATA%\ACESinglePlayer` so cloud-sync tools do not lock database files or copy short-lived configuration credentials. ## Configuration and readiness @@ -26,9 +26,11 @@ Process arguments are added individually. Arguments and configuration content ar ## Databases -`IDatabaseRuntime` separates external and managed MariaDB. External mode checks authentication, all three schema names, and core tables (`account`, `character`, and `weenie`). `DatabaseBootstrapper` uses the packaged ACE authentication/shard base SQL and a user-selected world SQL package. It applies a base only when the target schema is entirely absent and refuses partial or existing incomplete schemas. +`IDatabaseRuntime` separates an advanced external connection from the default private MariaDB. Validation checks authentication, all three schema names, core tables (`account`, `character`, and `weenie`), and the required Human world record (`weenie.class_Id = 1`). `DatabaseBootstrapper` uses the packaged ACE authentication/shard base SQL and a user-selected populated world SQL package. It rejects the schema-only `Database\Base\WorldBase.sql`. External databases remain conservative and are never rewritten when incomplete; an isolated private database with empty world tables can be repaired by streaming the selected full dump through MariaDB's local import client. -Managed mode is deliberately experimental. It accepts a specific `mariadbd.exe`, binds it to loopback, and uses `Runtime\Database`, but requires the matching distribution to have initialized that data directory already. +Private mode detects or accepts a specific `mariadbd.exe` and requires the matching initializer and `mariadb.exe`/`mysql.exe` import client beside it. First initialization occurs in a unique staging directory and is promoted to `%LOCALAPPDATA%\ACESinglePlayer\Database` only after MariaDB's system tables exist. Keeping database files outside the package prevents OneDrive or other cloud-sync reparse points from breaking MariaDB schema operations. Existing `Runtime\Database` data is copied once to the local location and retained at the old path as a backup. The launcher chooses an available local port, passes `--no-defaults`, binds to `127.0.0.1`, disables remote-root creation, and never opens a firewall port. + +Two random passwords are generated: a private administrator credential used only for lifecycle/provisioning and a dedicated `ace_singleplayer` application credential granted only over the three configured ACE schemas. Both are protected by Windows DPAPI. MariaDB output is redacted against both secrets. The launcher sends MariaDB's supported `SHUTDOWN` statement before forcing only its own child after a timeout. A version-1 loopback `root` configuration migrates into the private setup flow; non-root external configurations remain external. ## Client providers @@ -44,8 +46,8 @@ Decal registry inventory is read-only and clearly typed as client-side. Chorizit ## Known Phase-1 limitations -- A real client, DATs, MariaDB service, and populated world package are user-supplied. -- Managed MariaDB does not perform distribution-specific first initialization. +- A real client, DATs, installed MariaDB Windows distribution, and populated world package are user-supplied. +- MariaDB binaries are detected and reused but are not bundled or downloaded by the launcher. - The client and live character-selection screen were not available for end-to-end testing here. - Decal's startup export is invoked and diagnosed, but in-game injection/plugin behavior requires a machine with a working Decal/client installation. - Chorizite launch and package installation are reserved for future work. diff --git a/docs/SINGLE_PLAYER_BUILD_AND_TEST.md b/docs/SINGLE_PLAYER_BUILD_AND_TEST.md index b26039a8ec..1d8c1f283a 100644 --- a/docs/SINGLE_PLAYER_BUILD_AND_TEST.md +++ b/docs/SINGLE_PLAYER_BUILD_AND_TEST.md @@ -11,6 +11,15 @@ dotnet test .\Source\ACE.Server.Tests\ACE.Server.Tests.csproj -c Release --filte powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\scripts\publish-singleplayer.ps1 -Configuration Release ``` +The normal launcher test run does not require MariaDB. To additionally exercise real private initialization, isolated-user provisioning, schema bootstrap, validation, and shutdown against an installed MariaDB distribution: + +```powershell +$env:ACE_TEST_MARIADBD = 'C:\Program Files\MariaDB 11.2\bin\mariadbd.exe' +dotnet test .\Source\ACE.SinglePlayer.Tests\ACE.SinglePlayer.Tests.csproj -c Release --filter 'FullyQualifiedName~PrivateDatabaseTests' +``` + +The integration test uses a unique temporary data directory and does not modify the Windows MariaDB service. Set `ACE_TEST_WORLD_SQL` to an extracted official `ACE-World-Database-*.sql` file to exercise the full populated-world import and empty-world repair path; otherwise the test uses a minimal populated fixture. + The clean package is written to `artifacts\ACE-SinglePlayer`. The packaging script stages publish output under the current user's temporary directory to avoid a .NET 10 publish-transform bug when the repository path contains an apostrophe. It then checks that the package contains no generated Config.js, settings, logs, database data, proprietary client/DAT files, or MariaDB executable. The normal ACE solution remains separate and can be verified with: diff --git a/docs/SINGLE_PLAYER_FIRST_RUN.md b/docs/SINGLE_PLAYER_FIRST_RUN.md index 0518188090..53d797e35a 100644 --- a/docs/SINGLE_PLAYER_FIRST_RUN.md +++ b/docs/SINGLE_PLAYER_FIRST_RUN.md @@ -10,8 +10,8 @@ ACE Single Player keeps ACE.Server as a private local process and launches the o - `client_portal.dat` - `client_local_English.dat` - `client_highres.dat` is optional for ACE.Server, although the client installation normally includes it. -3. Have MariaDB/MySQL running locally. External mode is the dependable Phase-1 option. You need a database user that can create the three ACE databases during setup, or pre-create valid `ace_auth`, `ace_shard`, and `ace_world` databases yourself. -4. Have an appropriate ACE world-database SQL package available if `ace_world` is missing. The launcher never downloads a database from an unverified source. +3. Have MariaDB for Windows installed. Its Windows service may be running or stopped; the recommended private mode uses the installed programs to create a separate database and does not need the service's `root` password. The launcher does not bundle or download MariaDB. +4. Download the current official ACE-World release package and extract its populated `ACE-World-Database-*.sql` file. Do not select the repository's `Database\Base\WorldBase.sql`; that file defines empty tables and cannot run a world. The launcher never downloads or trusts a database package on its own. ## Setup wizard @@ -19,25 +19,27 @@ Double-click `ACE.SinglePlayer.exe`. 1. Select `acclient.exe`. The wizard fills the DAT directory automatically when all three required DAT files are beside it. 2. Select the packaged `Server\ACE.Server.exe`. -3. Keep the package `Mods` and `Runtime` directories unless you intentionally store them elsewhere. -4. Choose **Already-running MariaDB/MySQL**, then enter host, port, username, password, and database names. The defaults are `127.0.0.1:3306`, `ace_auth`, `ace_shard`, and `ace_world`. -5. Click **Test Connection**. If databases are missing, select the world SQL package and click **Initialize Missing Databases**. Authentication and shard base schemas come from the packaged ACE server. Existing complete databases are never overwritten; partial databases produce an error and are not modified. +3. Keep the package `Mods` directory and the default local Windows app-data `Runtime` directory unless you intentionally store them elsewhere. Runtime configuration contains short-lived local credentials and should not be placed in OneDrive. +4. Keep **Automatic private database (recommended)**. The wizard detects `mariadbd.exe`, selects a free loopback-only port, generates protected credentials, and stores MariaDB data under local Windows app data rather than OneDrive. No MariaDB username or password is requested. +5. Select the extracted, populated `ACE-World-Database-*.sql` file. Click **Prepare Private Database** if you want to prepare it immediately, or continue; **Save Setup** performs the same preparation automatically. The first world import can take several minutes. Existing complete databases are never overwritten. Private databases left with empty world tables by an interrupted or older setup are repaired from the selected package; external databases are never repaired automatically. 6. Keep the account name `singleplayer` or choose one permanent name. A strong password is generated once, protected with Windows DPAPI, and reused. Do not change or delete this account if you want the same characters. 7. Keep local port `9000` unless it conflicts with another application. 8. Choose **Vanilla** for the dependable direct-launch path. Choose **Decal** only when Decal and its `Inject.dll` are detected. Chorizite is displayed as future work and cannot be selected yet. 9. Save setup. -Experimental managed MariaDB mode starts only a user-supplied `mariadbd.exe` and an already initialized data directory at `Runtime\Database`. It does not download binaries or guess distribution-specific initialization flags. External mode is recommended for this release. +The private database lives at `Runtime\Database`. The launcher uses the `mariadb-install-db.exe` shipped beside the detected MariaDB program, initializes into a staging directory, and moves it into place only after initialization succeeds. It creates a dedicated `ace_singleplayer` database user; generated administrator and application passwords are protected with Windows DPAPI and are not displayed or logged. The existing MariaDB service and its `root` account are not changed. + +To use a separately administered server instead, choose **Existing MariaDB/MySQL (advanced)** and enter its host, port, username, password, and database names. Use **Test Connection** and **Initialize Missing Databases** as needed. ## Normal play 1. Double-click `ACE.SinglePlayer.exe`. 2. Click **PLAY** once. -3. The launcher checks the persistent databases, writes a private loopback-only config, starts ACE.Server, waits for an atomic ready signal and the UDP listener, and launches `acclient.exe`. +3. The launcher starts its private database when selected, checks the persistent schemas, writes a private loopback-only config, starts ACE.Server, waits for an atomic ready signal and the UDP listener, and launches `acclient.exe`. 4. Use the normal character-selection screen. ACE automatically creates the persistent local account on its first successful login. Repeated Play clicks do not create duplicate processes. By default, closing the game gracefully stops the launcher-owned server. The Stop button requests ACE's `stop-now` console command and forces termination only if that verified child does not exit within 20 seconds. -Characters live in `ace_shard`, not in the launcher. Back up the MariaDB data, and do not delete or replace the shard database when upgrading the launcher. Settings live at `%LOCALAPPDATA%\ACESinglePlayer\settings.json`; secrets there are DPAPI-protected. The generated Runtime `Config.js` necessarily contains the database password for ACE.Server and is restricted to the current Windows user. +Characters live in `Runtime\Database\ace_shard` when private mode is selected, not in the launcher executable. Preserve the entire `Runtime\Database` directory across upgrades and back it up before replacing or resetting anything. Settings live at `%LOCALAPPDATA%\ACESinglePlayer\settings.json`; secrets there are DPAPI-protected. The generated Runtime `Config.js` necessarily contains the database password for ACE.Server and is restricted to the current Windows user. Use **Open Logs** for startup errors. The launcher never writes account or database passwords to its log. The real client and a live ACE world database are required for an end-to-end character-screen test. diff --git a/docs/SINGLE_PLAYER_ROADMAP.md b/docs/SINGLE_PLAYER_ROADMAP.md index d414946a32..d12b56e828 100644 --- a/docs/SINGLE_PLAYER_ROADMAP.md +++ b/docs/SINGLE_PLAYER_ROADMAP.md @@ -2,7 +2,7 @@ Phase 1 deliberately keeps a narrow, dependable loopback server and direct-client path. Future work should be delivered without weakening Vanilla launch: -- Fully portable launcher-managed MariaDB initialization, tied to a supported and licensed MariaDB distribution. +- Optional checksum-verified acquisition of a supported MariaDB distribution so private mode does not require a prior MariaDB installation. - Signed or checksum-verified mod package installation with provenance and rollback. - Port selected aquafir ACE server mods to current ACE/.NET after source review and automated compatibility tests. - Back up and restore authentication, character/shard, world, settings, and managed database data. @@ -11,4 +11,3 @@ Phase 1 deliberately keeps a narrow, dependable loopback server and direct-clien - A signed installer that preserves Runtime and database data across upgrades. - Automatic launcher/server updates with checksum validation, backups, rollback, and no silent client/DAT replacement. - Implement and test the reserved Chorizite client-launch provider separately from Vanilla and Decal. -- Improve managed MariaDB graceful shutdown through a distribution-supported administrative control channel. From f0bad6f69e561d27764c2ac3f9bf8986eeae50bc Mon Sep 17 00:00:00 2001 From: titaniumweiner <147983421+titaniumweiner@users.noreply.github.com> Date: Tue, 14 Jul 2026 19:40:52 -0400 Subject: [PATCH 03/15] Allow server and client to share DAT files --- Source/ACE.SinglePlayer.Tests/ClientLaunchTests.cs | 2 +- .../ClientLaunch/DirectClientLaunchProvider.cs | 4 +++- docs/SINGLE_PLAYER_ARCHITECTURE.md | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Source/ACE.SinglePlayer.Tests/ClientLaunchTests.cs b/Source/ACE.SinglePlayer.Tests/ClientLaunchTests.cs index 0ad06adeb0..2085f64581 100644 --- a/Source/ACE.SinglePlayer.Tests/ClientLaunchTests.cs +++ b/Source/ACE.SinglePlayer.Tests/ClientLaunchTests.cs @@ -37,7 +37,7 @@ public async Task DirectLaunchKeepsEveryCredentialArgumentSeparateAndExact() CollectionAssert.AreEqual(new[] { - "-a", account, "-v", password, "-h", "127.0.0.1:9000", "-rodat", "off" + "-a", account, "-v", password, "-h", "127.0.0.1:9000", "-rodat", "on" }, arguments); } finally diff --git a/Source/ACE.SinglePlayer/ClientLaunch/DirectClientLaunchProvider.cs b/Source/ACE.SinglePlayer/ClientLaunch/DirectClientLaunchProvider.cs index 89dae7f120..fe3acaf3c8 100644 --- a/Source/ACE.SinglePlayer/ClientLaunch/DirectClientLaunchProvider.cs +++ b/Source/ACE.SinglePlayer/ClientLaunch/DirectClientLaunchProvider.cs @@ -45,6 +45,8 @@ public static void AddAceArguments(IList arguments, string account, stri arguments.Add("-h"); arguments.Add($"{host}:{port}"); arguments.Add("-rodat"); - arguments.Add("off"); + // ACE.Server keeps the client DATs open with shared-read access. The client must + // also open them read-only or Windows rejects its write request while the server runs. + arguments.Add("on"); } } diff --git a/docs/SINGLE_PLAYER_ARCHITECTURE.md b/docs/SINGLE_PLAYER_ARCHITECTURE.md index 8895c26feb..8b881dfc6d 100644 --- a/docs/SINGLE_PLAYER_ARCHITECTURE.md +++ b/docs/SINGLE_PLAYER_ARCHITECTURE.md @@ -34,7 +34,7 @@ Two random passwords are generated: a private administrator credential used only ## Client providers -`IClientLaunchProvider` isolates client choices. `DirectClientLaunchProvider` uses `ProcessStartInfo.ArgumentList` for `-a`, `-v`, `-h`, and `-rodat off`; it has no Decal, Thwarg, Chorizite, or injection dependency. +`IClientLaunchProvider` isolates client choices. `DirectClientLaunchProvider` uses `ProcessStartInfo.ArgumentList` for `-a`, `-v`, `-h`, and `-rodat on`; read-only DAT access allows ACE.Server and `acclient.exe` to use the same files concurrently. Vanilla mode has no Decal, Thwarg, Chorizite, or injection dependency. `DecalClientLaunchProvider` detects `SOFTWARE\Decal\Agent\AgentPath` in 32/64-bit HKLM/HKCU views and validates `Inject.dll`. A separately built, self-contained x86 helper creates the 32-bit client suspended, loads the installed `Inject.dll`, invokes its exported `DecalStartup`, resumes the client, and returns a diagnostic PID. It bundles no Decal or third-party injector binaries and does not use ThwargLauncher or ThwargFilter. Invocation is diagnosed, but actual in-game Decal/plugin loading was not end-to-end tested in this repository environment. From 7e6db6bb8e2b06b8932128700bfbe5e4d7180e08 Mon Sep 17 00:00:00 2001 From: titaniumweiner <147983421+titaniumweiner@users.noreply.github.com> Date: Tue, 14 Jul 2026 19:40:53 -0400 Subject: [PATCH 04/15] Prepare public single-player release --- README.md | 44 +++++++++++++++ docs/SINGLE_PLAYER_BUILD_AND_TEST.md | 2 +- docs/SINGLE_PLAYER_FIRST_RUN.md | 4 +- docs/SINGLE_PLAYER_INSTALL.md | 82 ++++++++++++++++++++++++++++ scripts/publish-singleplayer.ps1 | 31 ++++++++++- 5 files changed, 159 insertions(+), 4 deletions(-) create mode 100644 docs/SINGLE_PLAYER_INSTALL.md diff --git a/README.md b/README.md index afeeafd312..3dccd46d99 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,47 @@ +# ACE Single Player Launcher + +ACE Single Player Launcher turns the open-source [ACEmulator ACE server](https://github.com/ACEmulator/ACE) into a private, local game session on Windows. One **PLAY** button starts an isolated MariaDB database, starts ACE.Server on your own computer, waits until the world is ready, and launches the original Asheron's Call client. + +The launcher is designed for players who want a persistent personal world without manually maintaining server configuration files or entering a MariaDB root password. Characters and world state are kept between sessions, and nothing is exposed to the internet by default. + +## Highlights + +- Private, loopback-only ACE server and database +- Automatic database credentials protected for the current Windows user +- Persistent characters and world state +- Direct Vanilla client launch, with optional Decal support when Decal is already installed +- Self-contained Windows release; players do not need to install .NET +- Original game client, DAT files, MariaDB, and ACE World data remain user-supplied + +## Install + +The short version is: + +1. Install MariaDB for Windows. +2. Have a working Asheron's Call client and DAT files. The usual client path is `C:\Turbine\Asheron's Call\acclient.exe`. +3. Download and extract the populated `ACE-World-Database-*.sql` file from the [official ACE World releases](https://github.com/ACEmulator/ACE-World-16PY-Patches/releases/latest). +4. Download the latest ACE Single Player release ZIP and extract it to a normal writable folder such as `C:\Games\ACE-SinglePlayer`. +5. Run `ACE.SinglePlayer.exe`, keep **Automatic private database**, select the client and world SQL file, save setup, and click **PLAY**. + +See the [complete installation guide](docs/SINGLE_PLAYER_INSTALL.md) for prerequisites, expected file names, first-run instructions, troubleshooting, backups, and upgrade guidance. + +> [!IMPORTANT] +> This repository and its release packages do not contain Asheron's Call, proprietary DAT files, MariaDB, Decal, or the ACE World database. Do not upload those files when sharing builds or reporting problems. + +## Project status + +This is a Windows-focused single-player launcher built as a maintained fork of ACE. Vanilla launch and the private-database path are the primary supported workflow. Decal integration is optional, and Chorizite integration is reserved for future work. See the [architecture](docs/SINGLE_PLAYER_ARCHITECTURE.md), [build instructions](docs/SINGLE_PLAYER_BUILD_AND_TEST.md), and [roadmap](docs/SINGLE_PLAYER_ROADMAP.md) for technical details. + +## Privacy and local files + +User-specific settings and protected credentials are stored under `%LOCALAPPDATA%\ACESinglePlayer`. Private database files, settings, logs, client files, and DAT files are ignored by Git and rejected by the public packaging script. Public release packages also exclude debug symbols that could reveal the build computer's source path. + +## Upstream project + +ACE Single Player is based on ACEmulator ACE and remains under ACE's AGPL-3.0 license. The original ACE project information follows. + +--- + # ACEmulator Core Server [![Discord](https://img.shields.io/discord/261242462972936192.svg?label=play+now!&style=for-the-badge&logo=discord)](https://discord.gg/C2WzhP9) diff --git a/docs/SINGLE_PLAYER_BUILD_AND_TEST.md b/docs/SINGLE_PLAYER_BUILD_AND_TEST.md index 1d8c1f283a..0063089bec 100644 --- a/docs/SINGLE_PLAYER_BUILD_AND_TEST.md +++ b/docs/SINGLE_PLAYER_BUILD_AND_TEST.md @@ -20,7 +20,7 @@ dotnet test .\Source\ACE.SinglePlayer.Tests\ACE.SinglePlayer.Tests.csproj -c Rel The integration test uses a unique temporary data directory and does not modify the Windows MariaDB service. Set `ACE_TEST_WORLD_SQL` to an extracted official `ACE-World-Database-*.sql` file to exercise the full populated-world import and empty-world repair path; otherwise the test uses a minimal populated fixture. -The clean package is written to `artifacts\ACE-SinglePlayer`. The packaging script stages publish output under the current user's temporary directory to avoid a .NET 10 publish-transform bug when the repository path contains an apostrophe. It then checks that the package contains no generated Config.js, settings, logs, database data, proprietary client/DAT files, or MariaDB executable. +The clean package is written to `artifacts\ACE-SinglePlayer`, with a shareable `artifacts\ACE-SinglePlayer.zip` archive beside it. The packaging script stages publish output under the current user's temporary directory to avoid a .NET 10 publish-transform bug when the repository path contains an apostrophe. It removes debug symbols that can contain build-machine paths, then checks that the package contains no generated Config.js, settings, logs, database data, proprietary client/DAT files, MariaDB executable, or personal user-profile paths. The normal ACE solution remains separate and can be verified with: diff --git a/docs/SINGLE_PLAYER_FIRST_RUN.md b/docs/SINGLE_PLAYER_FIRST_RUN.md index 53d797e35a..44dc9892fb 100644 --- a/docs/SINGLE_PLAYER_FIRST_RUN.md +++ b/docs/SINGLE_PLAYER_FIRST_RUN.md @@ -27,7 +27,7 @@ Double-click `ACE.SinglePlayer.exe`. 8. Choose **Vanilla** for the dependable direct-launch path. Choose **Decal** only when Decal and its `Inject.dll` are detected. Chorizite is displayed as future work and cannot be selected yet. 9. Save setup. -The private database lives at `Runtime\Database`. The launcher uses the `mariadb-install-db.exe` shipped beside the detected MariaDB program, initializes into a staging directory, and moves it into place only after initialization succeeds. It creates a dedicated `ace_singleplayer` database user; generated administrator and application passwords are protected with Windows DPAPI and are not displayed or logged. The existing MariaDB service and its `root` account are not changed. +The private database lives at `%LOCALAPPDATA%\ACESinglePlayer\Database`. The launcher uses the `mariadb-install-db.exe` shipped beside the detected MariaDB program, initializes into a staging directory, and moves it into place only after initialization succeeds. It creates a dedicated `ace_singleplayer` database user; generated administrator and application passwords are protected with Windows DPAPI and are not displayed or logged. The existing MariaDB service and its `root` account are not changed. To use a separately administered server instead, choose **Existing MariaDB/MySQL (advanced)** and enter its host, port, username, password, and database names. Use **Test Connection** and **Initialize Missing Databases** as needed. @@ -40,6 +40,6 @@ To use a separately administered server instead, choose **Existing MariaDB/MySQL Repeated Play clicks do not create duplicate processes. By default, closing the game gracefully stops the launcher-owned server. The Stop button requests ACE's `stop-now` console command and forces termination only if that verified child does not exit within 20 seconds. -Characters live in `Runtime\Database\ace_shard` when private mode is selected, not in the launcher executable. Preserve the entire `Runtime\Database` directory across upgrades and back it up before replacing or resetting anything. Settings live at `%LOCALAPPDATA%\ACESinglePlayer\settings.json`; secrets there are DPAPI-protected. The generated Runtime `Config.js` necessarily contains the database password for ACE.Server and is restricted to the current Windows user. +Characters live in `%LOCALAPPDATA%\ACESinglePlayer\Database\ace_shard` when private mode is selected, not in the launcher executable. Preserve the entire `%LOCALAPPDATA%\ACESinglePlayer` directory across upgrades and back it up before replacing or resetting anything. Settings live at `%LOCALAPPDATA%\ACESinglePlayer\settings.json`; secrets there are DPAPI-protected. The generated Runtime `Config.js` necessarily contains the database password for ACE.Server and is restricted to the current Windows user. Use **Open Logs** for startup errors. The launcher never writes account or database passwords to its log. The real client and a live ACE world database are required for an end-to-end character-screen test. diff --git a/docs/SINGLE_PLAYER_INSTALL.md b/docs/SINGLE_PLAYER_INSTALL.md new file mode 100644 index 0000000000..7bbc98b9a0 --- /dev/null +++ b/docs/SINGLE_PLAYER_INSTALL.md @@ -0,0 +1,82 @@ +# Installing ACE Single Player + +ACE Single Player runs the ACE server, a private MariaDB database, and the original Asheron's Call client together on one Windows computer. It does not include or download the game client, DAT files, MariaDB, Decal, or the ACE World database. + +## What you need + +- A 64-bit Windows 10 or Windows 11 computer. +- A working Asheron's Call client. A typical installation is `C:\Turbine\Asheron's Call`. +- These files together in the client directory: + - `acclient.exe` + - `client_cell_1.dat` + - `client_portal.dat` + - `client_local_English.dat` + - `client_highres.dat` is normally present and is recommended. +- [MariaDB Community Server for Windows](https://mariadb.org/download/). The launcher uses its database programs but creates a separate private database. The password chosen for MariaDB's normal Windows service is not used by the recommended setup. +- The populated `ACE-World-Database-*.sql` file from the [official ACE World release](https://github.com/ACEmulator/ACE-World-16PY-Patches/releases/latest). + +Do not select `Database\Base\WorldBase.sql` from the ACE source repository. That file only creates empty tables and does not contain the playable world. + +## Download and extract + +1. Open this project's **Releases** page and download the latest `ACE-SinglePlayer-*.zip` file. Do not download GitHub's automatically generated **Source code** archives unless you intend to build the program yourself. +2. Create a writable folder outside OneDrive and `Program Files`, such as `C:\Games\ACE-SinglePlayer`. +3. Extract the entire ZIP into that folder. `ACE.SinglePlayer.exe` and the `Server` folder must remain together. + +The release is self-contained. If Windows says that .NET must be installed, the source archive or an incomplete build was downloaded instead of the release ZIP. + +## First-time setup + +1. Double-click `ACE.SinglePlayer.exe`. +2. Select `acclient.exe`. When the DAT files are beside it, the launcher fills in the DAT location automatically. +3. Select `Server\ACE.Server.exe` if it was not detected automatically. +4. Keep the suggested Mods and Runtime locations. +5. Choose **Automatic private database (recommended)**. The launcher should detect MariaDB automatically. If it does not, select the installed `mariadbd.exe`, normally found under `C:\Program Files\MariaDB*\bin`. +6. Select the extracted, populated `ACE-World-Database-*.sql` file. +7. Keep the account name `singleplayer`, or choose one name that you will continue using for this world. +8. Choose **Vanilla** for the simplest launch. Choose **Decal** only when Decal is already installed and detected. +9. Save setup. Preparing and importing the world for the first time can take several minutes. +10. Click **PLAY** once. The launcher starts the private database and server, waits until the world is ready, and then opens the game client. + +The first successful login creates the local ACE account automatically. Closing the game normally stops the launcher-owned server and database. + +## Where your files are kept + +- Settings: `%LOCALAPPDATA%\ACESinglePlayer\settings.json` +- Private database and characters: `%LOCALAPPDATA%\ACESinglePlayer\Database` +- Generated runtime configuration and logs: `%LOCALAPPDATA%\ACESinglePlayer\Runtime` + +Passwords are generated automatically and protected for the current Windows user. The launcher does not change the MariaDB service's `root` account. + +Back up the entire `%LOCALAPPDATA%\ACESinglePlayer` folder before reinstalling Windows, resetting the private database, or making major world changes. Never publish that folder or include it in a GitHub issue. + +## Common problems + +### Nothing opens after clicking PLAY + +Use **Open Logs** in the launcher. Confirm that MariaDB is installed, the populated world SQL file was selected, and no other program is using the configured local port. + +### MariaDB says access denied for root + +Return to setup and choose **Automatic private database**. It does not use the existing MariaDB service's root password. + +### The client cannot open the data files + +Confirm that the required DAT files are beside `acclient.exe`, that they are not read-only due to cloud synchronization, and that the game is installed outside OneDrive. The normal `C:\Turbine\Asheron's Call` location is suitable. + +### The world starts and then immediately shuts down + +Make sure the selected SQL file is the populated `ACE-World-Database-*.sql` release, not the empty `WorldBase.sql` schema. + +## Updating + +1. Stop the game and launcher. +2. Back up `%LOCALAPPDATA%\ACESinglePlayer`. +3. Extract the new release to a new writable folder. +4. Start the new `ACE.SinglePlayer.exe`. Existing local settings and the private database are retained under `%LOCALAPPDATA%`. + +Do not replace the original client DAT files with files from an untrusted package. Future managed content-pack support should use isolated copies with checksums, backups, and rollback. + +## Building from source + +Developers need the .NET 10 SDK and should follow [ACE Single Player build and test](SINGLE_PLAYER_BUILD_AND_TEST.md). Players should use the prebuilt release ZIP instead. diff --git a/scripts/publish-singleplayer.ps1 b/scripts/publish-singleplayer.ps1 index a6f2ed86e5..4da19ad755 100644 --- a/scripts/publish-singleplayer.ps1 +++ b/scripts/publish-singleplayer.ps1 @@ -10,6 +10,7 @@ if ([string]::IsNullOrWhiteSpace($OutputDirectory)) { $OutputDirectory = Join-Path $repoRoot "artifacts\ACE-SinglePlayer" } $OutputDirectory = [IO.Path]::GetFullPath($OutputDirectory) +$outputPrefix = $OutputDirectory.TrimEnd([IO.Path]::DirectorySeparatorChar, [IO.Path]::AltDirectorySeparatorChar) + [IO.Path]::DirectorySeparatorChar $artifactsRoot = [IO.Path]::GetFullPath((Join-Path $repoRoot "artifacts")) $artifactsPrefix = $artifactsRoot.TrimEnd([IO.Path]::DirectorySeparatorChar, [IO.Path]::AltDirectorySeparatorChar) + [IO.Path]::DirectorySeparatorChar if ($OutputDirectory -ne $artifactsRoot -and -not $OutputDirectory.StartsWith($artifactsPrefix, [StringComparison]::OrdinalIgnoreCase)) { @@ -67,18 +68,46 @@ foreach ($directory in @("Runtime", "Mods", "Logs", "Client", "Docs")) { New-Item -ItemType Directory -Path (Join-Path $OutputDirectory $directory) -Force | Out-Null } Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_FIRST_RUN.md") (Join-Path $OutputDirectory "FIRST_RUN.md") +Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_INSTALL.md") (Join-Path $OutputDirectory "INSTALL.md") Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_ARCHITECTURE.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "docs\AQUIFIR_MOD_COMPATIBILITY.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_ROADMAP.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_BUILD_AND_TEST.md") (Join-Path $OutputDirectory "Docs") +Copy-Item (Join-Path $repoRoot "README.md") $OutputDirectory +Copy-Item (Join-Path $repoRoot "LICENSE") $OutputDirectory + +# Portable public packages do not need debug symbols. Portable PDBs can contain +# source document paths from the computer that produced the release. +Get-ChildItem -LiteralPath $OutputDirectory -Recurse -Filter "*.pdb" -File | Remove-Item -Force $forbidden = Get-ChildItem -LiteralPath $OutputDirectory -Recurse -File | Where-Object { + $relativePath = if ($_.FullName.StartsWith($outputPrefix, [StringComparison]::OrdinalIgnoreCase)) { + $_.FullName.Substring($outputPrefix.Length) + } else { + $_.FullName + } $_.Name -in @("Config.js", "settings.json", "acclient.exe", "mariadbd.exe", "ace-server.ready.json", "ace-server.process.json") -or - $_.Name -like "client_*.dat" -or $_.Extension -eq ".log" + $_.Name -like "client_*.dat" -or $_.Extension -in @(".log", ".pdb") -or + $relativePath -match '^(Runtime|Logs|Client)[\\/]' } if ($forbidden) { throw "Packaging safety check found forbidden runtime/proprietary files: $($forbidden.FullName -join ', ')" } +$textExtensions = @(".bat", ".config", ".example", ".js", ".json", ".md", ".ps1", ".sh", ".sql", ".txt", ".xml", ".yml", ".yaml") +$personalPathMatches = Get-ChildItem -LiteralPath $OutputDirectory -Recurse -File | Where-Object { + $_.Extension -in $textExtensions +} | Select-String -Pattern '(?i)(C:[\\/]Users[\\/][^\\/]+|/Users/[^/]+)' -List +if ($personalPathMatches) { + throw "Packaging safety check found a personal user-profile path: $($personalPathMatches.Path -join ', ')" +} + +$archivePath = "$OutputDirectory.zip" +if (Test-Path -LiteralPath $archivePath) { + Remove-Item -LiteralPath $archivePath -Force +} +Compress-Archive -Path (Join-Path $OutputDirectory "*") -DestinationPath $archivePath -CompressionLevel Optimal + Remove-Item -LiteralPath $stage -Recurse -Force Write-Host "ACE Single Player package created at: $OutputDirectory" +Write-Host "Shareable ZIP created at: $archivePath" From c8ec5df03eef85244c1ff36b2f23a2bb2fac12a8 Mon Sep 17 00:00:00 2001 From: titaniumweiner <147983421+titaniumweiner@users.noreply.github.com> Date: Tue, 14 Jul 2026 20:22:50 -0400 Subject: [PATCH 05/15] Add one-click Decal launch --- README.md | 4 +- Source/ACE.SinglePlayer.DecalHost/Program.cs | 279 ++++-------------- .../ClientLaunch/DecalClientLaunchProvider.cs | 13 +- .../ClientLaunch/ThwargDetector.cs | 40 +++ Source/ACE.SinglePlayer/UI/MainForm.cs | 66 +++++ Source/ACE.SinglePlayer/UI/SetupWizardForm.cs | 36 +-- docs/SINGLE_PLAYER_ARCHITECTURE.md | 8 +- docs/SINGLE_PLAYER_FIRST_RUN.md | 6 +- docs/SINGLE_PLAYER_INSTALL.md | 11 +- 9 files changed, 194 insertions(+), 269 deletions(-) create mode 100644 Source/ACE.SinglePlayer/ClientLaunch/ThwargDetector.cs diff --git a/README.md b/README.md index 3dccd46d99..9dca527069 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ The launcher is designed for players who want a persistent personal world withou - Private, loopback-only ACE server and database - Automatic database credentials protected for the current Windows user - Persistent characters and world state -- Direct Vanilla client launch, with optional Decal support when Decal is already installed +- Direct Vanilla client launch, with one-click Decal support when Decal and ThwargLauncher are already installed - Self-contained Windows release; players do not need to install .NET - Original game client, DAT files, MariaDB, and ACE World data remain user-supplied @@ -26,7 +26,7 @@ The short version is: See the [complete installation guide](docs/SINGLE_PLAYER_INSTALL.md) for prerequisites, expected file names, first-run instructions, troubleshooting, backups, and upgrade guidance. > [!IMPORTANT] -> This repository and its release packages do not contain Asheron's Call, proprietary DAT files, MariaDB, Decal, or the ACE World database. Do not upload those files when sharing builds or reporting problems. +> This repository and its release packages do not contain Asheron's Call, proprietary DAT files, MariaDB, Decal, ThwargLauncher, or the ACE World database. Do not upload those files when sharing builds or reporting problems. ## Project status diff --git a/Source/ACE.SinglePlayer.DecalHost/Program.cs b/Source/ACE.SinglePlayer.DecalHost/Program.cs index 8f6eb07f2a..3c23696e34 100644 --- a/Source/ACE.SinglePlayer.DecalHost/Program.cs +++ b/Source/ACE.SinglePlayer.DecalHost/Program.cs @@ -7,67 +7,85 @@ namespace ACE.SinglePlayer.DecalHost; internal static class Program { - private const uint CreateSuspended = 0x00000004; - private const uint MemCommit = 0x00001000; - private const uint MemReserve = 0x00002000; - private const uint MemRelease = 0x00008000; - private const uint PageReadWrite = 0x04; - private const uint Infinite = 0xFFFFFFFF; - private const uint Th32csSnapModule = 0x00000008; - private const uint Th32csSnapModule32 = 0x00000010; - private const uint DontResolveDllReferences = 0x00000001; - private static readonly IntPtr InvalidHandleValue = new(-1); - public static int Main(string[] args) { - ProcessInformation process = default; try { var options = Parse(args); var client = Required(options, "--client"); var decal = Required(options, "--decal"); + var injector = Required(options, "--injector"); var account = Required(options, "--account"); var password = Required(options, "--password"); var host = Required(options, "--host"); var port = Required(options, "--port"); - if (!File.Exists(client) || !File.Exists(decal)) - throw new FileNotFoundException("A required client or Decal file is missing."); + if (Environment.Is64BitProcess) + throw new PlatformNotSupportedException("The Decal launch helper must run as a 32-bit process."); + RequireFile(client, "Asheron's Call client"); + RequireFile(decal, "Decal Inject.dll"); + RequireFile(injector, "Thwarg injector.dll"); var commandLine = BuildCommandLine(new[] { - client, "-a", account, "-v", password, "-h", $"{host}:{port}", "-rodat", "off" + client, "-a", account, "-v", password, "-h", $"{host}:{port}", "-rodat", "on" }); - var startup = new StartupInfo { Size = Marshal.SizeOf() }; - if (!CreateProcess(client, new StringBuilder(commandLine), IntPtr.Zero, IntPtr.Zero, false, - CreateSuspended, IntPtr.Zero, Path.GetDirectoryName(client), ref startup, out process)) - throw new Win32Exception(Marshal.GetLastWin32Error(), "Unable to create the game process."); - - InjectLibraryAndInvoke(process.Process, (uint)process.ProcessId, decal, "DecalStartup"); - if (ResumeThread(process.Thread) == uint.MaxValue) - throw new Win32Exception(Marshal.GetLastWin32Error(), "Unable to resume the game process."); + var processId = LaunchWithInstalledThwargInjector( + injector, + commandLine, + Path.GetDirectoryName(client)!, + decal); + if (processId <= 0) + throw new InvalidOperationException("Thwarg's injector did not return a game process."); Console.Out.Write(JsonSerializer.Serialize(new { - ProcessId = process.ProcessId, + ProcessId = processId, DecalStartupInvoked = true })); return 0; } catch (Exception ex) { - if (process.Process != IntPtr.Zero) - TerminateProcess(process.Process, 1); - Console.Error.Write("The Decal startup path failed: " + ex.Message); + Console.Error.Write("The Decal startup path failed: " + Describe(ex)); return 1; } + } + + private static int LaunchWithInstalledThwargInjector( + string injectorPath, + string commandLine, + string workingDirectory, + string decalInjectPath) + { + var library = NativeLibrary.Load(injectorPath); + try + { + var export = NativeLibrary.GetExport(library, "LaunchInjected"); + var launch = Marshal.GetDelegateForFunctionPointer(export); + return launch(commandLine, workingDirectory, decalInjectPath, "DecalStartup"); + } finally { - if (process.Thread != IntPtr.Zero) - CloseHandle(process.Thread); - if (process.Process != IntPtr.Zero) - CloseHandle(process.Process); + NativeLibrary.Free(library); + } + } + + private static void RequireFile(string path, string description) + { + if (!File.Exists(path)) + throw new FileNotFoundException($"{description} is missing.", path); + } + + private static string Describe(Exception exception) + { + if (exception is Win32Exception windowsException) + { + var systemMessage = new Win32Exception(windowsException.NativeErrorCode).Message; + return $"{windowsException.Message} (Windows error {windowsException.NativeErrorCode}: {systemMessage})"; } + + return exception.Message; } internal static string BuildCommandLine(IEnumerable arguments) => @@ -99,90 +117,6 @@ internal static string QuoteArgument(string value) return result.ToString(); } - private static void InjectLibraryAndInvoke(IntPtr process, uint processId, string libraryPath, string exportName) - { - var bytes = Encoding.Unicode.GetBytes(Path.GetFullPath(libraryPath) + '\0'); - var remoteMemory = VirtualAllocEx(process, IntPtr.Zero, (nuint)bytes.Length, MemReserve | MemCommit, PageReadWrite); - if (remoteMemory == IntPtr.Zero) - throw new Win32Exception(Marshal.GetLastWin32Error(), "Unable to allocate injection memory."); - - try - { - if (!WriteProcessMemory(process, remoteMemory, bytes, (nuint)bytes.Length, out var written) || written != (nuint)bytes.Length) - throw new Win32Exception(Marshal.GetLastWin32Error(), "Unable to write the Decal library path."); - - var localKernel = GetModuleHandle("kernel32.dll"); - var localLoadLibrary = GetProcAddress(localKernel, "LoadLibraryW"); - var remoteKernel = FindRemoteModule(processId, "kernel32.dll"); - var remoteLoadLibrary = remoteKernel + checked((int)(localLoadLibrary.ToInt64() - localKernel.ToInt64())); - var remoteLibrary = RunRemoteThread(process, remoteLoadLibrary, remoteMemory, "Unable to load Decal Inject.dll."); - if (remoteLibrary == 0) - throw new InvalidOperationException("Decal Inject.dll did not load in the game process."); - - var localLibrary = LoadLibraryEx(libraryPath, IntPtr.Zero, DontResolveDllReferences); - if (localLibrary == IntPtr.Zero) - throw new Win32Exception(Marshal.GetLastWin32Error(), "Unable to inspect Decal Inject.dll."); - try - { - var localExport = GetProcAddress(localLibrary, exportName); - if (localExport == IntPtr.Zero) - throw new MissingMethodException($"Decal Inject.dll does not export {exportName}."); - var exportOffset = checked((int)(localExport.ToInt64() - localLibrary.ToInt64())); - var remoteExport = new IntPtr(unchecked((int)((long)remoteLibrary + exportOffset))); - RunRemoteThread(process, remoteExport, IntPtr.Zero, $"Unable to invoke Decal {exportName}."); - } - finally - { - FreeLibrary(localLibrary); - } - } - finally - { - VirtualFreeEx(process, remoteMemory, 0, MemRelease); - } - } - - private static uint RunRemoteThread(IntPtr process, IntPtr startAddress, IntPtr parameter, string error) - { - var thread = CreateRemoteThread(process, IntPtr.Zero, 0, startAddress, parameter, 0, out _); - if (thread == IntPtr.Zero) - throw new Win32Exception(Marshal.GetLastWin32Error(), error); - try - { - if (WaitForSingleObject(thread, Infinite) == uint.MaxValue || !GetExitCodeThread(thread, out var exitCode)) - throw new Win32Exception(Marshal.GetLastWin32Error(), error); - return exitCode; - } - finally - { - CloseHandle(thread); - } - } - - private static IntPtr FindRemoteModule(uint processId, string moduleName) - { - var snapshot = CreateToolhelp32Snapshot(Th32csSnapModule | Th32csSnapModule32, processId); - if (snapshot == InvalidHandleValue) - throw new Win32Exception(Marshal.GetLastWin32Error(), "Unable to inspect the game process modules."); - try - { - var entry = new ModuleEntry32 { Size = (uint)Marshal.SizeOf() }; - if (Module32First(snapshot, ref entry)) - { - do - { - if (string.Equals(entry.Module, moduleName, StringComparison.OrdinalIgnoreCase)) - return entry.ModuleBaseAddress; - } while (Module32Next(snapshot, ref entry)); - } - } - finally - { - CloseHandle(snapshot); - } - throw new InvalidOperationException($"The game process did not load {moduleName}."); - } - private static Dictionary Parse(string[] args) { var values = new Dictionary(StringComparer.OrdinalIgnoreCase); @@ -200,113 +134,10 @@ private static string Required(IReadOnlyDictionary values, strin ? value : throw new ArgumentException($"Missing {name}."); - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] - private struct StartupInfo - { - public int Size; - public string? Reserved; - public string? Desktop; - public string? Title; - public int X; - public int Y; - public int XSize; - public int YSize; - public int XCountChars; - public int YCountChars; - public int FillAttribute; - public int Flags; - public short ShowWindow; - public short Reserved2; - public IntPtr ReservedPointer; - public IntPtr StandardInput; - public IntPtr StandardOutput; - public IntPtr StandardError; - } - - [StructLayout(LayoutKind.Sequential)] - private struct ProcessInformation - { - public IntPtr Process; - public IntPtr Thread; - public int ProcessId; - public int ThreadId; - } - - [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] - private struct ModuleEntry32 - { - public uint Size; - public uint ModuleId; - public uint ProcessId; - public uint GlobalUsage; - public uint ProcessUsage; - public IntPtr ModuleBaseAddress; - public uint ModuleBaseSize; - public IntPtr ModuleHandle; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string Module; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] public string ExePath; - } - - [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] - [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool CreateProcess(string applicationName, StringBuilder commandLine, IntPtr processAttributes, - IntPtr threadAttributes, bool inheritHandles, uint creationFlags, IntPtr environment, string? currentDirectory, - ref StartupInfo startupInfo, out ProcessInformation processInformation); - - [DllImport("kernel32.dll", SetLastError = true)] - private static extern IntPtr VirtualAllocEx(IntPtr process, IntPtr address, nuint size, uint allocationType, uint protect); - - [DllImport("kernel32.dll", SetLastError = true)] - [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool VirtualFreeEx(IntPtr process, IntPtr address, nuint size, uint freeType); - - [DllImport("kernel32.dll", SetLastError = true)] - [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool WriteProcessMemory(IntPtr process, IntPtr address, byte[] buffer, nuint size, out nuint written); - - [DllImport("kernel32.dll", SetLastError = true)] - private static extern IntPtr CreateRemoteThread(IntPtr process, IntPtr attributes, nuint stackSize, - IntPtr startAddress, IntPtr parameter, uint creationFlags, out uint threadId); - - [DllImport("kernel32.dll", SetLastError = true)] - private static extern uint WaitForSingleObject(IntPtr handle, uint milliseconds); - - [DllImport("kernel32.dll", SetLastError = true)] - [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool GetExitCodeThread(IntPtr thread, out uint exitCode); - - [DllImport("kernel32.dll", CharSet = CharSet.Unicode)] - private static extern IntPtr GetModuleHandle(string moduleName); - - [DllImport("kernel32.dll", CharSet = CharSet.Ansi, SetLastError = true)] - private static extern IntPtr GetProcAddress(IntPtr module, string procedureName); - - [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] - private static extern IntPtr LoadLibraryEx(string fileName, IntPtr file, uint flags); - - [DllImport("kernel32.dll")] - [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool FreeLibrary(IntPtr module); - - [DllImport("kernel32.dll", SetLastError = true)] - private static extern IntPtr CreateToolhelp32Snapshot(uint flags, uint processId); - - [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] - [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool Module32First(IntPtr snapshot, ref ModuleEntry32 entry); - - [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)] - [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool Module32Next(IntPtr snapshot, ref ModuleEntry32 entry); - - [DllImport("kernel32.dll", SetLastError = true)] - private static extern uint ResumeThread(IntPtr thread); - - [DllImport("kernel32.dll")] - [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool CloseHandle(IntPtr handle); - - [DllImport("kernel32.dll")] - [return: MarshalAs(UnmanagedType.Bool)] - private static extern bool TerminateProcess(IntPtr process, uint exitCode); + [UnmanagedFunctionPointer(CallingConvention.Cdecl, CharSet = CharSet.Unicode)] + private delegate int LaunchInjectedDelegate( + string commandLine, + string workingDirectory, + string injectDllPath, + [MarshalAs(UnmanagedType.LPStr)] string initializeFunction); } diff --git a/Source/ACE.SinglePlayer/ClientLaunch/DecalClientLaunchProvider.cs b/Source/ACE.SinglePlayer/ClientLaunch/DecalClientLaunchProvider.cs index 708cbec6ae..bcf74f1dab 100644 --- a/Source/ACE.SinglePlayer/ClientLaunch/DecalClientLaunchProvider.cs +++ b/Source/ACE.SinglePlayer/ClientLaunch/DecalClientLaunchProvider.cs @@ -16,7 +16,7 @@ public DecalClientLaunchProvider(LauncherLog log) } public ClientLaunchMode Mode => ClientLaunchMode.Decal; - public string DisplayName => "Decal"; + public string DisplayName => "Decal through Thwarg"; public bool IsAvailable(out string reason) { @@ -26,6 +26,12 @@ public bool IsAvailable(out string reason) return false; } + if (ThwargDetector.Detect() is null) + { + reason = "ThwargLauncher was not detected, or its injector.dll is missing. Install ThwargLauncher to use Decal mode."; + return false; + } + if (!File.Exists(FindHostPath())) { reason = "The ACE Decal launch helper is not installed. Vanilla mode remains available."; @@ -40,6 +46,8 @@ public async Task LaunchAsync(ClientLaunchRequest request, Cancellation { var installation = DecalDetector.Detect() ?? throw new InvalidOperationException("Decal is not installed or its Inject.dll is missing. Select Vanilla mode and retry."); + var thwarg = ThwargDetector.Detect() + ?? throw new InvalidOperationException("ThwargLauncher is not installed or its injector.dll is missing. Install ThwargLauncher or select Vanilla mode."); var hostPath = FindHostPath(); if (!File.Exists(hostPath)) throw new FileNotFoundException("The ACE Decal launch helper is missing. Select Vanilla mode and retry.", hostPath); @@ -55,6 +63,7 @@ public async Task LaunchAsync(ClientLaunchRequest request, Cancellation }; Add(startInfo, "--client", request.Settings.ClientExePath); Add(startInfo, "--decal", installation.InjectDllPath); + Add(startInfo, "--injector", thwarg.InjectorDllPath); Add(startInfo, "--account", request.Settings.AccountName); Add(startInfo, "--password", request.AccountPassword); Add(startInfo, "--host", request.Settings.Host); @@ -78,7 +87,7 @@ public async Task LaunchAsync(ClientLaunchRequest request, Cancellation if (!result.DecalStartupInvoked || result.ProcessId <= 0) throw new InvalidOperationException("Decal's startup entry point was not invoked. Select Vanilla mode and retry."); - log.Write($"DecalStartup was invoked for client process {result.ProcessId}. End-to-end plugin loading must be verified in game."); + log.Write($"Started client process {result.ProcessId} with Decal through the installed Thwarg injector."); return Process.GetProcessById(result.ProcessId); } diff --git a/Source/ACE.SinglePlayer/ClientLaunch/ThwargDetector.cs b/Source/ACE.SinglePlayer/ClientLaunch/ThwargDetector.cs new file mode 100644 index 0000000000..712cca4852 --- /dev/null +++ b/Source/ACE.SinglePlayer/ClientLaunch/ThwargDetector.cs @@ -0,0 +1,40 @@ +using Microsoft.Win32; + +namespace ACE.SinglePlayer.ClientLaunch; + +public sealed record ThwargInstallation(string Directory, string InjectorDllPath); + +public static class ThwargDetector +{ + private const string LauncherKey = @"SOFTWARE\Thwargle Games\ThwargLauncher"; + + public static ThwargInstallation? Detect() + { + if (!OperatingSystem.IsWindows()) + return null; + + foreach (var hive in new[] { RegistryHive.LocalMachine, RegistryHive.CurrentUser }) + foreach (var view in new[] { RegistryView.Registry32, RegistryView.Registry64 }) + { + try + { + using var baseKey = RegistryKey.OpenBaseKey(hive, view); + using var key = baseKey.OpenSubKey(LauncherKey); + var launcherPath = key?.GetValue("Path") as string; + if (string.IsNullOrWhiteSpace(launcherPath)) + continue; + + var directory = launcherPath.Trim().TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + var injectorPath = Path.Combine(directory, "injector.dll"); + if (File.Exists(injectorPath)) + return new ThwargInstallation(directory, injectorPath); + } + catch (UnauthorizedAccessException) + { + // Try the next registry view/hive. + } + } + + return null; + } +} diff --git a/Source/ACE.SinglePlayer/UI/MainForm.cs b/Source/ACE.SinglePlayer/UI/MainForm.cs index d184af87e2..af35c7cf36 100644 --- a/Source/ACE.SinglePlayer/UI/MainForm.cs +++ b/Source/ACE.SinglePlayer/UI/MainForm.cs @@ -1,5 +1,6 @@ using System.Diagnostics; +using ACE.SinglePlayer.ClientLaunch; using ACE.SinglePlayer.Database; using ACE.SinglePlayer.Infrastructure; using ACE.SinglePlayer.Models; @@ -17,10 +18,13 @@ public sealed class MainForm : Form private readonly LauncherLog log; private readonly Label state = new() { AutoSize = false, Dock = DockStyle.Top, Height = 64, TextAlign = ContentAlignment.MiddleCenter, Font = new Font(SystemFonts.MessageBoxFont!.FontFamily, 14, FontStyle.Bold) }; private readonly Button play = new() { Text = "PLAY", Width = 330, Height = 100, Font = new Font(SystemFonts.MessageBoxFont.FontFamily, 26, FontStyle.Bold) }; + private readonly CheckBox useDecal = new() { Text = "Use Decal", AutoSize = true, Padding = new Padding(10, 38, 4, 0) }; private readonly Button stop = new() { Text = "Stop", Width = 100, Height = 38 }; private readonly TextBox diagnostics = new() { Dock = DockStyle.Fill, Multiline = true, ReadOnly = true, ScrollBars = ScrollBars.Vertical, Font = new Font(FontFamily.GenericMonospace, 9) }; private readonly Panel diagnosticPanel = new() { Dock = DockStyle.Fill, Visible = false, Padding = new Padding(8) }; + private readonly ToolTip toolTip = new(); private bool closingAllowed; + private bool updatingDecalPreference; public MainForm(LauncherController controller, SettingsStore settingsStore, ISecretProtector secretProtector, DatabaseRuntimeFactory databaseRuntimeFactory, DatabaseBootstrapper databaseBootstrapper, LauncherLog log) @@ -46,6 +50,7 @@ public MainForm(LauncherController controller, SettingsStore settingsStore, ISec var playPanel = new FlowLayoutPanel { Dock = DockStyle.Fill, FlowDirection = FlowDirection.LeftToRight, WrapContents = false, Padding = new Padding(150, 15, 0, 0) }; playPanel.Controls.Add(play); + playPanel.Controls.Add(useDecal); playPanel.Controls.Add(stop); main.Controls.Add(playPanel, 0, 1); @@ -61,6 +66,14 @@ public MainForm(LauncherController controller, SettingsStore settingsStore, ISec main.Controls.Add(diagnosticPanel, 0, 3); Controls.Add(main); + var decalAvailable = IsDecalAvailable(); + useDecal.Checked = controller.Settings.ClientLaunchMode == ClientLaunchMode.Decal; + useDecal.Enabled = decalAvailable; + useDecal.Text = decalAvailable ? "Use Decal" : "Use Decal (not detected)"; + toolTip.SetToolTip(useDecal, decalAvailable + ? "Launch the game with your installed Decal and ThwargLauncher. Uncheck for Vanilla." + : "Install both Decal and ThwargLauncher to enable this option."); + controller.State.Changed += UpdateState; log.MessageWritten += AppendDiagnostic; play.Click += async (_, _) => @@ -72,6 +85,7 @@ public MainForm(LauncherController controller, SettingsStore settingsStore, ISec WindowState = FormWindowState.Minimized; }; stop.Click += async (_, _) => await controller.StopAsync(); + useDecal.CheckedChanged += async (_, _) => await UpdateDecalPreferenceAsync(); settings.Click += async (_, _) => await ShowSettingsAsync(); mods.Click += (_, _) => new ModsForm(controller.Settings, () => controller.IsServerRunning).ShowDialog(this); logs.Click += (_, _) => Process.Start(new ProcessStartInfo { FileName = Path.GetDirectoryName(log.LogPath)!, UseShellExecute = true }); @@ -81,6 +95,57 @@ public MainForm(LauncherController controller, SettingsStore settingsStore, ISec controller.State.Set(LauncherState.Ready, "Ready — click Play"); } + private async Task UpdateDecalPreferenceAsync() + { + if (updatingDecalPreference) + return; + + var requestedMode = useDecal.Checked ? ClientLaunchMode.Decal : ClientLaunchMode.Vanilla; + var previousMode = controller.Settings.ClientLaunchMode; + if (requestedMode == ClientLaunchMode.Decal && !IsDecalAvailable()) + { + SetDecalCheckbox(previousMode == ClientLaunchMode.Decal); + MessageBox.Show(this, "Use Decal requires working Decal and ThwargLauncher installations.", + "Decal unavailable", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + + useDecal.Enabled = false; + try + { + controller.Settings.ClientLaunchMode = requestedMode; + await settingsStore.SaveAsync(controller.Settings); + controller.UpdateSettings(controller.Settings); + } + catch (Exception ex) + { + controller.Settings.ClientLaunchMode = previousMode; + SetDecalCheckbox(previousMode == ClientLaunchMode.Decal); + MessageBox.Show(this, "The Decal preference could not be saved.\r\n\r\n" + ex.Message, + "Settings error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + finally + { + useDecal.Enabled = IsDecalAvailable() && !controller.IsServerRunning && !controller.IsClientRunning; + } + } + + private void SetDecalCheckbox(bool value) + { + updatingDecalPreference = true; + try + { + useDecal.Checked = value; + } + finally + { + updatingDecalPreference = false; + } + } + + private static bool IsDecalAvailable() => + DecalDetector.Detect() is not null && ThwargDetector.Detect() is not null; + private async Task ShowSettingsAsync() { if (controller.IsServerRunning) @@ -104,6 +169,7 @@ private void UpdateState(LauncherStateChanged change) state.Text = $"{ToDisplayName(change.State)}\r\n{change.Message}"; stop.Enabled = controller.IsServerRunning || controller.IsClientRunning; play.Enabled = (change.State is LauncherState.Ready or LauncherState.Error or LauncherState.NotConfigured) && !controller.IsClientRunning; + useDecal.Enabled = IsDecalAvailable() && !controller.IsServerRunning && !controller.IsClientRunning; if (change.State == LauncherState.Error) diagnosticPanel.Visible = true; } diff --git a/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs b/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs index 00da49d688..de4fbd4aea 100644 --- a/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs +++ b/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs @@ -1,4 +1,3 @@ -using ACE.SinglePlayer.ClientLaunch; using ACE.SinglePlayer.Database; using ACE.SinglePlayer.Infrastructure; using ACE.SinglePlayer.Models; @@ -30,7 +29,6 @@ public sealed class SetupWizardForm : Form private readonly TextBox accountName = new(); private readonly NumericUpDown serverPort = new() { Minimum = 1, Maximum = 65534 }; private readonly NumericUpDown startupTimeout = new() { Minimum = 30, Maximum = 900, Increment = 30 }; - private readonly ComboBox clientMode = new() { DropDownStyle = ComboBoxStyle.DropDownList }; private readonly CheckBox stopWithGame = new() { Text = "Stop the local server when the game exits", AutoSize = true }; private readonly CheckBox stopManagedDatabase = new() { Text = "Stop launcher-managed MariaDB when this launcher exits", AutoSize = true }; private readonly CheckBox minimize = new() { Text = "Minimize this launcher after the client starts", AutoSize = true }; @@ -42,7 +40,6 @@ public sealed class SetupWizardForm : Form AutoSize = true, MaximumSize = new Size(650, 0) }; - private readonly Label decalStatus = new() { AutoSize = true, MaximumSize = new Size(620, 0) }; private readonly Button testDatabase = new() { Text = "Check Database", AutoSize = true }; private readonly Button initializeDatabase = new() { Text = "Prepare Private Database", AutoSize = true }; private readonly Button back = new() { Text = "Back", AutoSize = true }; @@ -68,7 +65,6 @@ public SetupWizardForm(LauncherSettings settings, SettingsStore settingsStore, I FormBorderStyle = FormBorderStyle.Sizable; databaseMode.Items.AddRange(new object[] { "Automatic private database (recommended)", "Existing MariaDB/MySQL (advanced)" }); - clientMode.Items.AddRange(new object[] { "Vanilla", "Decal", "Chorizite (future)" }); pages.TabPages.Add(CreateClientPage()); pages.TabPages.Add(CreateServerPage()); @@ -186,14 +182,11 @@ private TabPage CreatePlayPage() AddRow(layout, "Persistent account", accountName, 0); AddRow(layout, "Local server port", serverPort, 1); AddRow(layout, "Startup timeout (seconds)", startupTimeout, 2); - AddRow(layout, "Client launch mode", clientMode, 3); - layout.Controls.Add(decalStatus, 1, 4); - layout.SetColumnSpan(decalStatus, 2); - layout.Controls.Add(stopWithGame, 1, 5); + layout.Controls.Add(stopWithGame, 1, 3); layout.SetColumnSpan(stopWithGame, 2); - layout.Controls.Add(stopManagedDatabase, 1, 6); + layout.Controls.Add(stopManagedDatabase, 1, 4); layout.SetColumnSpan(stopManagedDatabase, 2); - layout.Controls.Add(minimize, 1, 7); + layout.Controls.Add(minimize, 1, 5); layout.SetColumnSpan(minimize, 2); var note = new Label { @@ -201,7 +194,7 @@ private TabPage CreatePlayPage() AutoSize = true, MaximumSize = new Size(650, 0) }; - layout.Controls.Add(note, 0, 8); + layout.Controls.Add(note, 0, 6); layout.SetColumnSpan(note, 3); page.Controls.Add(layout); return page; @@ -240,13 +233,9 @@ private void LoadSettings() accountName.Text = settings.AccountName; serverPort.Value = settings.Port; startupTimeout.Value = Math.Clamp(settings.ServerStartupTimeoutSeconds, (int)startupTimeout.Minimum, (int)startupTimeout.Maximum); - clientMode.SelectedIndex = (int)settings.ClientLaunchMode; stopWithGame.Checked = settings.StopServerWhenGameExits; stopManagedDatabase.Checked = settings.StopManagedDatabaseWhenLauncherExits; minimize.Checked = settings.MinimizeLauncherAfterClientStarts; - decalStatus.Text = DecalDetector.Detect() is null - ? "Decal is not detected. Vanilla mode is fully supported; Chorizite is reserved for future work." - : "Decal and Inject.dll were detected. Decal mode is optional; Vanilla remains available if injection fails."; UpdateDatabaseModeControls(); } @@ -307,12 +296,6 @@ private LauncherSettings BuildSettings() result.StopServerWhenGameExits = stopWithGame.Checked; result.StopManagedDatabaseWhenLauncherExits = stopManagedDatabase.Checked; result.MinimizeLauncherAfterClientStarts = minimize.Checked; - result.ClientLaunchMode = clientMode.SelectedIndex switch - { - 1 => ClientLaunchMode.Decal, - 2 => ClientLaunchMode.ChoriziteFuture, - _ => ClientLaunchMode.Vanilla - }; return result; } @@ -325,17 +308,6 @@ private async Task SaveAsync() MessageBox.Show(this, validation.Message, "Setup needs attention", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } - if (settings.ClientLaunchMode == ClientLaunchMode.Decal && DecalDetector.Detect() is null) - { - MessageBox.Show(this, "Decal is not detected. Choose Vanilla mode to continue.", "Decal unavailable", MessageBoxButtons.OK, MessageBoxIcon.Warning); - return; - } - if (settings.ClientLaunchMode == ClientLaunchMode.ChoriziteFuture) - { - MessageBox.Show(this, "Chorizite launch support is reserved for a future release. Choose Vanilla or detected Decal mode.", "Not implemented", MessageBoxButtons.OK, MessageBoxIcon.Information); - return; - } - finish.Enabled = false; try { diff --git a/docs/SINGLE_PLAYER_ARCHITECTURE.md b/docs/SINGLE_PLAYER_ARCHITECTURE.md index 8b881dfc6d..2e7e84d7bb 100644 --- a/docs/SINGLE_PLAYER_ARCHITECTURE.md +++ b/docs/SINGLE_PLAYER_ARCHITECTURE.md @@ -6,7 +6,7 @@ 1. A user-installed `mariadbd.exe` in automatic private-database mode. 2. The published `ACE.Server.exe`, started with `--config ` and `--ready-file `. -3. `acclient.exe`, launched directly in Vanilla mode or through the package's isolated x86 Decal helper. +3. `acclient.exe`, launched directly in Vanilla mode or through the package's isolated x86 bridge to an installed ThwargLauncher injector. The original server behavior is unchanged when the two new arguments are omitted. The normal cross-platform `Source/ACE.sln` is unchanged; Windows packaging uses `Source/ACE.SinglePlayer.slnx`. @@ -36,7 +36,9 @@ Two random passwords are generated: a private administrator credential used only `IClientLaunchProvider` isolates client choices. `DirectClientLaunchProvider` uses `ProcessStartInfo.ArgumentList` for `-a`, `-v`, `-h`, and `-rodat on`; read-only DAT access allows ACE.Server and `acclient.exe` to use the same files concurrently. Vanilla mode has no Decal, Thwarg, Chorizite, or injection dependency. -`DecalClientLaunchProvider` detects `SOFTWARE\Decal\Agent\AgentPath` in 32/64-bit HKLM/HKCU views and validates `Inject.dll`. A separately built, self-contained x86 helper creates the 32-bit client suspended, loads the installed `Inject.dll`, invokes its exported `DecalStartup`, resumes the client, and returns a diagnostic PID. It bundles no Decal or third-party injector binaries and does not use ThwargLauncher or ThwargFilter. Invocation is diagnosed, but actual in-game Decal/plugin loading was not end-to-end tested in this repository environment. +`DecalClientLaunchProvider` detects `SOFTWARE\Decal\Agent\AgentPath` and `SOFTWARE\Thwargle Games\ThwargLauncher\Path` in 32/64-bit HKLM/HKCU views, then validates Decal's `Inject.dll` and ThwargLauncher's `injector.dll`. A separately built, self-contained x86 bridge loads the installed Thwarg native launcher and asks it to start `acclient.exe` with Decal's `DecalStartup` entry point. The account, protected password, loopback server address, and `-rodat on` setting are supplied automatically by ACE Single Player. No Decal, ThwargLauncher, ThwargFilter, or third-party injector binary is bundled or copied. + +The main window exposes this choice as a **Use Decal** checkbox beside **PLAY**. Checking it persists `ClientLaunchMode.Decal`; unchecking it persists `ClientLaunchMode.Vanilla`. The checkbox is disabled while the game or server is running and when either required installation is missing. Database and path setup contain no separate client-mode dropdown. ## Mods @@ -49,5 +51,5 @@ Decal registry inventory is read-only and clearly typed as client-side. Chorizit - A real client, DATs, installed MariaDB Windows distribution, and populated world package are user-supplied. - MariaDB binaries are detected and reused but are not bundled or downloaded by the launcher. - The client and live character-selection screen were not available for end-to-end testing here. -- Decal's startup export is invoked and diagnosed, but in-game injection/plugin behavior requires a machine with a working Decal/client installation. +- Decal mode requires separate working Decal and ThwargLauncher installations. Client creation through the installed Thwarg injector is verified; individual plugins remain outside this project's control. - Chorizite launch and package installation are reserved for future work. diff --git a/docs/SINGLE_PLAYER_FIRST_RUN.md b/docs/SINGLE_PLAYER_FIRST_RUN.md index 44dc9892fb..8ccd2a4cce 100644 --- a/docs/SINGLE_PLAYER_FIRST_RUN.md +++ b/docs/SINGLE_PLAYER_FIRST_RUN.md @@ -1,6 +1,6 @@ # ACE Single Player: first run -ACE Single Player keeps ACE.Server as a private local process and launches the original client directly. It does not include or download Asheron's Call, DAT files, MariaDB, Decal, or community mods. +ACE Single Player keeps ACE.Server as a private local process and launches the original client directly. It does not include or download Asheron's Call, DAT files, MariaDB, Decal, ThwargLauncher, or community mods. ## Before opening the launcher @@ -24,8 +24,8 @@ Double-click `ACE.SinglePlayer.exe`. 5. Select the extracted, populated `ACE-World-Database-*.sql` file. Click **Prepare Private Database** if you want to prepare it immediately, or continue; **Save Setup** performs the same preparation automatically. The first world import can take several minutes. Existing complete databases are never overwritten. Private databases left with empty world tables by an interrupted or older setup are repaired from the selected package; external databases are never repaired automatically. 6. Keep the account name `singleplayer` or choose one permanent name. A strong password is generated once, protected with Windows DPAPI, and reused. Do not change or delete this account if you want the same characters. 7. Keep local port `9000` unless it conflicts with another application. -8. Choose **Vanilla** for the dependable direct-launch path. Choose **Decal** only when Decal and its `Inject.dll` are detected. Chorizite is displayed as future work and cannot be selected yet. -9. Save setup. +8. Save setup. +9. On the main launcher, check **Use Decal** beside **PLAY** when Decal, ThwargLauncher, `Inject.dll`, and `injector.dll` are detected. Leave it unchecked for Vanilla. **PLAY** starts the entire session directly from ACE Single Player. The private database lives at `%LOCALAPPDATA%\ACESinglePlayer\Database`. The launcher uses the `mariadb-install-db.exe` shipped beside the detected MariaDB program, initializes into a staging directory, and moves it into place only after initialization succeeds. It creates a dedicated `ace_singleplayer` database user; generated administrator and application passwords are protected with Windows DPAPI and are not displayed or logged. The existing MariaDB service and its `root` account are not changed. diff --git a/docs/SINGLE_PLAYER_INSTALL.md b/docs/SINGLE_PLAYER_INSTALL.md index 7bbc98b9a0..cf92c8c9b3 100644 --- a/docs/SINGLE_PLAYER_INSTALL.md +++ b/docs/SINGLE_PLAYER_INSTALL.md @@ -1,6 +1,6 @@ # Installing ACE Single Player -ACE Single Player runs the ACE server, a private MariaDB database, and the original Asheron's Call client together on one Windows computer. It does not include or download the game client, DAT files, MariaDB, Decal, or the ACE World database. +ACE Single Player runs the ACE server, a private MariaDB database, and the original Asheron's Call client together on one Windows computer. It does not include or download the game client, DAT files, MariaDB, Decal, ThwargLauncher, or the ACE World database. ## What you need @@ -14,6 +14,7 @@ ACE Single Player runs the ACE server, a private MariaDB database, and the origi - `client_highres.dat` is normally present and is recommended. - [MariaDB Community Server for Windows](https://mariadb.org/download/). The launcher uses its database programs but creates a separate private database. The password chosen for MariaDB's normal Windows service is not used by the recommended setup. - The populated `ACE-World-Database-*.sql` file from the [official ACE World release](https://github.com/ACEmulator/ACE-World-16PY-Patches/releases/latest). +- Optional for Decal mode: working Decal and ThwargLauncher installations. ACE Single Player uses ThwargLauncher's installed `injector.dll` but does not copy or redistribute it. Do not select `Database\Base\WorldBase.sql` from the ACE source repository. That file only creates empty tables and does not contain the playable world. @@ -34,8 +35,8 @@ The release is self-contained. If Windows says that .NET must be installed, the 5. Choose **Automatic private database (recommended)**. The launcher should detect MariaDB automatically. If it does not, select the installed `mariadbd.exe`, normally found under `C:\Program Files\MariaDB*\bin`. 6. Select the extracted, populated `ACE-World-Database-*.sql` file. 7. Keep the account name `singleplayer`, or choose one name that you will continue using for this world. -8. Choose **Vanilla** for the simplest launch. Choose **Decal** only when Decal is already installed and detected. -9. Save setup. Preparing and importing the world for the first time can take several minutes. +8. Save setup. Preparing and importing the world for the first time can take several minutes. +9. On the main launcher, check **Use Decal** beside **PLAY** when both Decal and ThwargLauncher are installed. Leave it unchecked for Vanilla. No second launcher window or repeated login is required. 10. Click **PLAY** once. The launcher starts the private database and server, waits until the world is ready, and then opens the game client. The first successful login creates the local ACE account automatically. Closing the game normally stops the launcher-owned server and database. @@ -64,6 +65,10 @@ Return to setup and choose **Automatic private database**. It does not use the e Confirm that the required DAT files are beside `acclient.exe`, that they are not read-only due to cloud synchronization, and that the game is installed outside OneDrive. The normal `C:\Turbine\Asheron's Call` location is suitable. +### Decal mode is unavailable + +Install and configure both Decal and ThwargLauncher normally, then reopen ACE Single Player. The **Use Decal** checkbox becomes available when both installations are detected. Decal mode deliberately uses their installed files and never bundles them. + ### The world starts and then immediately shuts down Make sure the selected SQL file is the populated `ACE-World-Database-*.sql` release, not the empty `WorldBase.sql` schema. From 6ffe06e120a1cdb1cba5f14feb60b1b508e001c5 Mon Sep 17 00:00:00 2001 From: titaniumweiner <147983421+titaniumweiner@users.noreply.github.com> Date: Wed, 15 Jul 2026 06:38:52 -0400 Subject: [PATCH 06/15] Add mod library and automatic client detection --- .gitignore | 1 - README.md | 8 +- ....SinglePlayer.Mods.CriticalOverride.csproj | 21 + .../CriticalOverridePatch.cs | 35 ++ .../Meta.json | 14 + .../Mod.cs | 49 +++ .../README.md | 9 + .../ace-mod.json | 8 + .../ConfigurationAndValidationTests.cs | 71 +++- Source/ACE.SinglePlayer.Tests/ModTests.cs | 99 +++++ Source/ACE.SinglePlayer.slnx | 1 + .../ACE.SinglePlayer/ACE.SinglePlayer.csproj | 3 + .../Assets/dereth-launcher-background.png | Bin 0 -> 1923118 bytes .../Infrastructure/SettingsPathRepairer.cs | 66 +++ .../Infrastructure/SetupValidator.cs | 56 ++- .../Mods/AceServerModProvider.cs | 91 ++++ .../Mods/AquafirSampleCatalog.cs | 178 ++++++++ .../Mods/DecalPluginProvider.cs | 58 +++ .../Mods/FutureModProviders.cs | 13 + Source/ACE.SinglePlayer/Mods/ModCatalog.cs | 13 + .../Mods/ModCatalogService.cs | 129 ++++++ .../Mods/ModMetadataEditor.cs | 41 ++ Source/ACE.SinglePlayer/Mods/ModModels.cs | 133 ++++++ .../Mods/ModPackageInstaller.cs | 213 ++++++++++ .../Processes/ClientProcessManager.cs | 5 + Source/ACE.SinglePlayer/Program.cs | 7 + Source/ACE.SinglePlayer/UI/MainForm.cs | 130 +++++- Source/ACE.SinglePlayer/UI/ModsForm.cs | 392 +++++++++++++++--- Source/ACE.SinglePlayer/UI/SetupWizardForm.cs | 8 +- docs/AQUIFIR_MOD_COMPATIBILITY.md | 8 +- docs/MOD_LIBRARY.md | 44 ++ docs/SINGLE_PLAYER_FIRST_RUN.md | 5 +- docs/SINGLE_PLAYER_INSTALL.md | 5 +- scripts/publish-singleplayer.ps1 | 22 +- 34 files changed, 1837 insertions(+), 99 deletions(-) create mode 100644 Source/ACE.SinglePlayer.Mods.CriticalOverride/ACE.SinglePlayer.Mods.CriticalOverride.csproj create mode 100644 Source/ACE.SinglePlayer.Mods.CriticalOverride/CriticalOverridePatch.cs create mode 100644 Source/ACE.SinglePlayer.Mods.CriticalOverride/Meta.json create mode 100644 Source/ACE.SinglePlayer.Mods.CriticalOverride/Mod.cs create mode 100644 Source/ACE.SinglePlayer.Mods.CriticalOverride/README.md create mode 100644 Source/ACE.SinglePlayer.Mods.CriticalOverride/ace-mod.json create mode 100644 Source/ACE.SinglePlayer/Assets/dereth-launcher-background.png create mode 100644 Source/ACE.SinglePlayer/Infrastructure/SettingsPathRepairer.cs create mode 100644 Source/ACE.SinglePlayer/Mods/AceServerModProvider.cs create mode 100644 Source/ACE.SinglePlayer/Mods/AquafirSampleCatalog.cs create mode 100644 Source/ACE.SinglePlayer/Mods/DecalPluginProvider.cs create mode 100644 Source/ACE.SinglePlayer/Mods/FutureModProviders.cs create mode 100644 Source/ACE.SinglePlayer/Mods/ModCatalog.cs create mode 100644 Source/ACE.SinglePlayer/Mods/ModCatalogService.cs create mode 100644 Source/ACE.SinglePlayer/Mods/ModMetadataEditor.cs create mode 100644 Source/ACE.SinglePlayer/Mods/ModModels.cs create mode 100644 Source/ACE.SinglePlayer/Mods/ModPackageInstaller.cs create mode 100644 docs/MOD_LIBRARY.md diff --git a/.gitignore b/.gitignore index 29ced94fcb..8759729371 100644 --- a/.gitignore +++ b/.gitignore @@ -310,7 +310,6 @@ artifacts/ Source/ACE.SinglePlayer/Runtime/ Source/ACE.SinglePlayer/Logs/ Source/ACE.SinglePlayer/Client/ -Source/ACE.SinglePlayer/Mods/ **/ace-server.ready.json **/ace-server.process.json **/settings.json diff --git a/README.md b/README.md index 9dca527069..95f96656f4 100644 --- a/README.md +++ b/README.md @@ -18,11 +18,17 @@ The launcher is designed for players who want a persistent personal world withou The short version is: 1. Install MariaDB for Windows. -2. Have a working Asheron's Call client and DAT files. The usual client path is `C:\Turbine\Asheron's Call\acclient.exe`. +2. Have a complete Asheron's Call client in one writable folder with all four client DAT files beside `acclient.exe`. The usual client path is `C:\Turbine\Asheron's Call\acclient.exe`. 3. Download and extract the populated `ACE-World-Database-*.sql` file from the [official ACE World releases](https://github.com/ACEmulator/ACE-World-16PY-Patches/releases/latest). 4. Download the latest ACE Single Player release ZIP and extract it to a normal writable folder such as `C:\Games\ACE-SinglePlayer`. 5. Run `ACE.SinglePlayer.exe`, keep **Automatic private database**, select the client and world SQL file, save setup, and click **PLAY**. +## Mods + +Open **Mods** in the launcher to browse the curated mod library. Every entry includes a plain-language description, compatibility result, requirements, and a saved-game safety warning. `CriticalOverride` is the first Aquafir sample rebuilt for this exact ACE version and is included as a checksum-verified one-click package; other samples remain clearly marked until they are ported and tested. + +Turning a mod off stops its code after a server restart, but it does not undo experience, items, balances, character properties, or world content already saved by that mod. The launcher blocks removal of mods whose saved data may still depend on them and moves safely removable files to a recovery folder rather than deleting them. See [Mod library and saved-game safety](docs/MOD_LIBRARY.md) for the full policy and the separate plan for world/DAT content packs. + See the [complete installation guide](docs/SINGLE_PLAYER_INSTALL.md) for prerequisites, expected file names, first-run instructions, troubleshooting, backups, and upgrade guidance. > [!IMPORTANT] diff --git a/Source/ACE.SinglePlayer.Mods.CriticalOverride/ACE.SinglePlayer.Mods.CriticalOverride.csproj b/Source/ACE.SinglePlayer.Mods.CriticalOverride/ACE.SinglePlayer.Mods.CriticalOverride.csproj new file mode 100644 index 0000000000..fb59b19f38 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.CriticalOverride/ACE.SinglePlayer.Mods.CriticalOverride.csproj @@ -0,0 +1,21 @@ + + + net10.0 + CriticalOverride + CriticalOverride + x64 + enable + enable + + + + + + + + + + + + + diff --git a/Source/ACE.SinglePlayer.Mods.CriticalOverride/CriticalOverridePatch.cs b/Source/ACE.SinglePlayer.Mods.CriticalOverride/CriticalOverridePatch.cs new file mode 100644 index 0000000000..ac35bafaeb --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.CriticalOverride/CriticalOverridePatch.cs @@ -0,0 +1,35 @@ +using ACE.Server.Entity; +using ACE.Server.WorldObjects; +using ACE.Server.WorldObjects.Entity; + +using HarmonyLib; + +namespace CriticalOverride; + +[HarmonyPatch] +public static class CriticalOverridePatch +{ + [HarmonyPrefix] + [HarmonyPatch(typeof(WorldObject), nameof(WorldObject.GetWeaponCriticalChance), + new[] { typeof(WorldObject), typeof(Creature), typeof(CreatureSkill), typeof(Creature) })] + public static bool OverridePhysicalCriticalChance(Creature target, ref float __result) + { + if (target is Player) + return true; + + __result = Mod.Settings.CritChance; + return false; + } + + [HarmonyPrefix] + [HarmonyPatch(typeof(WorldObject), nameof(WorldObject.GetWeaponMagicCritFrequency), + new[] { typeof(WorldObject), typeof(Creature), typeof(CreatureSkill), typeof(Creature) })] + public static bool OverrideMagicCriticalChance(Creature target, ref float __result) + { + if (target is Player) + return true; + + __result = Mod.Settings.MagicCritChance; + return false; + } +} diff --git a/Source/ACE.SinglePlayer.Mods.CriticalOverride/Meta.json b/Source/ACE.SinglePlayer.Mods.CriticalOverride/Meta.json new file mode 100644 index 0000000000..0b94620e82 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.CriticalOverride/Meta.json @@ -0,0 +1,14 @@ +{ + "Name": "CriticalOverride", + "Author": "aquafir; ACE Single Player port", + "Description": "Overrides physical and magic critical-hit chances against non-player creatures.", + "Version": "1.0.0-sp1", + "Priority": 0, + "Enabled": true, + "HotReload": false, + "RegisterCommands": false, + "CatalogId": "aquafir.critical-override", + "TargetAceVersion": "ACE.Server 1.1 / .NET 10", + "DataImpact": "SettingsOnly", + "RemovalPolicy": "Safe" +} diff --git a/Source/ACE.SinglePlayer.Mods.CriticalOverride/Mod.cs b/Source/ACE.SinglePlayer.Mods.CriticalOverride/Mod.cs new file mode 100644 index 0000000000..9686f5f359 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.CriticalOverride/Mod.cs @@ -0,0 +1,49 @@ +using System.Text.Json; + +using ACE.Server.Mods; + +using HarmonyLib; + +namespace CriticalOverride; + +public sealed class Mod : IHarmonyMod +{ + private const string HarmonyId = "aquafir.CriticalOverride.ace-single-player"; + private readonly Harmony harmony = new(HarmonyId); + + internal static CriticalOverrideSettings Settings { get; private set; } = new(); + + public void Initialize() + { + Settings = LoadSettings(Path.Combine(this.GetFolder(), "Settings.json")); + harmony.PatchAll(typeof(Mod).Assembly); + ModManager.Log($"CriticalOverride configured physical crit chance {Settings.CritChance:P0} and magic crit chance {Settings.MagicCritChance:P0} against creatures."); + } + + public void Dispose() + { + harmony.UnpatchAll(HarmonyId); + } + + private static CriticalOverrideSettings LoadSettings(string path) + { + if (!File.Exists(path)) + return new CriticalOverrideSettings(); + + var settings = JsonSerializer.Deserialize(File.ReadAllText(path), new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true, + ReadCommentHandling = JsonCommentHandling.Skip, + AllowTrailingCommas = true + }) ?? new CriticalOverrideSettings(); + if (settings.CritChance is < 0 or > 1 || settings.MagicCritChance is < 0 or > 1) + throw new InvalidDataException("CriticalOverride chances must be between 0 and 1."); + return settings; + } +} + +public sealed class CriticalOverrideSettings +{ + public float CritChance { get; set; } = 0.5f; + public float MagicCritChance { get; set; } = 0.05f; +} diff --git a/Source/ACE.SinglePlayer.Mods.CriticalOverride/README.md b/Source/ACE.SinglePlayer.Mods.CriticalOverride/README.md new file mode 100644 index 0000000000..42beb11ee2 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.CriticalOverride/README.md @@ -0,0 +1,9 @@ +# CriticalOverride for ACE Single Player + +This is a .NET 10 port of aquafir's `ACE.BaseMod` CriticalOverride sample. It overrides physical and magic critical-hit chances against non-player creatures while leaving player-versus-player calculations unchanged. + +Edit `Settings.json` while the local server is stopped. Values are probabilities from `0` to `1`; for example, `0.5` is 50 percent. Restart the server after changes. + +Original source: + +The original and modified source are licensed under the GNU Affero General Public License v3.0, the same license included with ACE Single Player. diff --git a/Source/ACE.SinglePlayer.Mods.CriticalOverride/ace-mod.json b/Source/ACE.SinglePlayer.Mods.CriticalOverride/ace-mod.json new file mode 100644 index 0000000000..bb6247e438 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.CriticalOverride/ace-mod.json @@ -0,0 +1,8 @@ +{ + "formatVersion": 1, + "id": "aquafir.critical-override", + "name": "CriticalOverride", + "version": "1.0.0-sp1", + "folderName": "CriticalOverride", + "entryAssembly": "CriticalOverride.dll" +} diff --git a/Source/ACE.SinglePlayer.Tests/ConfigurationAndValidationTests.cs b/Source/ACE.SinglePlayer.Tests/ConfigurationAndValidationTests.cs index 3d6dcf6351..3688a9532c 100644 --- a/Source/ACE.SinglePlayer.Tests/ConfigurationAndValidationTests.cs +++ b/Source/ACE.SinglePlayer.Tests/ConfigurationAndValidationTests.cs @@ -59,13 +59,82 @@ public void ValidatorRequiresExactCurrentAceDatFiles() } } + [TestMethod] + public void ValidatorRejectsClientWhoseDatFilesAreOnlyInASeparateServerDirectory() + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + var clientDirectory = Path.Combine(root, "ClientWithoutDats"); + var datDirectory = Path.Combine(root, "ServerDats"); + Directory.CreateDirectory(clientDirectory); + Directory.CreateDirectory(datDirectory); + var settings = ValidSettings(root); + settings.ClientExePath = Path.Combine(clientDirectory, "acclient.exe"); + settings.DatFilesDirectory = datDirectory; + File.WriteAllText(settings.ClientExePath, string.Empty); + foreach (var dat in SetupValidator.RequiredClientDatFiles) + File.WriteAllText(Path.Combine(datDirectory, dat), string.Empty); + + var result = SetupValidator.Validate(settings); + + Assert.IsFalse(result.IsValid); + StringAssert.Contains(result.Message, "same folder as acclient.exe"); + StringAssert.Contains(result.Message, "client_highres.dat"); + } + finally + { + Directory.Delete(root, true); + } + } + + [TestMethod] + public void PathRepairerUsesDatsBesideClientAndCurrentPackagedServer() + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + var applicationDirectory = Path.Combine(root, "InstalledApp"); + var clientDirectory = Path.Combine(root, "CompleteClient"); + var oldDirectory = Path.Combine(root, "OldBuild"); + Directory.CreateDirectory(Path.Combine(applicationDirectory, "Server")); + Directory.CreateDirectory(Path.Combine(applicationDirectory, "Mods")); + Directory.CreateDirectory(clientDirectory); + Directory.CreateDirectory(Path.Combine(oldDirectory, "Mods")); + File.WriteAllText(Path.Combine(applicationDirectory, "Server", "ACE.Server.exe"), string.Empty); + File.WriteAllText(Path.Combine(oldDirectory, "ACE.Server.exe"), string.Empty); + var client = Path.Combine(clientDirectory, "acclient.exe"); + File.WriteAllText(client, string.Empty); + foreach (var dat in SetupValidator.RequiredClientDatFiles) + File.WriteAllText(Path.Combine(clientDirectory, dat), string.Empty); + + var settings = new LauncherSettings + { + ClientExePath = client, + DatFilesDirectory = Path.Combine(root, "MissingServerData"), + ServerExePath = Path.Combine(oldDirectory, "ACE.Server.exe"), + ModsDirectory = Path.Combine(oldDirectory, "Mods") + }; + + Assert.IsTrue(SettingsPathRepairer.Repair(settings, applicationDirectory)); + Assert.AreEqual(clientDirectory, settings.DatFilesDirectory); + Assert.AreEqual(Path.Combine(applicationDirectory, "Server", "ACE.Server.exe"), settings.ServerExePath); + Assert.AreEqual(Path.Combine(applicationDirectory, "Mods"), settings.ModsDirectory); + Assert.IsFalse(SettingsPathRepairer.Repair(settings, applicationDirectory)); + } + finally + { + Directory.Delete(root, true); + } + } + private static LauncherSettings ValidSettings(string root) { var client = Path.Combine(root, "acclient.exe"); var server = Path.Combine(root, "ACE.Server.exe"); File.WriteAllText(client, string.Empty); File.WriteAllText(server, string.Empty); - foreach (var dat in SetupValidator.RequiredDatFiles) + foreach (var dat in SetupValidator.RequiredClientDatFiles) File.WriteAllText(Path.Combine(root, dat), string.Empty); return new LauncherSettings { diff --git a/Source/ACE.SinglePlayer.Tests/ModTests.cs b/Source/ACE.SinglePlayer.Tests/ModTests.cs index c7b5cb17e9..14d86ed18f 100644 --- a/Source/ACE.SinglePlayer.Tests/ModTests.cs +++ b/Source/ACE.SinglePlayer.Tests/ModTests.cs @@ -1,4 +1,6 @@ using System.Text.Json.Nodes; +using System.IO.Compression; +using System.Security.Cryptography; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -9,6 +11,80 @@ namespace ACE.SinglePlayer.Tests; [TestClass] public sealed class ModTests { + [TestMethod] + public void AquafirCatalogHasUsefulDescriptionsAndSafetyPolicies() + { + Assert.AreEqual(22, AquafirSampleCatalog.Entries.Count); + Assert.AreEqual(22, AquafirSampleCatalog.Entries.Select(entry => entry.Id).Distinct(StringComparer.OrdinalIgnoreCase).Count()); + Assert.IsTrue(AquafirSampleCatalog.Entries.All(entry => !string.IsNullOrWhiteSpace(entry.Description))); + Assert.IsTrue(AquafirSampleCatalog.Entries.All(entry => !entry.Description.Contains("non-existent mod", StringComparison.OrdinalIgnoreCase))); + Assert.IsTrue(AquafirSampleCatalog.Entries.All(entry => !string.IsNullOrWhiteSpace(entry.SafetyNotice))); + + var criticalOverride = AquafirSampleCatalog.Entries.Single(entry => entry.Id == "aquafir.critical-override"); + Assert.AreEqual(ModCatalogAvailability.Ready, criticalOverride.Availability); + Assert.AreEqual(ModRemovalPolicy.Safe, criticalOverride.RemovalPolicy); + } + + [TestMethod] + public void CatalogBlocksMissingDependenciesBeforeInstall() + { + var dependency = new ModCatalogEntry( + "dependency", "Dependency", "Author", "Description", "Details", "", ModCatalogAvailability.Ready, + ModDataImpact.None, ModRemovalPolicy.Safe, "Safe", PackageRelativePath: "dependency.zip"); + var dependent = new ModCatalogEntry( + "dependent", "Dependent", "Author", "Description", "Details", "", ModCatalogAvailability.Ready, + ModDataImpact.None, ModRemovalPolicy.Safe, "Safe", DependencyIds: new[] { "dependency" }, PackageRelativePath: "dependent.zip"); + + var service = new ModCatalogService(new[] { dependency, dependent }, TestPaths.CreateTemporaryDirectory()); + var result = service.Merge(Array.Empty()).Single(item => item.Catalog.Id == "dependent"); + + Assert.AreEqual(CompatibilityStatus.MissingDependency, result.CompatibilityStatus); + Assert.IsTrue(result.CompatibilityMessage.Contains("Dependency", StringComparison.Ordinal)); + } + + [TestMethod] + public async Task ValidatedPackageInstallsAtomically() + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + var package = Path.Combine(root, "test.zip"); + CreatePackage(package); + var installer = new ModPackageInstaller(); + var installed = await installer.InstallAsync( + package, "test.mod", Path.Combine(root, "Mods"), Path.Combine(root, "Staging")); + + Assert.AreEqual(Path.Combine(root, "Mods", "TestMod"), installed); + Assert.IsTrue(File.Exists(Path.Combine(installed, "TestMod.dll"))); + Assert.IsTrue(File.Exists(Path.Combine(installed, "Meta.json"))); + Assert.IsFalse(Directory.EnumerateFileSystemEntries(Path.Combine(root, "Staging")).Any()); + } + finally + { + Directory.Delete(root, true); + } + } + + [TestMethod] + public async Task PackageTraversalIsRejected() + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + var package = Path.Combine(root, "unsafe.zip"); + CreatePackage(package, "mod/../escaped.txt"); + var installer = new ModPackageInstaller(); + + await Assert.ThrowsAsync(() => installer.InstallAsync( + package, "test.mod", Path.Combine(root, "Mods"), Path.Combine(root, "Staging"))); + Assert.IsFalse(File.Exists(Path.Combine(root, "escaped.txt"))); + } + finally + { + Directory.Delete(root, true); + } + } + [TestMethod] public void ServerMetadataParsesCurrentAceFields() { @@ -67,4 +143,27 @@ public void MalformedMetadataIsVisibleInsteadOfSilentlySkipped() Directory.Delete(directory, true); } } + + private static void CreatePackage(string path, string? additionalEntry = null) + { + using (var archive = ZipFile.Open(path, ZipArchiveMode.Create)) + { + WriteEntry(archive, "ace-mod.json", """ + {"formatVersion":1,"id":"test.mod","name":"Test Mod","version":"1.0.0","folderName":"TestMod","entryAssembly":"TestMod.dll"} + """); + WriteEntry(archive, "mod/Meta.json", """{"Name":"Test Mod","Enabled":true}"""); + WriteEntry(archive, "mod/TestMod.dll", "test assembly placeholder"); + if (additionalEntry is not null) + WriteEntry(archive, additionalEntry, "unsafe"); + } + + File.WriteAllText(path + ".sha256", Convert.ToHexString(SHA256.HashData(File.ReadAllBytes(path)))); + } + + private static void WriteEntry(ZipArchive archive, string name, string content) + { + var entry = archive.CreateEntry(name); + using var writer = new StreamWriter(entry.Open()); + writer.Write(content); + } } diff --git a/Source/ACE.SinglePlayer.slnx b/Source/ACE.SinglePlayer.slnx index 346ab1587b..582ef6ce44 100644 --- a/Source/ACE.SinglePlayer.slnx +++ b/Source/ACE.SinglePlayer.slnx @@ -3,6 +3,7 @@ + diff --git a/Source/ACE.SinglePlayer/ACE.SinglePlayer.csproj b/Source/ACE.SinglePlayer/ACE.SinglePlayer.csproj index 52900f96cf..9b38044e3e 100644 --- a/Source/ACE.SinglePlayer/ACE.SinglePlayer.csproj +++ b/Source/ACE.SinglePlayer/ACE.SinglePlayer.csproj @@ -15,4 +15,7 @@ + + + diff --git a/Source/ACE.SinglePlayer/Assets/dereth-launcher-background.png b/Source/ACE.SinglePlayer/Assets/dereth-launcher-background.png new file mode 100644 index 0000000000000000000000000000000000000000..43dbf57cc2d051ad0aeaf514716f40234258d2ac GIT binary patch literal 1923118 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 z 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

%YCnKi?_WRj63wW||7!j8MM2qL(vn;9_? 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ⅇ(X-UEM+e>c>v8M9u<-<7P~FgXefj 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%0D3zQPFwS#|jqSE?77q}$ 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

C>lXvBWeRMj)8W-<|~sR3&E4 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�v_eCTj-O|#jeA<}CN~-L|s}@Mw2jcpS zY!Crge4H=Y0Z4D_FV|dWD%BmN=pX-rq@()%-ys{de*9X<_By(F;lC=~&bS_S_L%}g zAk}`G;&n3N(gCgaOkc`~6pD!au$r;pf%a);UPEevQsF_XZ67TWau;`pFg?(@8d#`Q z53!9e2o)WLBXrMJQyb~d2AivuDy)WuWz}B5)b98FHuRk3S?4iTB>PZaGSUvtUDx>c zK2+<}Fv+TbgVY`XGKOjY4x+{|g45>#RN?tN>Nd8aLq&&mbkl9%%lmdZzJ8op=i`Gv zf4;rnhml2zz~PfBvdLL^emg{&!1Ow26txIMh9^rra^3+?|*;1-SjxmuU}`sM^tNi2o+gY`M!5&+B-- zj`<4rDsKC>?W4RR&*OMj;&!`%2%>&$`(VCpkza=*W;?UAX< zWOT`0B*eC1;xjr0!-ln}%XR~Eo{om|Og%|Zw=Lp4PN&R%P^&o4nF%q2sFsHH z({zib>ryl#BFv1&d6vgK=6S1I6~@?Zw|G8ZNfw}EP%OM4($3!&u+hM)UO7BaFF%+O z9QywLxuRGC(oc-r9zH$YjN3Mv4!XbXRWKPIPEeI&?61d}U?3&=dSz7A#30k*Gd`a2 z`Sb1k<@xEe{`~nCN4RXkk}>2q{_)Ep87lEsju{Hx_sxX$Hbi*7a@)KvR(99 zL`BB)+i#C=Ux&3^uc54*9$ii6)4_n@_!bmY`q=I5{XX5R`Z2C5sKONg`q#gy{jv?y zp#r?U@AHhPnCEdkALQ7^`1uc?-#^`-&tuN%9x9dT!%Rf~^{;<>fBWgD&tGo0o4?&Z zzJ8Z(6(q-IqN4#{HeCa9Xcefeu0mBqH%DZ>eR&(Y?c4b}pYwHGtWakXP)+OFMw-bU zw&_rxPLZmN9_KUsM+7CHCQ%jLi7hEGjU;g%XH~XTy9;THNI&j`@;hw4EZ z18RywE;D_b-#gcF$yGWT1Oy~A%(kqA=yqFvbyBpC9{>gAIYZCmn5T=1LiXDL>O7lH zSTM?D$}T-TjE&)~&1ObMpgX<+&WMP7-|ug?EpkqebFPf>YibcN^+GON`mmPgg7%Qz z>6Jach)hq3QiXu36qQ^+2voEa3S^PoD+s>F`}Il!NQ%l}SBH9Knb1v`8R_4@ezma? z&6Z0m@-=m)U3wZGHZoS zuANO(0E&PutZlinER(U2O?hcU9VVkJyVXGjo|SXHvT>hsG2 z3K)pg*;F&n46VRb0ZBCZH!?Co)Y$H`hs*0Mnm-s?Usx^VE%1p*mihHZ3rJ9p8 zS(^E^F?M`W+ZlzdhLhG_v+ufZ*2xm#5uK+fh)e}wWS8yLGFbG&+D?L%^})L2)Fi62 zD2d8ieJB~;?Xa~bZ>*|G!2$^QgX8=idAWuZUT{$(p_zs5tt=oa5F`;*$dv+<5YZnN z^L{fl`ThG2qoS8*t+)NPmS2A0Y* zuYgVxON_QsDKfIWJ)~FMOxshrG%|&iCeu|3%fx}Gs*I=<$WouT6`ciCMjSb@~8_Ni+NUg=fq z*H(bhJjgpYDkyTF}7AZt6wrgqIPiC$*-TuXVSd)Zeot`ewLHKhl}o z{atD)+4qu5&B%F9QI+N!vZEHb>>~}8s$`>$^#hPnu+fq}6l$eIbRlc;N4>`qYFxUh zqAfa#3v!Bz#h(J~+NJh*fz`O}iX%m9Z!e%cm#F7Lz>wI+u0wDfsGu;ZnQbLlZk>L7 z8!C$kirN*MUsB}C?(BR@nnaX|Zri2?WHpEY(0zU!uSf(~#jc=UuR&qwmS?4?Y@?F` z(X203FeD<`0!HLI)KEl4geu8WqEth(vLITO^GFVxnL^woKX3TFm+vaH@2~W%$2rf5 zxBG5GN`z`N!#zp5SDooIMMcaCoU<8OK>)yOX5(eGLR*;u_o8T51?$qBX#w+0Q4^Wl zw*BGf+ozkJAKx~^$2|Y}FCT!e7}1FAwCv1ks#&0FW9(z!e4aTw+*^z+aA`8>WqtVCaqBjoGH>+sgR3ah&?s>x9X zDrP)i$9c9ct@m(Y&Et8VM`f7Vd7c?5iYgqhW35YO-LO*;-T|mRN{Z;9j_vLJC)@9@ za~{VtQEFY~A?}k)az#>w+O@Snsi^FIUWx4%k!p%6p7fcIkB_36ZMxreYz5lbsir!R zl%bU+tn+z<*Y@_u_n-do_USXpU;h5L$1ney`4x!gw`cbPt;g4$NFnDrQx+kwX4}4r zGtYS*C$Ugwgi`HzeMcRY4$L;2Erg9|q=uIgu1|-t@2W!-MR;nsyfP>y+wE<;Wh6w; zbDETGJm;MA`F^{y$2&QxiUxDz-Z$74MA{cdBUnUwBtL*S2ZAH{jwZK%zc%aHU+3RS6aPe1Dn z%*>c4Pz|D)ktrEfsxyeER!JTjqM$ubNg=`4Bt^6Ix2L0c+stg+cl-1%G3PlWPMkBI zFIU#vZlYquezSljosWQ3u6}@6d5z+@yzMogJec} z_h4tGmu_+%{_X3>AOG}|umqyJyk66@q%{$?5*15|BC1m7j9gN|%<5ExI3u%|m7MNg z?!(m2x!-P4Qf*ZwAsX(jqwWcBo=1E0*6EFk@B+Sn`}p+!w4rZ5-RILkeZC*B^ZU0C zKj+xTd1iQKK{G#p`f~cI%A6?z5t@k_&f_@$ep2*xJidSZ`tu+EIL5}}{dPb7b$rbI zcH6h{>o33j?XUlQyWzLL{>H)E`#$~U$3)fJ`x~h9nI^p^F`}B>7F87;X7e};HPeUf zV{DraAT2D^Goq?v2s5KZ2~-BGR~FR-(ql=5qcUR*DOAl;V`gS#SN=%LfuiMUf~xT7 z-X^obOKTd_TU2QSRV#zOBH52(E&*hR`I8i(&+IJnh}G=YPp3zC<}k~17R7`SEXvq+ zs2;CbRY+a^l%}`a`&L1e#}wmO*(oBN?o|>Zgjj2y&vTAp(&Qz@r~6#S9~8t$M`S%; zvobpbK)?)Sr4H$JmeA_9WG*d47jULWM)y?-n$#DzWTRN!!n+NtC?Z89Gb*D35S1%Q zxS^G9C`jS?YX@i@d`4s$ksTD)5f}>(SZ4C}9*Z;+ z*BbuhwRktn)M4t2OKhZx=uCi;LS{=%DwC1{riV5S8&ziQycU%esY_8*KQEMikh>%j z)1$D8?izX{kr6(9Y+FwQ0_lneVK-lwbU7ek!w?(crXe(^*L$kCE zp##$QN+VGHs0bvNQljk;N|rP<*xYxqD7hkC8$7CtHpjE7@w@zSWvk^~KR}hLECIr2 zR)8y6r12djSLV?uIwNrD#N2m+QnM02f265&aAnrfw?pk%ZY^+?9>8&)(qLP zFuY1+dMj@CNZ(hj1o_O_YQ&oi=a!_2Ize}JgWF^tlJn2kgNkLQeRISgY4)*4@9yOL}A9t0yxB^iY* z69#2YZ>8Hg`$N$^B5Ig~r>fA@eIj9-7BV8#xNo9TfB)@O5U;k*(LEi^n(kg86;XIS z6W3&sph4nH7#k3so>f@Y^8iIULUJ2=PDaOD0U2qw?qZ6*&O?WqssP9HJRg2Ozx~hu z{hvSC+h6|m`FuI>qp`WN(x(e$CH6D|Op4Y#(qB`psi^?ra~2Wv+&21|$@;^W{iiS6 zpMSdj;Z5&`GkG5TkAMFBhoA0q`qy7xIwX#>eBL)p9j`fGuX&t)dWEC7vXr_y+iYtx zBfV6*$ONkN!*j;Ak8M~Dt;))Xm{pP)ElV@iZCGZ_8Nvp~2~m%XGfW|suQ@mFfDXM? zV0vbhnxy+N4+U)B7Y7N7v9ejBB*E7qvn^plFV}GlX${C5M z6XnVxlI6$qH%QL&gD6#!@OiHD1Gq|ZlH@RrD9>1qHnL-lRXV`{I@Ena#eI6ttdc^; zIp@nGPM*V#a6is-9y8~(-KOI>eBT-FQK`^YE{M>Egr}@5zC>15=r&fiWn27&9^T%y zmdX;%;`hIoq2sn~oxV4ZnFXP^r-){;B0PN~0Go5_7*%T9X11wqBm*do%5;zL>EUZu zuZ8TB2Eumj;dI<@yV&i1Pls7mS;X^r9kmtJ!t*#&&Bsuw-XYqu5HrHhut6bSPp{;s zPoHexJ|6S?Gi=z$Z_~lIFQ31C{gyF@GM{IG=d5|Siha6kQvUJl>*acUe^Pjy;h8Aj z?^-i9)aQ32c|;k2IOj)wJ6?}{GgVe#8y$($Nzs{=rUJ?7t|I%^!w$Xd`HE%96Uhiw zRjrEZmFGB4pDD`BGLcw?0*vhD5Cs)VRjZaKp3X&;)HUfKD~{I`6&oYxY=5%~IdmRP z(L;x&&)-kio{5&>fQzmp&eI9mHrqB4D3V`3e|{a$U;gn+3rIx}(?jr2|M9>5?b|OO z-@flRD=diziD4ZRnCJ0$eEa@9;peI<*v2+=K3}Qxb-a39plCY5tK}t1lw%(v z%fJ#5V(RXF3aT^!Ptm2E?2Uy&qo~4R6|VPtRb?W|dyEGX&Sud`^sXhH#oSWf#Wb$; zN@TT*j975?Ien#9ToT~|1l=N`0JH6t)JW}VGqPg3ngLqSsIoEcZ};<{?e_W0yB{YA za%@{wS_@}I7H=OORH%t6XP`%6l?4K;h)A98B4oO#QhOinb_FRgVnqdrmSB~~05t2y zwYBbol?kOJYjJdBR1DiX49v)$T2`tAs+v(r^l(vxqAQmROM*C6MGw7tj}S>h!o5ed`+ zo}4|n^ti7bsk+Po$aM=f6bAtlX{yOy%-by1l|4}F?IPV*u#zCWqcxWgv*kz0re1r% z3ihP6cIYvbXf(et1tj-L9uyqx@5(Ln_-vB#LAptB= zOk`-K=*m2zO07G$gI9`VM8iYcbe~dV`JSZtder3zkd zeh(5Q)-zY_Tj^7V>$E8pvKQjUIxah4Z+apks*T+A)|V?laWRy+ZtT9P8&l|ol1qA0 z^+SLFFv~9ia4i-5N}LNpT4%`aQ8Swf+s}QB^C0;8GVX z@aUr5aUBgyt=I3qB^s{+eh54Ib`t)mJ6^jwm#Bv;qXk!v!CI%6=DxoJG=^0_IPHQi zBgO)j8nkG{xt1(T(NIDENf&?KdZ|WJ@dHj+`#DGv==x)qg%HaQj#A=kvqV9}aDi2I z%_K{y(1B--3uU%rw7Gw*QCfKge{|1ZXZfUDXw>pDT)3l(uJ3;ZBV=7``MO(w2PyEQ zsG~D6mVo0@oAiIo$TnAW{+Vo~rByuQEYoW35$1vafP)ny)Re6W)_vZ(#ohN6qWv+W`MyU2C% zt5R3xM89Eb-HF*JG6O63WgAMs9W9GcA%$zBSFEZjxuPP4U`;;>yua#I z7L3r0u_%qw^HkqO)?bSD&tL5=f_6Yd9<$rEhH#hy6*I<=`^`3^$NW0$oXE_G>M$Us z+9rWIJQI)<6Yjgt$T>sR_M4$9W|#_;5$TbAbD4^$sUR){O%#_q0~C0aO6|AX=P#c! z=f}qrg(3C*>tn`@ivRR4U$>!E(iB%l2++pcern}iobx4G_AQF`-wX3L! zG9mTT`)wOK=lOWxKmLcG$KZeY+vAttKK}V%;@4k|iO0)l;rrtd<>@(74$q`ywdu-4 zrBgU4N*XWWp50Soc!ZxbvYTh*IDNBjbfRdr?a|DTNy-@33d@G-RfVe83%D|C&Uwsl zbDt(-zu(nv9{GB@*#HoJRyx^JqT0}58tzqjJYTc9vtWd5`<_5fU%Ypcz&wru&gV^C$g$Mw}@rEwe&FT6`((U@DdhATnnN#ndR`Gc)F#p{h10IVn;;=ks-} z-U`}&)4}5mpj4$;-@bn9_7EY)Fci$VnN^jD*wBj3yXge7T2rw=L|Rm(Dv*^b?H(k@ zz7MmQ-cfqG+HMfdTAA)|@2Yy9uf!u`W~7-yXcQPprsICUtH?3Ws_D~@=e)fqx&Xdv z`h30~4ZMtP_%e;dY~0@8#!_iqnUjubgDZg1hQ*Z1$ka2%(pfch*sA4$x|)At!W z^}eeN8BG`Tt3aeY4N?$8rb_0F$HV7sFq268>1Mz@ecSDbtP?UwAUsnT8JQSr3LYy! zsK?9Ra(SLpOd{&z>oe2u_dPs3QdG+`FGXM$`el>}8yhe~+H_e2{S1ntD%0oTx3|3t z(?eBWkLUJw7pzHLwDmewt;O;rfkZ}$Nfk0mH_ci4Hn#hIzUHt0=U;7Un6Rm7U3C{6f>XENbUVTGQxdsZ`*l*wD3Hh z-+%gYEBEvH_}hQ|+duvH|FrM=_m4?&Gxg&YUk$ZbBqgY=|hT$eQPz=a~`ys;4}NJZEHjv{;?u*EEchL%aAiFRU(#&Zr&q0#9?N(9eafG`F z&R3SZZ7R_8IT2=7z?!8p&%L;uoqQ~eH67VrM+#Jlq(rSCS9)joWX(Fvm+T`6d^L@tzM zE#Uw<31VU9t+QcO^uly8%!QTyP)o+%m+A*&j#>fzYZ;bW5urbjhSqkh*_xjA`n+c3NOhj00n4`S#a@2i4rPgMG_>|Efxtb@k?IP{;qzkx`YWo*6JT%)z!l( zS5!b1&>H+@guP4<{n+*%%gZBky$zOMs+KgQ9ViP>xmNH7`ml74-6YvyZf}=M+i=-A zaNQPd_HP!WmLRIVUX=cGKxU=1j6VCGTq^#mA4#eg+ENR>X&F&n$q*)r&V^fAjkO!E zcN&-K0zcFiy;diBz{LfO@X~HX-5{cjiIachSIKERqZ5|RYKExH(jGE5^6e6FB-t?(9fmB#$@%82L{hZM)Iq+zCCo@2miV9CPvg&v|_WP~7-^?^J>qu2WxT^fS zKYjUfqd&gyf`9rCKmGIHzWty7^|${7{POk5;^Rz+e0zk4efjB~Ib%kcCYh3AV%kzR zibyAARb?d2)XXvvAz3+wf!j7@e>Wlhe7Zl&1FGRCC<0wTo2hAkX_+ilEmlNQHILaI zrz${2RDI_2<2xzmJV>=|vtj#wyWRH(>-(?&AP?QP{p~)dpJ!BfRq7a00#e4v(6R4i zd4z2kHliq^w@<8+^t9X70CLPTx(OaOeF8N^^>*908-}%-=JEX-wD=)oyU9={+_NEO zNXDE5$`5LtuaByu(nXLN$C0SWnBEy7Of`+U6pN%(M3o2^J=Ot>DB1U$?sgs#S=*+n z>c{!~_#SaCF&QD0+owJ!#oMg+ zOw4{mBt^!)Z~M(m=lSyKKvGyyKvt$#hCkiYwh<8-9T?sI)f%@^CG$9`W9NQ*zsWIx zv#Kb59w!U8g+;qa3PjYZNYzYaMTy+r?%V!;%%E+8s$>P9Uti-U$B8(nz;tYW9>;U8 zvnK2C?i?LHv$8l=;7@njnyD#2zP)6Wn6YGxO--NQ&&qAPkMMjw&m0}~isRuP4wkY2 zMsWMGsa8D0HaT7~&$OYh89wX24IwPo)P)W^^hh&2pC|5WEB%5Qi{>oRGpi@ZffDd` zAG+b=h@yjp&dP$ z92B2t5(3H?B8HVHMUUt#oT{8YF`*{fD?p=X9c>~co6Jd4WYAPaF@4}XNzOT20@x~L zp~}$AfUpADh*DJP%J1s2+C6NHK7diH-mK#pMC6QUtdvx;4N*xIl~EPbL#bnvPVy5G z+w^suuk&OjYEGZRq-a#Vj%H~52V6`o~`qtrM`DLprrnoJKf^{n%p+=sOh9Sl#8 zIm1zXYKp0?UW_VJ!O}<2Y>D}ab~I>evv7-p7BV~|az^wyuBM>0$ud}7oBMk#11qCN zi79$bR{~*WbX`d+geJR9!-IqhhmCEsjDpnpDs(kr#rc{PA!NW_$3e&@bVb{YwCOsc zRD1?WRfY6UQyn?Egl|$*VM4Vcf>Np?4U4qyBU;>&(#`Me4ZqpTpis?35gIEpR$Hh| zMN?Zr(GC>sJ6v>So<}a8vykk<8+JAYP>EFzPf)3hjEa>b#+4tKqMFgFiWc?OBG-DB zBv?i1MD*UD#7rCVj$X~MDkYjAtyPQ%WYG*#ZEN9T#EVsGCSAs!kYTDEK!#V9l!~gV zWrTu1noL`9uWFq;uzaFbDypJ0%G4@TR^nS-Fi43?5h74_L{!D9l36D89@#sXgMzH! zdPgcNGt0w~BBToXB`>x}Q*?B5R-1AS5nTA-k~#OI4s-+SGN}UFHfrUruF&w;>An50 z06|)*}cv*^rZoELN@w>9-a)k8NK?92m?*RpuMuDg*kB}AK zSy*O=7IQ6Cg+Q9e)9d!k3*$pH%+ce?a&lBvN3x@;m;zmQUVl8ou8yKqX#tmwjwwJ@ zNisSlGqVAnhy@m{%gBzlkrGDY+vD-^cnM|S$J>6xiW6#>RnHmKRjAX?mw!|dJ}d>; zxAD`@Z!|sr<(KD~vRtBhp=b+~YwHkOd)y(r>%&~KoXeI|*N1EbN0kDJT7S~?XhA5X zVHwOhRka-xB1ENo+bV16yF2$4)$XQNTNmZf6w8%zWcs!`!1%UHzsg;kVQ?P z+Y3QqClt;IWU0uushFezkaGekB&%}}n(S5F?>1EC^w*iE18POi8GSGH<9R$oHFa21 z`RD0f8z~#BkXbrRDkF0qvpN^ZOZ%e zACL3RHsw!E`^n&dB zO}E<^W1jmwM$D-M?>A)4dGxCz!rk*y^YJ{r)|+7!s<`-z_Lt*x{IiJR#`nk9UvZwu36>upEH4i*vqF%WLFtIPR0R_5M^>Op z*rk4=9Ujx?F(@LAEJ!4GyXkG{*s0sL?S3Y$Xw$Yg+3zTSe*g9O_FEh-Rsc+gkluzJ zyJj-8Y;5P5KD||cqK3=8scL2t=cRg& zK0YclkK;5`s`v@p+O1wBRV=f64b~#oYFI3-bBd}B^_dVnJ|2Jj%illU_n&@x`}qDL z#OwPDqAKR|JIN}>bTj+czy9lA{^c+K@jw2D*W=^y@lZpY6YW2-)%zVYw|9&4e0+WU z{KxHl95H>K$2Xs{@%(!3pSH)hZxQA5gw%QXcDKjlqKSncEO3(d-k687oR9*5O%<1;QH88SZR)5@nm^KgA7hLj&N7l%h1=ST)?xs2l`qa>>FFJI9Vtr)M2stgffrK)x#NeK!o zDlyiGmqhmhA+&1|RT!xwzY1q4DscL$(|Du^^RcV=0MTk&X zah@DQe+XX+`%o9mf`@}inhjOOdHU=0o?@+)-~goCk&wMDnDu{x65fkqtq4!Bwd*yj z3LVqkC3i$SDVP!LNXULKh5HhufE+fgS_%PPP6`0*FHm^Z;q=@GEhtzs@cVSet%P$S77KxL!-q=5DUemt{1lYG{B9H~AroxYp`R zXTA(WO<(_8X#-Y2!Q!>idY^??qlvHeB+B(U`nz2Qzyc#dS;@Y2=`Z?xgmjxiUj$hq zhOVo)81(PKO_8MAeTE_j~js&^=A-gM;*J_Xa^kEmKKdCX$u2vuq}9 zzH7z4ED;bE(0PG5y>%}e$nSBKohmYnMO3 z=xUj2{a(kRc9lS10R-_QiKUB3Lq$ZTGeS-2bLIPZWC>O1r+@qYU5pfiAiR|_O~W+8 zm4K?OX4P8j7E~4eFjTc%qmeif9oGGlm7Xcp5r6K!axz55u<02Ur_W5_Hnv^MGreDj z-R=Zc`V46%$OFJIsc=$mL(_BIOu*wc6O0HE9VXkZ=^ltk^x!m1BB7?0)x$M)orS8n zzwg^Fp7HgU!!yv`UImcz@Uf3=8-OuOH#?62YQMwX+jy9P+kH@EdPVvedVDAc|Bf0hDUlv4pVkP6#Mpon3^sCoK$TkU`snuQI*qsom(&ZhzRe? zN@V(c9j~a`ZyPesnftxs3_s7Dr|Q`5_hZKEIZ4rOsmnBln#|W(L-zO2qT~5EZETh0 zj`4PzPp``Rr_b|rRGp`*ZJ+*lJHGzoO6e9 zi-4YLmEB6BqN7t(Ne+lcgp%7BRGi0|QDeImFlS|PZ1;lQ@1Jk?FO+fra(^8mqWS&% zvGCiYve$MB^_APy8<`@zl+3;>8iXB8qmZ%Ih*+7wWfY@&> zX2~Rv*U=g{q1-;-_H7rnnrSATB6mEW;qKGtoMM8giV_ycsLBjgf>f?(>YmU&>n23a8Ri~hS{Z&$X$56+ z49mO;deBTJR+*L};CvCNdRCg^J9Ud194 zGuduu8CHZ`&Jdd z{^M5)#-RFL9caL{nCWA-X6WYGCV0z5mAll zHY_tLL6pa|7(E$h=INmsplqA<3}hl@k{RtWcCYmnfmJnz3biMph|H4Xd^Kk;8vQPB z1xhcLYMlsGnK`S5>b@yy9#g5?Zk^&LY9SpTmn0)&n1z>^DwnhJqQ(#7^nq+lg2vQm{23j7;W|j0#u&xS&HpJI^)ZBvtl(jG^;9-9wCH zY+OXjXeN`=wYBwl9nLCuX|$OttZiV<2v2EwZlanrjyl7oYo^KUwy1=S2FtrBgpd^i zAtF&h6f%lzMR!Fj;#xCV?b__Yg~bU00k(HK?#!0Ai`P)u<+!mC=7!At?)7y|~{@kw#?t!?$KzO}ekHIwA>3 zQDsF&nd#Vspl4*UO^#WLs*D&mZrc!%b4CHjOrpl1itU?3;q=aKpPi)=bGCJ`iD>8M9W{=f&T5AShPQPYZl|KSz`-OT*He zWug-srCq6L9BC;6^0H(sD2lj39FP^)LS4*O?6mT-C)c0b4m`1wTvl9Des(z`mH9MsApUj1+R3B6q)y~KwtD{v{nPv42%Kos>%SQP`%uC9!DgDjY|e~Xhe{*nNnGjS%`p{G%ULHO(`NO=Xw0g zKR;E(OuGsyGZlsGG%k3}%xc$P#|>_~_4V?QIrBUxGEGI4(Pu4bs@3vqEQG7FUPqWo z-`d@nIz2|HOc9Z{`yNrx*BKext^hGpSy@o!*mS6+PeJ){l46?;mG`%|Onf|!jM{Hz zLqCrBI%3;&-z^Dbz27!5IZw~3^O%(GgK9V;s{oaSE~=#mP~kX_*Vr~sH<8Sm8RwD5 z>EV@zB1H5!JQ6fvNuk7Ko<3CeU6qXR^E|8IRqfb4&r`5cqfJE1DaW>FQy`~7{tf8K68 zXxnxZy#wjT8R=te#qv2l+&1Y{auF%_=`;Mb3|4WTuSbVWsWr$1pS^!&R*H@>HXUZ$ z8`;zz0fe8T6mq(s=jndL>7uO2>9bF$5_FxET6Ke474|U*&v?w&xA{8MX66K7Y9wmb z$5*F{+CUA8jKM(+8@HcFqGE=sdQ2Ovw5k-+hK_9)H9x+KhRVS_h7srAzWvMJb?jLX zN!8M!G2@snLNyyVlAN^MaM3ia&;I_ii+OH{^kD1KkeiG`2Ki2 z=5hGg?(aYUq4N0p`1bhiS9B9OYnXxxux3_fRoXD0r?il_%9cQEr4E@I0o!#96G#!F zoHGeV)V5iP091Xszx9in`p`x1&+mk#IbG{x()Z3?f%zS-( z{q66+yuH08@ad=b9P&8R=Mmd}|ME|_FF#TL&YVJQH$-8WMHaXn&xeTKZo3V2$;vpM z2a2{+5XJC0=i#E3Af~X2Edoa7EHl#DIFp&P$JX-*3KJC7`+ZPKO;u&S!YV5fB&x$c zS@WoUXeE3)c8ko+dE3VMoV!sJk(g(^-8U7!j?-?#AO8B7qGiV0&ECJfegF2D$BVhr z{$=ny9Ds?P$8jDWk*3-+P#?feUPb5sMdP^T)7?EQP1H}%cpa?&s6gH@uJF4fBeI3yMy8#JSj3~Zd*QIAJ6~%di!#d zf(^U9@4x-ys|~x|@8^+1Zo51m$IpNK>Hhisd`;bKyWR8KH&&fTR3b9Je}AZww70i? z9)7%DeY}6n+{PO)S88Ev^OY?#=>Ul42FEZF%Z7k@FjQ?)$j0W=+ngyTHb$n;Sjk3X zn4eCQ@Ohkm+xIcH$js=rh{(hkTe#QEYWHe)35t+1#^y7+-#TWcyBZ3a9-SRfRlR`q zWV`^ZMRcI9y}B-4>5@k-%%aP!Aywz=sT5Gtvm?98F}Ce^J}c&oDMd(~v&^JP&?*+v zRB!iv+jkU>Gek3sRSRTUi%czIDQA~5);Vj4K#;}o6k$X~ zM%#Tmoi3t8NiZ^vobF7OOAX$_>gRE8HYlhF5|LplDlC=v+g4S`$;x@0RRRTo^h_c$ zl}N!kV<@Xb`m2^87$ra+ls-W*)5&B#bMGzud1v3Tvol{GB+eQfK41Iu%>1{^OEE^*; zi!fObPfr}_Nv({S-DO+(1Ei$tQX1fQ8nEptUHi1QzYB)wr>_!1lqXtiT{*UuhM*#* z+PN@UL2A$NDl6ACA{DinL?$3gULK{XDy(7@O_0m+f6l0tXbbnKT5YwF8J?MWzm0v@ z0*<3az<3=oY$X<><1rK6&)b1x*^wDV&s;L}?z=^}zgSwR&chVw(j}#%@2!GJDa1C7 zs(DUNCpYCrl!$i4s$8)zE73rts%F&sXPKhfj`2nHF4aRW=S44awOH=8wJ(Y@7kS<* zqXJnT-kBzm1tfcXY|&7{J%Cl{(#M6{7}GEUxF50Q+R1BmXW08kWESppzAdv;^_HZuHBw2CzqjyI|2aQoHXTgUZ&?&7 zz1p9#`V|^8Eef^u7^15EEcE>#RkvODO{d44vjV8{N}MRIU^*m!9vEPRX zl(Lx}GyQb6v2BJ-R=wRvdLnb*M`a{bP5tHewk;zha2!#T5j8yugpKfwnFTOXvjNbi z^mLvx5h!{@TNh)-%g-^aA=u1P(LT#gLJ0!y0cB-*q@$Wk&j}SJ(|yj=^z_NO*|w?jJX26es<0}~kIA99CBt;z8XW8n85yRg zeaGJ4Zc#O7pfbIxeQLyh+qZ3hJzlTl>F&4v?e=yD>1UEPHp_$`6NTe-iq@v1^7M0p z?ZdPL$FTkF4Oo+$ieGH?6H@;GNiq-acsK-E;Y^LdQAA@k$-?R)Cm`zMMXOti#Z~Llg`1b4H{rnAn^jJuh%()FwyXpSv_5FDsFBb1V|95YnK7ah<{|8hB zw(aieex8LA8*Mp9wNO)!Bg8n&O6X_fs;abk^7eT@KVGLipTGS!{fMle|Mc%S+s8IY zmZ$BT4690$d3-;+A))bg_inyI6=u{v1cm9fLd<}-Pj^%C=^YX`XS;fliLskdMfCmi z@VUR94_40eOhlCnMLG_wrkG@iid1C7@s;uZ>0Q;1!^t{d2MN9A3>zcdqgfxKh<2d& za_494w}Fc0HblhC<}8X*Sy7p_?IRL1WbC(j9ua4Mgva;rV^ZsU#qsC=}lA78&s_qX>w9*3VvY9#^5tX?fMBf@(|I$vj*3JaC0Fsn@8%+4du zBb6{!lEWk_=W)KhSw&7yT@lW8%uv(vNZ|D`Z}$yC`>`cbSg}^!h}edeu6;EFujjdK zaz+k{2+U-^iHYcbJG-J#q)^9eZufn=sXpa+d1T)1CPFGZ?JricRjEo-or?-u5ph+B zIdgFlK;#<8fKmlebNVpZHm$5S6p=qXq8$$gM5YZ>6@s>p_xJbtI*-T0?)Lua z{(7Ci{o}XKU+!a=pJlq@Nj&p>owt1pKOc`dHmmZnNmiZbaeupe^Z*bwvTPw_I-cgcHmo-=ib*><~EpIKWQx|DNJG3S`RhF;DNuFRQq1+uLndiwI9on!XMf6Cu(Qb?Iyq1c&mR5xHo2 zHBuy^6AH?tbVwzuRu>}BlPf4iX%L~JL84%H&GZ*8o$0O8(+`E`Ic*Fo&$A0>phFX& zSR_!GXOK|U*GxZ86{tW&w3WP7nc43^Ld{q}%tV!lMC7V?7Iusxr8XPeW?ngGkUZx} zQn!te>0WW}LkA_T!6xq`6IJd-B_#z4RfuFqKVDIcY}3ceccfHN7ft{vCQLR>DQA1^!gEs!Bjqw4tTe@&+;zaSh!~`H8edTCeTQRIk7~5dwx4S=kbBkeMD8 zKh}HO^h#IhijWjhVL{}+Zy8l6Y28g^_sXsW79<(xoTsBDdQ3u8)J(NRJiU`9MOY$P zD?{iqXR&v9>J`1hrBq*(AbE}Ey`HTi2CSr7kqayAr??M7E|>+q2a5HRT}J8HsF>N& z`g6weoO?^NH6j{o=y=WoR~lK>rQyjLzCuY3PK23w>{A{koR*)AUN$nQ+mT z(WSu3b{H&RGFWlCkZjprYZ)RVr|K}1>Q=v+=_Qnc3awu(=p@NjnGhgafm0a~jw&@H zSU>PYG_fp`>e~I)pE1;&9c?;>&oUu zuH#yeI(tI$0<#w+0bnJ@E{A&RBG}hu?xSI)W)hbrf#`71OXY?ibpCq%F5IC>_NqYi ztiCckdpTVI2v-bDvGo>fd96ZGRYkOxz^}6NCs!hR^HgBh|1=tSO$Zf@@huHWJN|^q zew9ndfptJ^7E7u#W!I#$a%-|6RG{UsYe>DmySiRKcIBWf{Xh#Pswv#=x?9o@H0Ijk zD1ggwK`sX+h0?m1CQ{f>1-f!L``#w{-*9Q))`KaR?f^;_v@$E($F%n9<(pHImD#B; zOYqySwd!Mc$wwHiz{I*?d?u8r9&U3T@tFWrH8Zly?J_g6`;q#0_pj>IlJIVn(8%m& zB~?k(^LY-l*KvM(e1t*JWcL80s#B9vgBS|9i_RFTV(x; zhO;`X0Y74M01uCdF@~B}RYtbMu66Fx45Wxh4w1L_PkGxP-@kT#TsLU)Qj8?Bn@KCN zZ48eNTZn9dW{FTu&5YGhUWjnpHxz!qvJ1tje)F|1Lrqn!C0Ntlz2ESN#YLJU!ga!=P#fC^k34 zN2bV3AQr+M2~c#is(L)nhEzpFTRMmW(6P$3(x6I5->X8dP{8#rCOr~Ms3W2&B1JyV z=?+jLS`W`9U}Qa>hso-a&L{+qW3FSNU&5IlWkZLtkmq@fUCyJ=Ssi1Wr~BdQC+X$$ ze0e74p{(475?iNw1H-+#tVu*}x2-aVNh?0o%yf91kB>+AgvjgTLw++GTW4ng*vB@; zfb&E#bNY+YP}er@dt-UL&W_Gj%*ag*9zWhY5kb1CnN;{e>A-F>xL1Nnn=4s5-Fq3(nbXSF+?(UCN;>YXtQEJ=mw!MF*<$OH+bTa!;=mV%R+6A8$s=1@a=tV>%q6!`nk&FnC5uhpr z?j_(bBe{v$wj+<%$79Z8-?uTew<=XFz`GVjpcIsl1`5^g?|0ku`Rya}jBtSr5M;>F zy{se}x9oK=J3lqbRJ)?9GPAhdZex3k$_Vd1@cvj?NMWq^iR5w2<1Cg)zqI1{{5FpX zmPkd+$JgJ+X0PWfBdF?CqD<6$`DVLqMZ}yZ6B#ZlqEHpAX%_o7Dr>vRFfq!DGm$<+ z4HVNskCGu(onY06ZZC;=9PxS_g#t7fQfWOCc*lUNguBl?$@_f=@_C%CjPpu(woJ2I zW1i0h=RD)`f9aecH5|`x2hk;PZTUl~s+zrC^R9Nj=1_AHmhAW2<9U4h z{>@CoGg&^-Z-*+pp2rw6O5Z+hYV!E@vQghZUgvp4ofSNu@%BZxG3GHrKE56ApFTfc zAHV(mS2GogpRw=b^G~18$NBgc_xo-5{21f&=Rf>k{%`+RV*YRc+yC+W{^}7i{8EIr zx;nuMfp`UJ0zuJw>Xoc?kF=rbnH6eQ6{aJZEiI|YSv5d46P66g$hgwWd`2%jKBE|O z&Z^qFJL6Kkld|7$bNWynwnxP4@i^xzbMlg1qHVgD0z$fZQKZebyzq#gOFPV~l?6)$ z(dwf>mX{fqq!;1NS9#2EN2SZ?s)DX;TfW&sMod&aU$1Q(NuZ}v));WlwqjHy(RSp_SyDx*@MzAkrQ?+Wu22oR3cyeqxhg{X zt)3p?6Yku{80hRCAzH+&tYoAECN{>Bq<1Z7RYakns%y(?nuU_gbVr8D7%E^Z?jfe_ z{m67(Ez%M0FzeEb+1OR6${Cq4E1_gYcA0vMT-=XJZ{CiH%*vt+h3%@^{*ZORTvT%> z*j4^$g>11p8g%a;JzE5hWh|)G@W*x}X2JoDGLz~;yDP-ESws^?L@n!e7vssbt5&U~ zedNkAOjPf=o+yvb3)Jb!W_8b`z-Z08o@bx}hN3O^JdY&K~@HeM7AGbLMvQkgZgyL1sjsmRO;5v2|hTZJD0<*M5x!#(|MjYm~7 z)okHn&%$moq02q4?p<32OI>5f(@HN4-KtCI{C_d{gwd$n>RnyyYX1B$GaR=l@; zpFc3N)o4IUf0wP_Uw};OB(B`UZuM-zRLj$_Li?EcZ~P{$8v%N^UW)!7%x9DT3+7lf zdhgGD0h4tdUfG!eT{|i(eV~bXkW{liW59nCs8I_gNEB8p#6@`5^2pR$(6B-i*G3Iq z@KGbof?}-(HDcv@;*yPA7owQFvT1=!CemoaqB5>fjHNeO_~iokI?7&9t!eAO{DJ{l zc_EeSQ-FZ>veu>CSW<{3F3{ew71T>Kv5uhXlc5EB>^y@MAgj}jQB@O5Gm(K639zt} zOh6$79jNM!y{|@p$=UH02q3S>)x}1LiY-6g)f%%}kSh8~kLW)Kl?@X}X3XhXrBH4_ z)Z=+plo*E%pg1(E{EQ7OR(OWzqiwwi!ZJVnpM^BbF7qO z{!r0$01^6Z=>w@N!;54@A?o#f5Ov>&nVyHMYF1>R`rtPrr5}@Q70&Cm2-M@!Ogl=RO;+1ch)R3=?FB@)tck8 zQ!N>h=M0fnJAxvS22A~O+qe7wdmlCPJKp*>>Nc@+UwtM;7i4LZcc=LDgs^Es!_xmhJmY;2kyuh${M z+x^Y9y^<@{7}dXvKzfEp>QOUkU77=$q)!ob)%F4iE8=)Qp3BNc+i!cfZ>kvpfRQN; z!+A=Ts@>jh$0Li#!2b45Ed9#)JOzFn2hnduc|NCE+}`i!c}$-oGKQ#0O6h=wfv`<9 zJ<7wMteH_#Ob;6r(c|fJo;q~3s7LsDR^;|}XBItv`Op8K$KU?<`T7uMk@HC1HXE8T zBW9J5LzM2Ns-k#3Pm=1Tp&edQh<4Z}+#KJy3JH zpU3lwm_*rFZf-FNU(PZS$!HA~RMay?YMw3z6+54&ZX%R%+h}8YR$=U$j_o``l%_*# z_y!r4b5ewfcCDqy7@CohzTfr=ipiV-sj*3h+}=OEp5M+H4Lg!l!Fj&sOwtyD-eq}c zJ4ULkbIv0L9SM0yV!PoyR*OPa9mkPTC?;f6DW?b`%Tz=WK3^Y)XN_Ic3(wd1a(jIJ z)w9%i9!I4DRq0fv*=B}xP%CrTCPsgqk)dis<)_cL_xtvIzJQA3fX)Br&-YJn^4o9E zuSY#!j>J%qn4SfWZXEOSnIvn57cya%?x;vxbV$FD%9>M)tcbMDZiKrN5CI7@8%p=| z=X^eoqLyRZWZO;5=JWXU)0>I-jI87Swm0i2!Ul5C%kZQqh2kEtoO7J&oeytq4)Q#t6b(e ztMcRH03pRC&+qJzozK^^Ds1Ro_C|L|Q0n=3_D>QqU&r%pS2LtRjJL7<^!e>LUqZfp zzKaea$IUX3m2>8P-~aHZKS(hYpRZSfV5YBmA3)*tJR0n1i@uszQ?Hq#+=h{G4-v`eDxXvlXI6o-gj+<- z^L(nhpX3Vv>U6-K%T<+uC@?Y4xerz4nl}mIWx^%84nnn)4kQY#F|1-YjL4A4VwLFc zoVNR=946h1DiBhTo~Gi7fM=E{)@+CZ%d-Y?^h&l{v!vaJSj&D=$1$rUszgL2DGfRx zP0*t)q#Gxqw@{%+emo8}RnzhUQ%&bNr+a2JnRA9m2jnRz8j&li!>iclOpbjU+aUD( zcx6TxwRl`^cNHX5nB8b2RIW0No*P?LECgj_I1^-zAruakh-6j&#*QwlED_M4kRJY9 zT1G5&Z7U1ZngXvD?RJ?4rBtM{LrsgMsmx3fnsxmFBYd7NOWYf%)y^G4bXI-j1t9i* z2epwXkq$0fN~nkuR3XxjaLMYl7a>Y_?J=uwuUV0amcM3X)LL*MAXlj2T4SoX%BAv$ zcAuy~VnT&bx~E7>Jlf^XOH|*4YzqQX`pajpB0`a@3{Tq>sEBR^=uV%!lu~O!@|q%o zV(*vX-t2J+B5GY!U|4^L2|?H6715y4D%QIiE+=vs-~m#W5uB{5C=@7Fr_Z36im9zg zAs{MDlzrvH-Ail;G+PZ%36N^KOaV!juvn4lggREMMK7wkk`vJChRQ0{A%Y5EwXQa4 zCs&>$M1}2q=}i?&KDII^q{AuO$lpNEdMB=RGXaQl>3RBBak(V=72KVKt5odLv{cp1 zsU3VpRU|}vSqFbpOh@dQqM6ysNrgcdP`a2^@YNtEnchlm!pLmHZ zYAw~-mtZL=vQ{;HBTzt}QtLtpBg@l&`0~K3aki>Zv4XpQyb(}cm9n%atL~#v((QMb zAjG}5P*$y(zWpoR4Ek>jH~^|~D!u}%wVP~ z6SkqH&L3%M2`+Hvl1W?&m%is0TGzK~i!}-r9zBJEqH1aeREKt`5JsSm=SNMYK(%>O z?LQ|fs#CUwSDJ^Y=Du5z$hz%YL?(*LbGkoW1^4^SOkdCA^_;t|tlzb7iYM5xD--bb{7a(86a zxQ%Ta?z7SpejXmvlLdiC042(K9wI86EzN~!zvT+4klSt$nI7(ORt=Sww}?rF1fZL7 zX$(`9=_SH_v#dBzPt!cgjAl@?`}<8rKE6Mwt!A=rfUZiQP#F_l@)cRCA`~?}50|KI z8$uqhXZS2e1ypt0H@oeodLA=;Dp`adGl1ju{Xqes%Hup)R0F6w#x`yp%)N~x=2>J* znW|C?R6U>P$+Id=*=1PG!)2tIRQhwy<2Whs%xzdiO0oA8X=8FL03&Q4k_jB;K#6I5 z{g?l}DC4$?4is%uO3lZS)gdQ3wxOosPO?(WT7tUWKK*>ZectYm=f|(-@iLS7@i37% z9Rfj65%a`0Og51cKaSVe*Y{tUNt6xga*94fR@?9ju8!V`il_sq8aD%Qo~P}jCnwuC z>PTs2o`}eHQ!*<`ZQS4AJcjEOz;3sB&gb({Qdv|}6I)6)LI=iRgm1fLxeCY7stk8g zcAlsWTUe5G^A&9fdo+^r2qinc$B&~*WZNlQ>$v@#=*T3&w)Z3xC5uS&a8wndBddE; zrZnS!R6%5@q?x=PhpO6cRm|WRw;_sE!oqEvnLhm_DoPwS-aeVh$G2~XKfj;z)BEky zPxsev$LYZ(Sm!WZ(q=G{LOIXqk0PV{nrUhl5gnevM0W&9JYOftRY z)8T2`P!W$gPmfCXE;uniXXhJDPgZ57Z9NgD$eMsxhEo;=@9&@X+x>XHs&G9mynt+WLW6qT4ErUL2G zgAQq%Gg`ylf-$U+d0F~Vw17erxmKflGejC?Ug?z;f&o?iubar_P81RJAgXdq_6n7*%<8olj?;fyJthFc6_sgacl2+YE^;ypB-QZL^Fh)@}5i>@A(B zbTg86e}CWiaXg>r>lrTd^dVA60^6pU=~dw&xlZ(qswz?K(7FWDrCPR{m>#igz*1R0 z=bY|Q1?*-3!-Il-C?e0(3*`wERhyqlhe)oMu`X8J-CpvTagcAz1;B89|^Mp{|W?S&<~&$r>t|tx%|lkOH+MN-^C# zCmSBaL=5i5k}(EZ!zHt3M5nbQV`XsxoqN=oBlun1j()GMXQ#78vik!U-c?nma{Y5$ zwS#O^5`YrTYCWf5#XT(PQx+@X1vMhdW2JB`S#tIZB43_so9?VTFI;MktU9AiOAsr4 zr2PQBzY01wJmYHTS#gp}1F-~D=%;C^geo(nrU&rj6sM9ig9Rm38@sEjP&QV?s)D1$ z_=A40^yt)N&-oJCMWr`p-Zlmh2^OnU?7QpZs+rZ66lbT-UPEZBsQS&>SXiGzOUu0Y z>9y#}5|_5<+OypSkwGCKzi*ApB+=}&C}in4IxnDBzra#*T>E~Znquw?6qjl`|Bb+{ z*RbqupykzQkZOr30JOlZY4u|Dowu-pmQvvV&(yyyOOhqof!JEAy0^KXh`d!dx&aUZ z4n)Y|2p{JEKVnFb4Ea`aW~s~;e&2J*;OJb-BFPde$36bsje&W zhbo~zaT|VD)lnCU;~^zsP?U~uV_V92Zmu^zSdmq%G4sOg^DjQ2-uk*eGRj!I|+9eM*r;j zdT2NN^(i5FZP?tPUTyJ0VMj9v*fCPCZ!uQ1*tMQ?t7PyQEd1b*?Mv`XI5WrenA>$qmGBpB_pwil~rG%&;QPqY}x(+#R1qqMpWH?g7{dulorYh-Kgbq8O*SSKN5{lAej^$ie!|nihW$?49 zrwx*^9}Y4|iRcIdkwS+5^yBgMZT|T$@82Iz8)zAqV6Bj0mAS4+UlHye@`@?xs36Y* zqPT+zuuJ_|NGfx=>*?vfmI^XF_M52kg#@#;jVrDQdF3ln<$C%&rm6@TkgX1+L=+>9 zV#l;%vi!MNrE^4NcmN5cK*rQ{EhK`nu4ThtIU{uUDvBvGAz0^`Rbw3Y`wtL_b>+Dr zi~>^bU%yV9Ss8w=>ssp+ftcBxV~*#?b+Njv`l_09-fx5C@@@Ug$d2z{r>n{H`}Y`E zWP8UXt_7$n*R{lC-i~2ot)z(ps(3y=JobPckyYs)@!2v|TpmMBO|O-v`=QG~5!A6k z^2+OcKy=s`$02stV_fHTJ$xR_wXW-#kv47K-qxAELguU}_n7nc{(jkHrZkD%N~Z7? zv1Hg<4nhTx|Y{qgu7=hbu-hem6uu$7uN#yUNbZId^%2n-{Yl@PWQ-vQpg zyhShrHVDOvtxGF{ST8{PP!-gHE7RX!yR;(quCxUfe9;?0QB3vFK zrKT0>%gszwu8+r;pTFda$8S#=x^l59qt?lJ+#@5d1oXIBoKfJMVlwkXd|ki&etrLl z+uJk|lX3fc{Qm9R^Pd*r9U2BoEY~?@iv)MdTWr57hmpeTTxzoM;GRTO#Dr@($RZ=_ z`MgZUOp)nV(dzMZfF}I<^)9B*#pme(*zLH#eVMnLnms>0=G#3p1SJ-Lw71@dkphIM zt(9|5U*0lrvZU?a9m*YP(>j(m!owHPwRV*S9V7cOLS}d;)(dIE9cJ|sXHsR%xBJ_d zHrvBXgf?^@dVf2S z8RfnNlJ1c>pWS~W!djP`TCxpGR1;8FEVY&)ZXIzJhDsy z%%tu^v#Ppv49d>21ei2bc=?LYLB0vN9v{=sbPr$A%Ufzxm5ODnlT|@@Rk7~3 zV-Aam<>AW(5Yr|`HXUM3RO98WC@D zUYM&2Z5pa-eb#27ZA(?bybZk#3)J(>GVXvn#n>`~cB6k1xi5Ktrvb_fof6rbx6mVn zo2WG-yQ7h4&l3xcJ$0Pqi#!Jso0PA;v-J*#4P_>U0c7kprPo%BmkeG$ne}bp@1=UH zMhaDGpA9eUXmN6HLn6`~3#l#p|Ae>pcD8q>+G2vljv?3-%LXU69IPr^X3{|jJJ_`m zj#4!f>%GvklLC8NX|-HcB}Bl=N{XnONMjJup&Wf+Ws6Vx%D!4HdYpVY(Dup)Rv)xY zBj*l7+>2dp5+6csi(uckELNur1K{5CTe`$Q&<|`Jc~>>`X}htcYLK@JC3hakzPJrY zG~%#9lh+Ac^;sX#HhnZqjn6TUz#r|Kdxz_1{Po$mzuad0qyLsq`$vl{HdNEmj|~;| z;@_XYlQnZ&Rlt|#qW|dj!X$PwWkU~D+5M+miUKHlR3?bl-Szp<*%S4`Ye;FMBFNld z9E2UN&C2o)i!Q8LIUyTL}itVK&4a9hb1bJMJ{is_Fv8SE5dTv9)yytPXkb zE_iA)os_AG3c>2`A@^|{Hguac1VxNtw_`T@WpkQx9`^h9=W}_#0XsLkUn7kw)Xv?N z*OUCZRxh-xzw1nJHwmQ(Z46V(0uVN&T?0z=Q6ubYO9DC+V0Zd%7^e~?sA56|YO>B~ z+@Wu0o1>zxtd{GqGnA<;QN_zQmjz$3HKY5{WxL^`7ruZh&5+gmc1dR_2WpeKCB=DI zdWg_T;3ahRbv}KGQlx~(F=f~VEYGCm&JyawFCscbnQBmz@{Hx{+OpQ=DP)n~zdhM1 zX2`Wdn0)~Ar8n6#V6}>)A_{GYZds*TtPtUG3>8^X-C!jEr9`#K`hwDAPOHkbR=TGz z6`08j+^iQ^x4+zBJ0&L4_r(M=*5i?$Ato)mZZ%oo$qLM&HpfuS$WWZmt2*e1#54fs z^BO}%aNI{mzc_*-fXNuOQl#cF8kZLvM7j5TE{wJ=2?@0*)cgC#aZ3@1sSQQ?bq1AL zt1DuTw>Q-Tg0F?lyp~ThH4*0b-+udee`J--Lln2$J-l;70WhutF^?&xyRTcIbFAf+ zF2+nKh01v|mVjx)&gY^S8N+&q>Cglfvw5E#322GPg)C&6Np?bK*YXLJ3c%(hRheWl zSqk?Qs5wNd>HtuSuw7Ho%4TP@{h1z7**tIobrd4&^#weq}&(y)X zs-#4<0E%jNb(VTuu^vR4nJFSYJycE9GyFP9+HwC%F5xuI>wI+4&I>V3H4?ejnp2ju zN_;I*wbq;#*f#BinVHFThOfxVOQFO-!e$;yh0gj^jq*x>jb&5FHZjCe|rt>s+Pv?fW&S-VUt= zvD;PQi$d5?Wl2dC5ILrpihDiJlf*C)LQEi~Hu^_1G$Xa#>{V>$**g4Z)!W-dWKZ|$ z;ZZ1=H*1cxid#iXE9&#HqMq0DY_~7l;~lwH=wXpr9wN5Z1!zQyCD79(~m#CfB!S25#3T15ia+h6^~=KBYmya-)5It9#cPl|2^N< zc|C6T-V?&mzDMS^`jC>tmRbgWPz4w zwlQHhsSQnVxsNeC(v(f8W<^y23T9H5FR5za&7n6H7a@C?{kc-%JAi0USp1|o|pw)U%rQjMIvY?EVaNv-qcicpFejAu1x93o|oQqv&<5-ga!v6|uYoLs%I> zVMSi)$8jWbT_LK7${F~T1Fx&$?GgtX%W5% zd%bi|W`UxD<^9SoR*X3)QiGYbRzC&}6^1GlDAR5!kY6pmHrW5tCXhh6yV> zRHCy#KDpVK-eH9bBM}*$hZgB1OC=)(Q0_e!RhhZYOB?M_D^p*Q0w$v1i2+sBtSda* zE8g`n99%1K=1_Bl#~P+W3HO$4heu_K(LH(r>K7GX7HeUXlf6SqRfTt1irP?!dW5fN z&rzTMsy)w_C?lfZ3tj2)cwT0@p(NS!lSr3JaLyxv>&gzk@D;rjrss~fk3^xZ6=v$W zOy#(bj;?SIUv*uJTzf|q4nwZ!q|&TXZBIig(GF7CN|3Tn^vy)3nil9QAkePn7FJa( z*P+cCP!JLPT*p2s;{M??QE5|!m06}p0P&gwRHy2>+D2RKn3xv^xA|V*2w%r(s%eK% zw5?x7D|hlB&{n<@k&0A>n$^xhmX=Ld>!Y^FgV|T3S61Em{~~NrOXvP(6a)oUpS=Jw zcVC)k;}U;huX{0V@%c^=?rk&Ckty36mRZGybfoYZ#Ms`fKe7_qV%^5+?M!H0R~BAD zD-DgP5|pSAl!&Qyh-PU-m%_ZL=xRXF-3uwAX12Fx1+vl4c6tCJp4}JmTEur~LPo>) zEnMj;&qhx2bM4(lF#DUWDo}*4NKbZZ9rm)m`OtpaTMYEVb{dyy9dvJKJH#$(14va4 zu?kqSRHVtX2)?GL(k{)@o|2Ao2oMBJcd24 z)sIYLS^dO)W`*p?4(!(tUxB)fN3~GVv~PB`UY%8?i4D<+ifu&d!n-cf>g;NYFau4+ zb;MOfMy9GF@$LI{p59-tm=RdM1OBfw3Q)6jF9B!;tSdK|)KL{tLP8LpP!7}bt@mk* zr+`_}Fa7XJLKUVO%f~T?(nz_DS0WGGBQvcFpiMg#ZI~|4u1#}y8&rxfFR}`2g(GYn z_qPM(WfJZbs@Zj|@Ki-sdLUN;wJKE+RhMU1#fL{vOMND^4@iK9CJJn+po)&c`%T6i zzyJQcB7gnu`P*+FQJ~$z6V!3caSRqSBEx0qxz-ku73Y{8v)?yfME}(E}PHOAw(dS-CFn9CSvhu%gt|SCn_uZ38(X zB2iR9$2|2=y4;U3j{7a6R81A`k(KLtHH;f)iPD76$0PF3_xq1ufA~q%)MOlm%J0Aa zbv?hU$ z*uoyUo=#pOAE|?tVEXA<3lT!B=fiQ0IUuH$RB;bS38eBet@2din6@4t&=O_#G>ara z)t$%NH2YpN0CWe9jbY1sMUs~uicMFiXBE^GU<7SiMi^BOIj>bK#*Oos?&U0mug7{{$idGa6RIxc!hU%ya&~@Ni9>I#p^hV{+6ET>@IDH)LVB%WK zvrNUNO7U7t)Wrt zE?+2AhL90qb1-uZnbXWH!`1BhbP-uADbmv4PSp|uLw&7=G*Jlm9%rTZi7FCedR^Xi zEMpiWML8%k9X^LXBO<@%*?55hJC3_~GkXu7f}P_{({n-@ZRY zI0m;i5=7BV-|k=Hx;&g6`lV*Vbp=Gf{r+)2oy2kf5@%%bxKGphc&?A{e?71B?dxQv zGi{E?^F1?v_~|~U{@&WLIrH>_R3s9rD$-i2wpBNfF9q1Jb~H4NsAFhFRjQ4K}DieBr|$(5}^p!@1pr#l}D(Beds2QC6x-MF?rb6nfRwcADlP>NW9$)xCy%$!P2I ze|rU9_WzUZM!A-#RZA<)Bt%tBgupa-prX2PczI4yo0Dz9$n-N+WT=Lq2azULGV}TP zcs!oX`A`MeWqx7;f+j77Xfs#mWnZhv#Lljl_6J7hbuL1>*nzA$XL_KbTM>Jw%8V?C zq=;6gsc^JBnXR(P!tNFU$LxMkQPY<6CsQaBRKZ&A%SG4%OQjX)9?Si_F6lLcRI#pP z8N)mnk8*y_N~6*^3G61B$P8uerZQHiIrQ(`qGH*!r7FvI%AKeb z;2y`EGE77(LnMj3o|msaZN*e#LsVQId2NBuq_3nL7l# zT5|%FsAQH$knDXAE}~VL(vg5Y2TL}4Y&+Bpi30b(&Mu1UO^;OD7eqvqqFwvUBBgSx z<08|B_EJ>n+)n5&f-y4@9i2DPGp=^)YEe~)5+bKH3bMC>f_7tBuOvH;2Td%CFiV;b zx6#yXnC=Wb3R@x(8Lf$s=r)9>J&Pv1ID85Ys=Snj|nDMgXROjIIHAqtkbsNMoJzceT?7c>} z=nRSMe1zCcyGLvN*{c*<$6L82B!Ez)^JrSX_e$a*;8J~I*;B#}4bc8g*pYsuD5`cH zDnLp`HJRRoU$4Z$=vd|6tXdUN>Bw?%*~eoRS+A-*6Ah1j|L-)0?7JGT?A6^;_EH>( zvb#IjKMTP=T3Y(Psq*eM-johEuV4JkEovr5wykW(KlRd$;;U|jY{p{WrF^B3cG6;Q zm}YC&fNn$B+Lp%1vhdk!^sn>}jVMUIVkfeSRkEcV9l-heKwG4O{qLe=cc?V%Uw^z= zwrZq{iC+-Wc9vi(EHb56_5G0S_Y`07#YQYP#?eTR)OO<=_nF>wJsaix{GG95hc@cn zH)AzcRw*KE6`)9~*F?0f8Z8ZI7cpMpF1brYwex9JWGCw;L|`^M2&R+rJ}n|09o336 zHbBOglVl^U`~DQs@_c>R4Qp+nYJcQx(Q9vv?8I559pku}pX)p?5}vhI=;OK{_Wd-- z1{)}RCCv0+kN(q8FqK^p)0+t;E3GS&xt%-xwRR~@uPc=`%w(qtcxU3{m2S)JMubu@ zWaoFvXYX1eHmcaa($NgQvJEVLMOKMQ0!AK(zT#dO8PMviuB3}_g{$_U4>Ls}JWN## z1lLX|rxF~dRpq|1D~h;#E0YMyPDd(Hh9|j&?(LUp^^I2vVaBcvn`5l!*z9?xrO9CMn<{q}a;-Y)lV-yR_5Jm#DkmF4ny6tT_|T0*(sZ__jrm%Dp_R8e-? z*RaaWTqtCujji_0#Btp2U%!NB;VP+aqpbFZn2Essj4QrhPd|UB96$W{^KqNc>-qlu zueqK-{rvMW^;#W{&S8V92|OO>P_sF0s9#Z_SpX8@ERW1F#{D>ARUt&>v6uHLZag0;Xs880P%IM=n7dAQvvn)@oYVgjN{AwO(aiY#tAH) zR^bqPp~!%My3cheSH*sgfQVdY3vmlo^FI7}-QNZQ_go(Co=K{@@4hX8m?({c6sBow z;Zn`266HdgF*3)T=X(Q|H75OB=ZBLRD)TseNomLT?0JBy3dRcRyxqU3+2j4g*QFwM zgs(GJXUSu&XaO=h{4EJ>t>PAm=eEI$8HdTb;=HcL+E}n5L*;%uMD_9UT;UNRVoisL zYE@q6_4anGYq6-Nqc`+QRG3tpk6bH!&Eq(xr2EJBU*|Cn+@M3DdgvTNc#?^_R)&|F z6vQ(W214h&-6w#Lk1IzKnM&gZqfGU4m?5`6eYXafqA>ntfXlb{OTz2s)R=#_v3!QKObk7Z!(G!QIC)3*W3O6-@88Z} z{`SZFm)rMWzy0{-?Z+Q}`2E-KX+j&7)#<^v+YQup6(Hvss1mhxhRreU@a1Ys#ckf# zGb%GY{fsZa3?ROLe_ZRdgXgu(Y##Id{e3O}`1TDMzy8Z#zx?pCua%xUbgdk7R8_8M z+`TOrRS1vXSX7k4b?%rb_iWvSs+y{qo$du@(uOorn-OLT3NFfEMy02jtcdU$s#WFb zCbG`8dv`tLF=tiTuuR4Zn+nh)I#tAdWd;B>%>re#*Kv!Vd+=qoi&jLb#O3R{ z9JtmpQ=#=w6zbRW5@8oouuE3iqJgTHs=GyXO{><6R%1_E%^(1o7Yb$Sr{}<%shOt7 zS}XjD_UIQf%RPDx(_y)?k=sgX{W4kW^7hH2kQK5M<9o=Xsww62>O|#;)zd?d;H*-! zjPS^+RGsK%!bnnw7+4;j&vOn{mG053y;QK7(O8$7v7`2@g$4qYplE7+w`3MIvur3U z+wE51`};XeLFT^DM2;4mS3K?LvyXFim1#SHVPHX0a~}rW1oE< zI{_9%W|a4^EvV>3iS$Lv(5@PF*+Ldb3!z(I^0KQD3h8{4cs!m{^zH5LYh90rwPr74 z?TX^fvTVM)cpR##=X0&)Jpn9t^e4q0-8&mXRi;{GW|W!=#NF2wHWc7mL7@%}kM@1w z@-A{$(<(MeE4v=DSMHwDtEyHzc(Jc%$I?rulQsZ1)IHdpl)g8GhVYt>UL6hlS`XV- z9$we=i0u-msuoyPW-2P_u_E>5Cv0233bHD8wJ37us(`PNy{R4+DH0VG2}MWnP>7-j z$Re4w8T*z(coa7vC_8eHl`)jS zT3nu8BHN!_gnw*ddrNF5{vW$zZ$b@!Q(q}{`)27J1Vo{Q5fOW-+52m5zer3EU#jIDRg+b$E#%}bMJQprEUK5}#$x!Aw)a2ul}t&2 zg3(A7&_ROrN^`7j9BV_sAIALJu)@pt!q&70K2e6)J)=7W;nNsjg(?+^jXKk#gfQ*x zF-hi@r?b^?8Qxx)woUCxU<>#^F`T`?_WjT~4xeh9*U$Z_wt#UXloI;G;{$NM^k9DVy=n zUFyLt=V)JNr@3x0q1Pk|yP8);JTfX;PoKn!)yP60Kvl`4u=_Y;U%8$Bv>~lNQugEA z-kr`IsX%L;)I^Z0^+OfzzLuI~1c560j*=+?B z4EBw*bLRR9K|fT)>yF$&>egBoqM)YpuqMp5`e7Htv8p;2cc0;8?r~rH_q8JYd9GFo z##(Kch|T^dDLRHBJ;E!fYNK;T*(H1`8lIxk%TLEBsM#=G*JAH`tQHd;HwEF#Ic(m> zZ61&Fyw>UxIaP@j6i~V(h1cV{R%GUR)fndP?jfe@bdlCY`{QwTFyVQwp|<9j!?J39 zTutvGONB$tqoO(#3cj)flKX7rOCj2~nJ7)AB2Nzi=A2)?*tOz%My^XuK0dDJ8PH*7 zI+P_<>>&i{*ILM;Xpc5RuE_AHs^BZosP{P$Zi%H=Wiw})@CX~n90x>Vt?PRBbNUAw zn(52W$bnBXh(ohs4%bk=Xfe0D% zMk%jnmL5NRo%gT43Ut#TV3K5M2fJy)MPDB&oKu?D!nRVA1`IfEF8C)iFK~y5Mi09M@CdFAGe7rUtXqO zCEE;Mem#9X+f}C2aU75L$A!nd9jNjvDk)|<<@vn)bYUz%MI~*nE9Y_e6&}!*p80-r zj$=k33s`<#D?IK$|7bR!=f}tQ-&q-+<91umOUJm*v!wcLLD8(mZbd=2E)FeZl0FQP zyLhO=Z&PnZn|dE_k86E<|A@6(L%EjQG*mqvr;6TgGik>hrgENFUe|F*xL0`kO7YuQ zyK14<^*C8>W~63VCB|SE^08`8jmXTL$4Jze^L8ApI{kXCHbJAsAU5^+bV_V%+fdsC zNHY~1(J$#Zw zZ(l`X73X29RxhRjtacQM&`kThcVAKhG^!mc8Wq=dRian-<8~L-X#-?e`1GVgLT;+k zMf@u;J^Z)OB9X zs;Ni`%*-2uucSytX2~(X{PfGuDtta4kB^T%+E$tA-V#x&XkCvPt2(uV6n0~|B&dP{ zGkT;Vp+kLnX2&^*R*K0LNrz3PNVx~{`}Om-KvGX!DVi0%0q*n%28kj1I{WM1-gs zB_mgE0Y3_?RHAjQeZkryWI~9#N9}ErDiD+G<*Dgi0l~F=9<$f^9nS;EPU%NvG*#Yx zpWS=X!n7uNY>rHP-uYQst0=T#mC?*k#><;f%}0uGr!w@Oi7HT<80VT61>U6+$2 zWlS}d$}BAuD@&EC9U4Tz+ikz; z-tEc&0CbxOK2;L`8f$nZEPQhQ^7?VX7G3Vmb{qM*VWAS1I|z zG^Ekyirv!EauDU{crXYF?cO{vTXd3yD7Dj;GqV+KEK2)Qs_)=^HLJh9PTjyp#2bJ2 z&fFyjEhQteUJ)2Vp==y&e~#DPTIg;awg;i%u4tFbRxDuu(AW(O8%e@Tc!B~u-XA-t zvyZxsPFAs64%YUS$kI-p$eyjzSE6k=f{0kY1Y$!;Kxk7cBi&6IFW#Zqducm`0JT+$ zeW|J&K=2~KI~igNE~Kgg{SJ}+i^9(C4c`$+9hlu8Q$&}0R@6%e706a8j$u`Z^wv^U zWihK-1lJ1U65(x*LOid^1cdG4bZ@Y!4>2_r4*(%5EDn|1VZuDmg<_JKZl>(|lVM)< z`|lr@d4~5)UPKnOuNy!qHR(;Dzl!C32y3F|Ff~2TYc-Cw`>?qpuwd3?ZMm<^5*NJwhpI#blp?BgwxiQCGS&vjwn?d?isN{D z`&x~E;H<^R%n8jf>5Etl0&sdA=`Sfj506J-?f|))Kt75FuS6+;kC;*G=@!R9~sB&M6 zDuAlYRSe<9^(JAhqgx|Mu6o9_RDfWA-pP?s`2xD(mYHZ|Q4H({T`$S5(&h?Jhz;SJ&u( zYSTnzn0fg5IEzrl9L6%8>ZglfOi|&-$1|GeQ|XMHIW2+9Gpi&^+w`guo~Co&j(Lpm zt5DbT35X3VW@V}9P^$9zaRQ;Ljn8J0ssuaqX@~tNNv-AA`^WNCnHll@_uuBc-@kro zE&21~8aF-emGvxCcf+6%5yvsw=iuYC?IT9D4G0N2-S;_jE@XLR zMw(g65pHicGmZEFE2HMn$};zmKg{-9v8G)!C0xtLG$h!@Kgvpx5EOq6nAn+mAh|4X|^l4z^*^Y2=ox9D&ZZ(AnvKd#4N5=*=b7Mm>~Lc?j*L!)lpo*UGf+vO zWRA={z8rAG>RA_l1x5Psy}cckm^Pv!9_RTy&&PPYf2`AQUus?cn}1Z@{^oE0Bv1YR z{r&s*=a@qUAMYosQffV~pMLo|#<-s63Q!N3Rw+6ZsPN5%W|SB!t6NATB9kJrR*9-o zv;&aB6?V)+OdEvV%{s$KX;G&LW5ovjqbNkAN0CKVb(@BYM>bA@zSo67i0VAB&a^Qa z=*fu6Y-I|nbWSzPs4=HyUgz~n>XJZI2k&LaAeFm_BBRdh1S`VBz1cZ6iOqLYUg#JJ zY4iu&*F>ZP^ETg-*^gn%OB*A!p-RMBHl_1|#u#(jb%n1Gm38?T=F2Nfhj>;dj>EDt zqtGJ%mEBL1FA4i6^OISm%wb~=kG0Owt>DPW8fM`&#t@NpUF*tuzkNNlVE%l*KR$X! z>$(~<8Ka{Sll@afn97bm63IwX-Iug@pvXjI^rW6y>xwK?)c#h6AuFPUye^2q)I2=k zRXJ2uu~v(h8EvwVy&7>?FFR4y)l^wgwx0itc0wba$I5eR*#$)*G*~ zQ$;!-ZFxW?ygIHwpE-6eFG$Hu?|T|VEBXsw3E>v{lC9vY+HGpDtYbtJQ38obumUAu z|6IN!!K5Qu`&h56Ea~+)sv>I)Ya#Jox-!(1f{JPZTOScsRh0{`Zi}kt?NhDy)(UD^_v-LzFz zZ1wZjAuzD5xi5?WLUc=>#xKki14 z9_WR#we(3Fs%C_!wmoY1gzT(~O&1HPRXE){E1^xF`qCv5%!>BUZ6LB*S=Ne%4qNlB zM0jBdqJlb8@jR+3yTEyC-g?Aw(Vb`I5?XgevigI(3R?tAyBy3S{54eO(%SDil-L z#^DXhw%ykm6k%@N$G^&ffT|TF;FPulV}lPUP^8;iDjK2yw*(S|yGO7pH}sV+8W{Zi z#*ihd`z8m#4uofeL#WD#W*Yj3jaP+A!ztO{2w0IxC}kH=R3*?ERUQeD5ag>=l04=V z)sK&luH0zFiMx-XV1B&kF(-)gTuR;!K0nU4`~B-N{`vQJF#}47F`5VvO0^KT@Vb5R zlBSS-w2HJjrLvRQRr^t=Xn2%&>vU~}rU=O$e`-{^25x^=i`x8R0R+okB<)sbH%4t3BrngAX4W2|M-9Y zpa0#z{onn=fB*mexBuWRd)N0s60Q`d9L|BZ}*#;Ugy==u8yOsYoA)K zo4%^wtU9Nkt~O<8fdYxk$1$sFU9MxOn%=*7)H)w?cA!Rz=~|26m_tO0!76VoUO3Dm zitVk-%sjvUy0Un@-KlffVdJJ+-+%k{@%^vsd>?~;UGN--RaGL#Rw%drR5MW?M5!Pm zBEXIT3U3u*#p*LJGQ{TBAAT9f?fH1D>-~H_(10lbVEGbNLdX4$97v+l&jln=f_QxY z=GUcytXxjMeHCST-tKSic>nf|%1C(fxZjkwtoZ)xGV2mCQN_Bhj-z)MJ0@ZJyqJYWUaf|_9S4K{yDA$=8@k0O0 zBOcGI$&K)AsaGGMqO>6yp5Y=~msi%f4Hi1wO~p_VSH6F%Yb{?f=7`AWN0?9);kn5J z^q9>m=olWk+_R98Lsh3?$(-_doC%)GGjY2ekLT0Zb_<&D6R_VHw|wS70JZxYN&*~0$ir(M8RF$tqDo|=_rm?oq`SK;u^V{=UL-6zY zyngzdAAb9n-y|iA1@)@?+gRr^)hiaH-%vPiGvX>M5uJw#@&5gtQiWLS{L7!02#&i6 zIfjd8qA}Un{%Gc%VT5G9p1~fr6^pPi~Y6i%-X=eC}^d&%K z02wQv8S^-hk*}U3RRMNtt9I$3u#lp(7!e_SMZwqRL?}9Bgu4i{VwkvxY6l>*m3GzM zerYa)Xko%@hDM=p)D|ogES9PD3mcs{EmYH{aOV^qk|KrOE@nmqqf$ho-OJU$G=+pf zpzDez2Sp`!CNs7Yr|QM7SJEr(dOj*v``3EIf-o|N4OQKfXVs5C{v?8b{D*&x>yoA> zm1s97YF!asg(?D+YV}?%x{*OqN=jB$J0Da{7~A&3F4OKe3XSeAy9N@8UWr>k&*}h# zT?xsoY$>CNjwxe|iW03zNaF$`^i4sVbaEAXfrPw-zOn__t>$JyOf!<3l0)Ver&G1} z|7MVBM(zJve;2XV`F!+hnw7r1EtHWvDze{00G4}1y7!Iusk}u*`sLxZ$9n8Ch|OcR zu7RCykYiX|2T|poQ|-7Nt<>nHuPSv|Mu^bVs=6q|+BDp>lJ=%fjJB;At11FxC{-5V zkt?#IVx`z7+|ckt+YM9%(nCRJG)JhtPd0D;DjV*-y4|RisU0pDffm}bRJ2vW{Ufwi zB_bd+)k1Z32v87qB_66o#Uq$B*~NanPXhFp5lVzx_nobqL$4kx$V9VeW|IBNuzqcW z#ccSdvdyNgOBUfAn$}IUZMLscstOC){*y`&YBJ3VwN_?3YJpBzBmj1hWOaR80qrVm zy%LKe+ZY@j6H*NayjWuH1-PYos;`Y#Uc7qu<^n}1a;WH3Y^h1hDzeoX*xyX2qooK` z_^OlK*}5CG>H7mqs3g3BfgOU7J6OTHbQ2Lhx@;@Z))Q>y$F4;d(QV`C@DF_2o%YAt zHiG^Yws~7NK2@Ln5--z)aMRD&vb5GJLeSwqy!X6#!KQU{!W_pf(SlDPr5E2ar8iY`jC28}fKXQSKfEd0qb& ze!jAnNI^BG@@kx|*MRcMH0hTex0S4{r2$<7vNz#scg8EB0#)T%%s-%sUZ<}C)mJiG(OciOGZu0LQeJm8oeXJ|g`rvWV+iK-sXWiilQ1$?M=p zm5J#1BcHXxeJPQ*IkF0nPGKWc289wUT3vWWd-~XqNknA^Dm`QjyDkSh)TMgzY9?b{ zo*A#WQnDBIPDjevAqy+9b4dUofp9PIy4D;vOohB1))4SKY+dp^FA=>>+w!NPlA~Ki zngD1UkZ5Dl?!ITj&aT>Ghl*FhO54f$wUyhDvd;}QU7lItPq$%HOoX@FjEL|+6_6Pj zYm1UzM=_y08vS;^tLUHq{Ez?q=YL#lef{CfFnK<{`E^#NST_}v8WHEYE?;Nko)9w| z$NfP1^ZBgSb|wJWRQe!l>O9`QWMQ34wbb-{JjR%<+)-0f@3)&7GF&O+KDI{=9Mdvk z*dQ)4hY6^@&diLeK~WZ&QdsA^uWxf6?Iw%xVN^*{bV>l{@*#S=4G7|jSfxXN@>TtT zg;M2IaZedqS&^vgz5n(vnf1ILds-7!8*22m2*?msMFvo7EmTJMR-vhe zXZi;`sPxEq{uWu&j6yQ+_gj^pk8kPc`!`WFmW#;k>lZc2$a$!r(qAaK#3%}8W~S+A zN}v?!ClO}Dh6Y1e;mb(94Jv#&3V|9^3lNje=2sIy&NCw%?aNpp(v`)MuN?7)JJoEh zC4%$|y{mGlGAlDK64!O9Sc{j}@-Yt}Rdk0>6*{d1?9!h}LZ?9$s3D;?+&#lTKHlHH zsvRSpkN1x;wHC+iro&LsVKyvQilkO3WhzaP;kz9uYM&%5w3VS}ial??;B!)lV~*pn zO6^8siuiI!cZco}t*kMJh(<<*ujjKWUb8qOYlFnX z`|S{^^Sn^yk@I$=C_!IArHJ;gpo*0r@83Pbbo|?Y_wS1FPyg+||MJth0^-Z@)jEkEg19{qZeVnvO3&yuCl)|Lgzu-%vFV3$NpL+z!nYj<={W=E#nv zRA#*9{`O~Y`_f1`9?LvzP05-IumixR}t$d!3 z@JlE*2ME7Xl-@!8!aEgR9y9AgO3#a3hJ z@@~iFTHcA)TWpU#B@7!vB+6Gt^dQBxgRJB=*C8XtRQUR@s;^}|S3#-`+gWO=l&p$% z0rhr&%S?~OE}>QFZuHLe@1?PQ_`P&D113EKeJ+F%ZG1hBY1&SEpo3w~f32PGSNm?V z$DT)9RlyyBCOv#QM8}wB8|_d^f#-4|k7HIuWVGU1+2AtRY7%b(Y~*w z&BGb(@vDX@YAa~F=ungbW<&}js_UpLbGx01%4)@gXNribs`NtDC=xT!6`EP8W}>>* z%8ZPj(a{zURka~&#qu@HZubK~WH#&*84)qe=CCo;m+uk**-LZx>{VvB^HMo%HX)Yo z=jBDRS|`jMgwsG>P^V_q^}O1$!I!+D_izBOb*^G(@KvuOJ+AI0a4(R^>{`nHJN6Q} z16#8TK1*6+kg2K}nVkc=b)%hhTZD9dX48f}s^hcTur`CbK^)l{1d*3kqW4R7m_-%Y ziJQHPNxLjijY~!q+Yr}IpWbq-GHNd(;0`wH2F+dilloc@hX|_9YvmvJGIFP&y&R-K zMrDF6_>RmjSQT^|;^xBnV)FM@eZ|lLoqwEtEnAE)+lU~-K4$u!CZTG>Hq*XSSx6D- z^u&JW_X}?4S8iOO+Lf@6lFuB9j(*s?WAA#q-D6)=?mwX_x00s+7Kq4Z^7}qe5dw`I z3D{O3Zb$_{?J$bY3GAARo?`InQ`vjyMk_kvVaH6gZfA=ENcL}_=;zj5_{`mCuMP3S ztyt~Nyv?9Ni`XrTIIo9q0%4Pw`3u(wyDrC;2& zQ>|{`>-pLkP(OBmsOuZ8AU48P0C$0Oepit4r+-9zKwevP z=5B-PA7|4{pUBbvPw(Da)6YWgM1$J7BH$mh;Y;X++SL!jtvPMkLx0UXdSr_V`q^qX z&h|L9miY7XzFwMrZ-`JLA~Mtt9TSAF6OsD|r!)w+mM7A5m`wl>thG=O;F$AvOb>rt zr!W8V<#r#K8GrY8zkGYF|N7@&(bkga3WgT~#*N191XQ#OuRRsas_ba0{@#JM>qiu2 zi%g<_?LC`8~5 zPwlq5@|7Un8`|TFB%r$x5ACmP>ViObB9M}mY9in?C6d4xV@^HK_3?44@P6w^tbCkT z)jp9tlB(+p8G`5#s;nr=_FdM#{Tc3?l`LRyGU(9OJ_1b*l+4nh5z%9L`*$j%BSour zQf+~?!_lR0f7ziX#c@;#5I}cHjwpY;zavUTs9Y;mRjiK&p;D-NJ1TYF-r%K%%;neR zYuQi{6G6IHl`3`2g3e*?>$vl2Z^+m$wZ3(Qv8u5lR*C4! za_?<9wa09>!>FiIA(5a|R+2X66djp8P^EhkGUto{r4wa}N)_ovjjAdVD~egjS_p)h ztjmj3Lg?;Sq11+svCd_ae#J1EH!EMN8Q03n4m_#?q?GIi*)MPRN`F2sDBa^WXCa$( znbZ98BC?{9<#BX;e*#d$_4F*EPEWo+uFR@v7aMJk+_3Ss`ISl9XQMszT z=Z$e3d#&<1rewJZ;_@objF9aIG*EQzbEmG$V7n9jv=!rg3q{rY3Eu4}pbo{xd39BS9)TX|mLmH+$y@E?Ew^|$A_%&sqA^5?(*6Ej8l z_kZ_q{`%YZ|NMXX&yT0Q-R74sHyuOh+QOBL+gDMDn#h1IcEDS=66Utfrl=ls#us@! z9`DbORQa2qe>5GpFJFH6<;VBO_JQI;oYoI{PF{#>*?$&;*WG+!LSOdiSAGL?AjD)mHnCU61V^pbRRRw?` z8^^fBR77b#2I2O0j}=u#sV+K!pi*qY&sCL`DYDbnfm+v<>0?Y%iqOFxi~G$d+WJp4 zLS{D1G#I@r^tyJty+u~Me~Sb6;7YF zUG0-y`lQ@bcCUdVS_$l{)MHu?poKD(eyw(;A7#t4NwhCxt<}$0WxaoY7i}x9WEL}f z#?4BqNI_LIA|pMbX)sk;5o3(k_V7|AtE?6I^2wviTDvwGaJ%n<i=KN;%YJzm(1S&I}PA{m>OB;Y#-VJneARJwFZXm+?0`vY(7bQa0}0s%pm zlA`de6;%mq?{upqc6zf!M(zAUv^zIGm;6Wo(=?)(=%Tw;4MfUXL4k^Noou}r*-rfH z@sMZAZJ#H&EmjNjACOdw!`zRiey9R3fV@F1yCURO?kk z2!4_QdnM~}p?7(ePZ`FpvTNi+lprg20iJ9~KVL|TquDj~E=}^4LE5)#b&y*3P41w@ zJ|zU&Pk05IxJ^`{!x7m)JgZ*1B?_fw1FY716n6PSOCerWpH28z$Ft8Fbs(7W_?(vR0*JC3U_#Cck z|FbepwMj0K?KIptN_DsTHbQOh4AGo?t92SlT%N2V8bnJa#5ygkp<0;A{Wg;$evfAG zY>GeqFMs|0{kc56DDc+!K}Gwe);AJAZ9Us_6iP$AWVV|lkk>Z=0U}CN$J|kkA7l3 z`&U#&!lSsML!d;YGR83XK-K6xvetSK^BB4EdPG!?X#lQh2SF!mb!>T~R5^xHBr=qY zHu@oVM9Ql(MLN6W72m5WI{>9>Kiw$FFq5hjk!~SHR%FDh&QC}g+CoSpp(BwQUFU~_ zj3HH(FP9ULkN0n0)i=4CRKbiu$195}RC_Jr@pcnc&(Jvrl?~exm8qgSbzSQ`FPu-C zH*(R4R2S?VF^O?T%p4Imp7fdo=e93>6gFxyMO;5J#Ey*%=uO#SIEjbuZYYBaS8=?w{Dx+sAHCpYURB`7PXKrYTUwO z*+4cC9x8HOPgMi8Dnxf$QI%h3I6bnuBYED&TFWCVa!k{qCe%Z+LZm!l$3%ozHE1X% zs94uRd9u=de*kF|C~asJC8C3kNvg>wC0W(uoKYB_DqPD&WgLeNEBAik`W2!&r&Xnz zT2)?^-cAK{6t;-?a<(g(Pz6Q3iz$I{fA!;JWjHu)b1R_*%KpBfrWxgtCi@tzm)v*1 zhkDAdjR#j==g0Z<7iy;@A!C@YGm#Wr&-ceWkK4^e?q9w>KAr&9I<>6_V4Hhmg^FhO zQX~|*2hD7bh!WBEPWNaP9@^5S%&nr#Vy8uz*_eQMWPjNOzJGj($R`U>h3E4;zPv@{ zb*?4=RmZ>l`CtCc-~9c5{Ez>`|L1@GUq5(4?eY8L?d$Q+|L`yWZ~g!NhkyU?{>%U4 zzx?Gdf61TT9?!=wfBNZm`vTz=2+w)U`~7(T{XP5ytMSe;$6B86b-PbhJ3r$4_v@Fx z`8V(HA0Lm$^;r3fjJMnGzdrx;w?F;+fA{bI`JeykAOGQ>42Ucpv|$;5)XTqD?y+Bb zuXZ#T*R{ImTBuaE)?GvZ&N;`hih5p;j1jDznkg%()hY>$%7v(o~OQ ztmR_LSBYI_be-Nd<_P9-Yh{$`pupG4h%x7JyRYR>Rmrk>H0e>-f=0Oai_}ar%RR=N z$2_k7E8;b-bXaLr_c^JwZxiRW?)RBh?mPQ~ETIItm0{y3Y-+vbk(*>|IXHxfhz5Ea zv1U6aP#xEQMKDvP4FIV0PLVU!@b>Ss$373N)pnIs6;XB+b3rmUhq+dD<)bLa7^RRX znVQ-0ZdmRFKmG7o8CgnYq1S#J)spa1U`3q$(_~b_Gu2GVb6xI!J0>!Pa1Rt!X(}tq)H35*F_a?6 z$jG|ZV%BjS(+osD*YkOfW01O5is;v$4pu$R>-=~sb*QRo>~Q-HKxk{3s{|OsA|t|u z(&ywB8dN#bx=*-4rGN^gU+k|W{}xoZZ#VLbOm0@TT?0&Db)1AqRe5$~U?WzWC~k%S zo{O{0%oM5u(TsFoh%!@EjccheGCfmOq`femTfx0`H)UKIt0IG@eaM$J)Ip%x>^(8F z1rDeT?_RwkKph*aU?Ewx>yr}nN`^qTRR`PMj;cZ;+;>w#17o?j-;QqUn^slX(Q(?H zPXsF5xjAZNrtVmQo$FAAs1n^fkeQN<@MQBRJppLHbSlg1Gj%W%yE#%vuc8&1%Ok;# zG5a(RwEm*uKT?4B?7eL0ra$Ul=3X@r?I<9sqy<$FAU%R5!b;g`!F%Fj^cqRL$nou+ zr%3Ljgppe;y(_*%wtnODZJY7hT=DrQSJq3jyiw%V6Eu;Xm7TbWmsVkiCDw+3+tbdi zst8gc$PDfr+#Ol6^%SqwQ+k zeo$n3FDLaXzuaAzJJWHy_9~00eMh3NPzg|Y)j#*LNRn7r^oF^CX1><@hBkWq>AdHC zFUz(wU;`_y8?io-TaZyzRm;86iiS3%MJOAy+UG-WarvqOsjXd-4%<@Q5w%-R({M-6 zb=7%OL}sq#85z+Q-|%QFYYPxW=pL6`cRMOEre)Q-mRCHllcb8?rZBKps|_~%*F;;F zuSZ9(?xZAkN^Fb!`ZlNt8_BW}7SkXh#NB6>6GgWVb&w+ah8jCaPJy7Ho`p zQ#Ra_t+-NOu8JK!j{OQJfqErmcV=p4u_`KFg|+NN)fQ?MGQ1ItmZ|hPV5S9KD^w6! z9&rp=*Qx?lO|&w7p{lOsstRFvLeN!BQQ3iP`yqYBr419jj=p}{gdNODkxnhoPJHj2qekxP zb>Ew4KRo=DZ&rayV8h(9A*{a0LNRSUMUfb$&0w%ml|ocY0{dr{tc=yI&V@)(0(G9N zTQHHCC`v`7I4J6#NT}Hu$NBgmWsE`Pwa(nh(cUzQh^%#$hX|p#p6m8y&g1asm2pw^ zSx~cM48P)fJa-RrW`S8LHbt#6m6GbQKK}a8|1eE%$BgHD`7`}$fKQ}Mb!!@TaZS2F z+VuxiWs)k4Rg3jH^lZ#2aKBP*9``S575%d9|qJx~goN*mYe5=Aoi>J&FHb+)2Z~bYm<(}sp(;sIaGV!YKA%LPsA|oV3 zrwF3FBAa^gOh_+wyv|T#_rZy30&y-R)MPzR6voi)5Q!arnT~KrtV|y!D(F>_swxdc zW=3%f2BE^tN_RDF5R_DOxYaaOgs07+!dQNt*R?KEcK1zWR{2_$q1s~8JWuzPb4aF> z+{`OF(j`>IGq1H!I;O_iUIcrd-U8c?$61j^tjAetV@P-uU<75)Iw`WJfKQFO3QcK> z@Uy@da3D4{miv`ssMvUZoTBXL=~f&cw>woutZMnS{PdR7jA7DH{mwIjsC0Y0s-5RK z#^^P;AtFuU|L`Ba z|C_&kJU-^sTKPQBs`W2_{qxU%^V9$IKmCvY`TzcZTfRK&x8LwC??3(gvnsy+csrlx z^?Y9Id7YOj%|wD!(9y9a-2$kCV)A!?|94d>V$-zT-+nkUbB_7*k3U`KdVhS(Lx24G z^`~Ec`R(`X>7`~7UH>T{B4XIkp|XoGvsRKe#-KnX2hDQ(M=ikhL6ZsR{AQ zj*280?y8cgaoF_?wNVwQQj@j_I7H6VO~p(JOcm%Z;9Zdgw2L82^7VOGY_REkHkMRgg$N)ia`_5jH+m>B=U6LH zZG5lR4|h%&G7B}Q_4uXGlD5wFI16?tjb)`Ytwlxk1Zttt_Yp|5RnZ-SX1Wekl-4`(k|!l2q6ziCsxR(TD_7vE`ak<&jd@FbiHq z7oe)N69FiXT@Ip}FNH~{?Nm;fPLgw*Pf4TfxAQE$kp)?r3mk^R!mwGUpRV*+v`Bb0va?udI3m2LLw zFz4EexN7TquPyy0VsD>2B%oC#xvdS@>^eRT|G7QUz?Rl0i||@43)#7qF9~{~+J&SI zjpWYe1eh=J$X*Gzu7qun>r4c;c`#mOletw1TfXp8QnVp`ZyfsqzU&ekL#d7xZEHh| zGdtY6!{~E=XlZ<;kbLD>wV=&zh zerkV)2(qeDwCynR$|bGvz?RPa0r2%D=#SK37hf4U*g+WFC%JBo$`)a;cB!Xo?QgAZ zgIiV6$0#axOb}j34uTq_I0S3KG(`rX}2gV z%VS4!W(Vyyc~&JVCL$uJT|3=9OLSU%v4|Df>X(K;ggU1ISSurwg)J<7)g-x>32%q()Xc1T3;^CtQYNzI z{b<~w(W}nBQ9(qiaEnCRWm`cJ2t~wfB(f0L3Cbn)vikNbnbP59yZ@}u8jwWW=vOZ6 znl{KV6j<3wSio*a%czP}Rf>4*_792}1;A{?WI!nWPF&f~)N2@2ZAnme-|GHcw1z;V zM3|_GG|}5J3Ro)&g>scTKfcZ5Ue}3XnXqvaa*pY!%<$z^*jUl$NkIc%?g9WFwtSpN8G;r@b%|kvf}->-~2i&mcqk-|I2^>zE%_>tL9XvX62W! zQ-$3Gzr5L+=C_xSVmfS8qU%isF~+#v??SU-*ZFKt$^AkG(pibZ+uIT0oZ7f#Cax>s zIp!d>0p#T_%G-US=pGPez;3r`ld8vEsv>-;@VY!>rC&5k!KC!ajKF>|uM8gpCUUJ5 z<@H=y`BF;e7&2`TDW#~Qia{Dg0&3o7omV#3pmHu3$hZyBktyRo<2s>cqu)Ce75A*H z+x_jhSzi9zuOHt&*0oT9VY>6FtHv~vW>$U`kmz@invK>1G);D$SKr~f1KW_ura{t! zLQ#zjH3fr&uK>!9)JB2h))I0pF2HSa~=L{LLnz%zru9QJlUe68i~%lk!DS>c`6 znJT<4n9@v-F)B)RzaK>umHo-ngRj1ZA7-N;=q z-mV5wl}N7c{?T!}-$C)U#<0q)^y~S)uIu$?1IYxA8j6!78n07wT``b_dhyU^a^nd-&|I0u9 z#Uq7!yWhjH7Jm8LzyI;auYdXT zKOKjejNg9y{lH6z(x6&~C zayPGm6diMHvbuLoNNq=k&)1P#rjp=!d1O|WS;K9gc9@O{@0UpC zt8-zP%xR52b2A0p7?MhMQ+ec$QKD>TyLLfK6Y{n1rWf(A9W+wtJi6X@qUu~8fjP%e zMQhGUQx$eWIx6>~-Z=}|@etKPwx5XhM#dv^Tds<)R>pR!6$;Wxg!$>%k1mozcSTTC zw2A9x&aurI9VDUKx6->~Rz=iH(FO>WRoz@b*#s#gy!&2zjIZ5qv6<;tR_Pzx?GEOo zy!7^aF>W4wZ}$yYy#5#Lh7h#wqaWkmf~z*$)@x-|Z3$lOa@lNB^i!JvR#!}Y-ej-8 zrh`fPg73POSC9nw;_f$P|0$8E*D%yb9JBg$aXkEts7hmYfZo$~rk_~4xru_L3HPNwGcWPBd#lEc7oyzk1dAFqOg>VtCtJ<4c zqlWxMdD@o$hv);nA+%DX1%3U^w~w$sH8DGbwQDaxzQR@;c-;b?{<`;HwDUX(zV3$3 z^Xg0Yl11@_Xfp!K+rrfce7zpi%uH1!rR#BRC<-2t%fS*+>p*KzOm4@_70>6#ob&6~ zw=sBL*W>&9m)j7PzkYwLWNYJdYhIYymd_e3zCyKluu;N{@b<%yQAto)KitMoKfL|+ z?c=xakAihOg=`Y~g{P1d9X8CS4r|ZRy3Weo?X-cqa`)J&WDU`1RmK7`759?l486Dx&_PqUcyZ|&bc94C22!3M9T~RaC3JJoFL+WMtN`!)%Ue(b;AdLS~c=twfer1xa5% zY@;aMkJC}*5R0Hkv{|NgF&mv%GrQk^_=$QGwaQrjc)Wj4cZ!O#;sV^Sr9{S}R(e2C z5o)sB=NR*tB78ocRW+xQ_3{23Q@*~9>=(pznRz|dyd70o?(TWa8I_O6WokeC z@Fk$2-QVW*cxEg}N^yDE#Q9u(OphUzzOHmHh+eDf^$M&A%wwn+z^Z&cS7goO&2AIr zex4bQ^oWJd;%*FG$R3`X;3B$dos=Ewq6$!lx`*kQbE3I4j{;v7dl5mb7H(jjUPuaZ zg$>CnUmh8zstjKzD%%H*t}Iy5<4VgUZ733=%*t~`C(C5i_SE!yxzLGzq8eG(X)skv4`1#~9b?Q20s$-ICKP z3}iJ#TO?;^r(L1j?h6$$6JJ@Z<=#C|LY9!CYxx+nN~>z#?>3HerOlDy;p_SFG4BKf zpdPm_6b9;goKPsG5}<&REj~{dw%f3W5>YczDR$1kV!gtauqm5}IL}L!GGslyjkOzQ zZJJMHj=9a|kup?8=bS3C&h>bF{N2C(<@@{X`Tb)|RqET9yXpA$`0nxXcYptRV}k#1q4VhH3g`qAms({4r#|D`~9b59NbEM zveZzOLaJII%#bJ*t?FD!^n4&)5`2t0PlOjBqT^6iS)V(Yz_LUnGeo2Zr|Wr&NFk5g z5s_n#DE0&J{CGS*zQ^);zaO_7+N(cDRjgI4?zYUX&MKm#Lt9FtCVo|Be0+SL^O$4a z@Ar)Oc=tlika1c zG!#KI&mzc8RlVNQd)&hQzB)O)S~&sP?{6EHnSDA5cbu$>(GFCgrZHG8bO(r3optcBoZ!DLP3V>MJX=r)Io}S|L8}td{q^*I+&meqO_9i?!?G36j|$W){fmJsgX&o9?8^N-&9dK z=bUp^3uisHeoCdlj3{X>v5-8UtAr?NlYOrf=>^%-l`1kyh-sp#C0QL5=ic|Jh>jth zjo3nQ5BN$-`z^_x{rqrFu%GWF`b+#61|flyhmrMelm0v8r5k<9K_>~KQV zD^zg{CRLe`h)iaGDnj^L?3;S;MtWfS16 z2cnq8ZSu^WnS#P<)JdU@PnmrFfvTOdwn2g3_WB=*V!hv!>`A zOT0Gw&BNy(D2hpt^rQ6kWGp>K363GQ8gi$ywOVK1rNnTJ(7y`dr9 zPFrbQva2*V&E7vszt%H1dHI4|@rejyhXaB;m}46~wAUVPOrM=GScNK~yjJJttG6Vo zw{#J9Uq*|}v2`~+d_yUP9eSC$p%1)n9-v=n(!srr%2l@aDw{9r-_e#4QELXcUI`l2 zFuLx3j0SV82e+!^ACOt!pPAVdqGxhvOjc7zjqX@e;)Q%6o{1ePoiBMQfZpoyxde6_ zNnbiP_JP+cH!7v7^Hl^L85xd^4N@?bzq) zF&XIynC=juGPn+s#c_; z^fodBC>xTI%(P+3nxlsh6nR}mLK_HX0RakXUC%4iP(+nA2!%q`TB#H>qcX0`!HN)+ zmA6bvvZ8fJk>ycCAA?Q26roW@dhcM^m;G zQ4vC$BuFER2o_GlH5F5VMy51u$)p`4JKjw&&Svc#;X}_sYXsS?OMewmGX)v`77mGVX7YSdg`z1>FuEuVSBv#KyDpMCkRorrPInGybCDk}1byCMlwP<)#KrB?#IMQ&n?sF-Sp9@;nI9o~l?rvoxZ z7gNf8&FcDhF_PxHn!O#meIhELNOe0-XH}u|`08fdAZ@hu$qXhKrXsR3eVYs$pIRK= zyEP1Vbj-I{WJEzJ3OAZ6qbeCf5u9&lrOqJ4=8P(=dzo9znbh$Z6?7jWQW0WR6{zxK z^eVE*6}wh2i@9Rydb|&{S}TvkknM`pSfQ#_TXB!ILyw-1j`|bVh4dllkpV!B8-79DO^Z)cezQ2Dzj=X04xBvUUU(fjX{5;*vtpy>F z*XMlyK1T6=#^XG$YaV0wP?*~ozGlT8kfA8%{Q3F(`1y0r`+xag{^#LRi~hGEx6eC| z^ZeuAKF47~aXSL3+XBjNv}&JWucYeb+Xp08xvLIsoI#@p`;g0~K#6CCnKp+;#poK5 zB2afm@&)jVt|BPf>7ew)qNcrgXBEJ4Sf`9kR2&uM;{c>P%rY|bRuwM#aZr@WT1_M_ zHyh^WzM|h{P!V;T@GPANOGds7PS?z;m?cjGL8k^v5vABou;+^X} zPxGUT7DO!~+E7=dkt&)qpb*iRs}Gphy-eDF(C2pmB`Oh}UXhH%2B07!RnmtkC5d*i zcC^Uc4X$P^w)?3%op07zEkMNjN+>hq9^V+NTR2fQDQa#Y&BvZu1;y+oIJ3vJ7CU^~utXqkLb7k1+)r{Pg~(VXWoEXq3~jTBwEiDa9UfUb zsNFt-+zx`RV8;;YXOB80ifxJd`d~>`Lox{4iZ!WS zS=AwAw6z{P;mPKxwTB$tVj#V!?+}u-sMIra{|PKag{zuwXC}bNKH#yk4TS`SXzL9W z8#XCbHMiNJwzimk$~=ZQsTAGV+h56^)VT>Q{F;fC?9$eqI%@%+O$2H2Vuz6WPu-=T z-3Bdas(AI?xQ#Zdz1hds5h{s%nU%82)cEpZ>{Xet_08RJA&i$trZ!n)tGWu!%3w-6 zuCeh6s;~Q5we;wbb9;D{#Ku^gRq!Rck`P%W}W}O!BMI23vX&bZ1`k0(3W3m6-$Bj}exXv`fxj znnKsR$o2$)EbhH9{=+b=`oeP8SJ_9C=>%IZ?~mv|kR1VJzi33rO47DOxl=YhkAX;T zAb{wLxd6#b;7bxi7SyF}GVE3eGnS5XjB$MZnQKPwVl2JqB6ZGL5wz1pBO}of!}><9hmz6(TBT zozW9R+u_tlMrDNxgyJsNq2{cv`_9bQ1-v(YnN|EU(@CdhcFGNm*iM`J3qn#LySWxw z(t|w#+W8nHDw~s+%yRd0*nXD-N~p?E?W3JZ*CL3BzQ3E9%$3izOwi}C_L8(WtABSE zvMq){%+R(OMyi?*tK1N)C=A8nDyo$=X9_tEt0;AK^Ii``*6?i~_zOfN`U-_ftJtqg z5rt~mH-a{rEz%~EEhZkrhe~B0hc*s-xNXZDFWXDemMYcDmgJG*@BYA!7Al9{1HD;P>%}J4=uBs8DIzWGXJ61_S{M}-)q~5>(rh2fl*602C z`TY537x`7hID{*!ay=DOS?iuxteaWb$8s^Xn4v0-2EDHp%43)aua9*;%oX=FLm-gj z7`3YRHRA9&30n9ty9mHB`W^O7bsu0zOALBS7uI)>xinSnB znMy=VA|ry3n)eQ8sjw=Enlu*`s7o%Y;Qe6{2`7cI%2bZw?z-+=g?pt!-_Ao_sz}kO zj4RH=nYkj(y%Amext;BpQ|WwDuc+mf_p6G?wc+9JYEEvNg9w7Gr2jKA(Js!E1H2}ENL!B{g* zuZ0YDLKFKO-0+p2Nz}9lwi3jOwOHiguCC_Fl|bIt^Ot}6`}_O(=O2GW=J|fq zs?X04Dg5XE>3>`mkGEfb|M4j*Fd=9v597FuHVQ=3awL%Afetcfn{p~~TJO{JJy0;_05RqtC`m6z9=dbpdr^qb48{qUd^c({r9cA$u|3JP|YZb3wj z!`E6AxLRdGnYD?Js^}p?waG1@BHCWq0s%!)eEHJBG@Au4mZI3Z~M-4N6)h~?QLgURhaor1tUmEepC$Iu ze=ji$FhQr^fv!L+5bnLT14(re^*JK~a24&94*;~MPJ1Dc34rK<*;d5YtfE`Gg+ijZ zR?N8+I)-fom$wZ|@0p+1jVywy;@y5p5~V}uOrp#oVv?wW0P12YDEQ&-e&2UQork+y zZW=iRh*%;h_L>i3jfj&DYY4;k{+&Ye`e05R24EZ7o1G9%Z zBDao0f*mg1uP^C?H|phS=+|ohY0?10j!r2zwyw<=J7m#@N^Kg!{waC{-K%L9>-G0= zcNw4+Mic2`(;cLF869Ll5ZLtr*o_kX;B8}`nWpgw?poK@fZ4w zOwu|Gg59Xn@82y)^*Fv6_iXo5D?=SQ0qG{4CK6HZe})%DM5#S2Lpr@K+kVoYbJJA% z71E2MtYjtF+lcJ&gLLhPphczjO@ItWHSqXlT6sYk(27()%{uT>FaJC{Jh<~p`>NTh z(hISzE({EuGRdtw}$x?QUDN(y7M9sIsXVXEB zhi4$GOtq`T!RqrB2y=nRTA}E7D=I@(vDZ#2g334!Gd+gsoQp+uwFaF6%%%@;Q{5=7 zJM7C!rHfTXnufr9Ayh#6FgL3#GlOEyEUFJ1?!Ng$)|Wm(cdTXiHHXQ07zwRiDx@k9 zT`T*B_MwmWL)CMwcE3G*gydQonXS6@UZ8Inb5*wStYaf>>NE((@Qgek2Z3C5K8B#? z%*;AYC+M!F?Q`U-=}EK7RnPNGa;@x8-uXDHIPY2e0n+}CCd(*`Hpc5j$F62e3za&C z4wW{U=W0i!u&`E%!3704RM;(*mMh1w>WGv&nUwsh6)2~OHAPqVHD(Z5m8#-CqDsBm zhF4YMCcQ!!u3Auu$j&xWC0F)Is;a=s!pdwz?25V8wBh%&nrF<)ENUXxGKHB|p+HqY z-P}7Xbw8&Fb49Vn;i{4)=2n?*k_k0c@wdmX=llCOELNHcm!i@Q+I58LNu>ZrEwKZY z8Q1c0xNC_x=QVDa_qEwxS5@H}AYjLiO`Bz+XMjqx7l@U~$N>rJ^-TD)2x0IP6@j4OVb#6fJ zH8<|K+r@@0b>p7*Y2)p29IT&pXS4iYDJ^T5-CWHZ8hy%*Sg{1+W@@@34!7ZMA}b>^ z0o=2nJ*X@E zI@EKOx|?Z5yUWZBJSrn9>o^P|=DO~v;*O1G%#R-}-^EIKIErIxL}E33 zAAF^@+Dc%6>E@0CEq1bxy!Z3^{oj9QtovGPh5hyh!H?g6&SOTVosY+PzJLEN?)Sak z9*3LF=Q33vSqf1%Gz@m7svO7B zdUIzK=XHyKA{kXGxz=@G?mmvQnNldknw^~N#6%@C+3i`b+T%36Dxyz|CJMJ+1)E7# z_KJvLZ*^LS%GdS`JL%1?y<~FRj7>x&gAis!CB|VWx$m8%ibzv8^D3-ZokmxawGyZ? zPA0outIJAu;4n+v_FT~IEJ8y&Q`LN^Y6i@-L0BTPqK*M(K}B8IZGy^J4XE1y8-2;f zFQI@{#cC83Vr7GTTf%p@Se2C^SB3}Y7geVr&O~`EAAEXf* zB*ZZ1YS_nKovm1F?FrOGQZhLX>uN=08SX7O zCPM%1&uT)V4cj zW%UVR`?pz*c$CiA?;)kfZM+bydqjKgK$N z1u*(i*je^%`4Q_zH0k#29!{}ur+t9jwv?}}_3Ikgu-Xh+PZ{l|T7X}P>WVY=DdV|+em1WeUT zMD==x2z*$sY{4d0_cAadK&rq^GD)fPuvkffDJn8cI&|3*h6s95A&?<>e>+4Z*1A@R zpy|}PU#95Uo9sm;GTFP0P6DA#NL6O)dlAw>QK0xZ4*;1s&I6D!j^S=9l|g323mzg|BVfNrLd?PZ24iR>BhIAW?Kq|7lt9fW|dskF0T=0>nL`8~&F`WSVv4j0q5>1r%2ViArtL zkob|GQ5nO#x(HEqo{#Upd;@uXeylq>>$ch%OM=@$GNFyuJMzi}Oyf zuGw^dz3x!Oah^$kUP}}zF7EfW)R63YXvxga=UosHD@H8%c{Zxn-IToNobh@8AV@I! zRjH;XDztC^!{5|LEQ$tKo`*$B!2R3z{?CCs?;w2L>vZ*TWX4)W<=ey5<@4vvOM;h=AheO?JX{ul;Z}iR9t0 zwX8ryv?TjPqU|BH3ab0c0IKEe=+3)jnTikVc}zr1Ww`D3;0;VtKfK+n+%=r0rmVHYX(}S(ZZUJN z_4)bPZbwlC%U$m|>-Rt3eyxo8_rL$5Y9%42B6xd@$YiA-_Wu1n*4;QLvdqM7b$^`4!+d~Fx@b3-x5rp35?Zga zfnKkn-H8H>;i{U59q$B&8%zk5Mwgkry_pD}&u3fB)lC$I%GyP>wzcy%_Q?~fQrpdCRdo#S<1Suj!B#O>HUS=P#y+kV(Y{c1 z2!=b@L&%02sM$D}83<(brbsfD+31t;%Yp)6Q^9)Y(=Ma_3fWKRg38eDleX>CXdcHn zM)e^Aj0kt{)^w0)?WfvOy*(eQUtVBtIFMUrcHmP)8nqCW#;VFx<=RbPm2`7;Q*|g} zPNFiipDbc3kjUyu-pscwvC%C3jS<4*u*^bcZyJjbXce1%1>%}(kN`7lMWC&BRHC9P zC;K=Ep_uMguKpy+*PfNKgD2Z#4%L^>TILEr+< z*@blzcxIEp06ElauPWIbN_TP7dEaO_yhw_eYpl%5yu!_nG5l~fn{&>qaZqs{<8hjc z!&S_RsHpq8dpcYhWa6d%NY6Y1Fwv+8b}d1&GWG}4Ru^f;+i@Ny&>^uhTDc~NsSf8M z8AViM%$v&P=Gabm=^TfOqWio=iEQ)~0Tp?i2Bj1qZ=+L!x5!-4hBbBX_RTT8Q#h;3 z?soWLGYD1CU5?Zi+=*B7sF}CpmSu^A2uh%`@@rV_S-iKcQnfRL#geX*Bt>NPo?=T( zZRV0aKP%$Z1BrHT^$~H;VEY*)BBJ_54(O>#HslrVUvLKqAf~8#dD!tX6A6XMM#=6U zUqm|dze_e@+d?7O*@69pZDnE077CS(8043+g4l6}p2M>p7P1YAduuNnOW9HeT2XG! zUpoLgY$4WKgET}E;BL#_`3=16`?8;&9Wau%5bSixwqdjcEc-Xnt=EWZ3qn2rXBA!w z(CahCOS%Et^U+-rCh{t|=qG!xnC}^C$bu6?7@W%ef-`LwpITqJoBe z;_D{>KvCpIx3-I+vwQqXnn+u9dw_h&LM#%moyX?b^uGnwoj*6#4w$^09qs5Kkg5t) zuKdytNXBBUZ35b7ErAY~t(WwP2iv(Pjp1vk9>6_&lQ0p{*5+Q}o4r^60-Xpb><4V5f}jX_a~#H;3J zKSguRIs59beVp4R_I)W9(eL6v{`h!2j>maKuLM+TlQP@+*p=<2n;o&GwZ(k%aSWTw zGJ>pQ9O8nD)h)AXZh+~1rJ8VMfi_eiEAkln7_LgGa`SKBA9Kc!pI1>j-A2+(6Fc(~ zEC2ZY2LzEt(U$>A+%=0r^sb_!U~Q8GwyMM7hq-2Q#ZnV%uy;G9z4@3Xg5Jp3*xv7m zs9KrP(qzo6PzYURmnc`Y{WG%6)y>?sgtamv=8PE`YuRpPs|mJO7WbN(>b%B#Gx-$FXq?&7RL>0p`}Pr7;Fy z@8vd1^$EvKvwypWh?)s2qRh~TN^=*n$(aDF+-;a9^u98QxoDy`8cyXAUD20o)^UvY zZ*Nt|x*^mqXv=Eig1Oz-%m`)1;W&h#~5!9gFHV!VqI}|j&STx{&Y8(v^r3H$$M;`;G1YrrS!~=fqr?2jNK#2DV$P*Pbth1P z`&w0H+U_JbHx-l@MAe4Sd`O|@Tq?-2C}}Fz%9Z=MK@dY_JVbP^6{;#F$KmIY0@fXn zYG#TE%*0)f$Ge;dYlsIx8A1^qL&f{Z@%i~g-5GQ{j&BcEFhhNuqEKCTGKDY_$J?9x z@KYk^g{;i=dG*Si{X9}xbE=9chnsr?0ccvo?Kpg`8S^PXR(^b3zy9)#l`B^p9#o|Q zuXhQ?;oWA_?*Jd}Vp-zm%@#TA^fBgK9m|af5d$;U1TYR0k&5gSqo}(N^J7N3J2TA) zW<<>UnN=(`_hO;F3wpf$@+MO2dV-4;PL|bqx}to5j0AF(xw^{Ms7(hvBSoR^G1E+3 z%@4~N?J^~WVo{tkTK9LiZZQw;Iv9Yx)dSdy#_>2*#oS~WfzLa>y&dN{R%tM^&>P># z7rQG3kj#w8ew&MFM7bJ(BJa8Sjc9KBXw|3CqW4=LWH#qNDZnmF4t~8nL`2xiFU53T z^LTq7=X>eOxYxZN-v;f76o0(kpGk-xM`dMP_s55+_&BPYY)e+8xrs!rgwR}bhP$x> zs>6{CR>h*3#g%?|t`Ndh<_dv`Nk+J7_aL}iukoc1uL2VHb&JYz9vSJwtP?CrAI_@# zUcdbMEmr*a$Irk2=id&0{PFKU)bYnZem}->oM%T)uaEio?cr|sb(uVV`P;Am{LlaV zZ~ywQKmYtgAFhg6ImYOWlaCQmA|c8#h6t}KNPPQt{`m9b{oO@S!RPai%*XqCRy{wj zKmPbQ9!EuQ^7f8GL^8{}gSsH1?plQmy2_6~e<$QT&(>K)OiXH}54rFA^W$UQKi!1N zbzk@A&viNrI?nU__3is_McuLM*GerT)jKcLCseX?3e^$5Q59=Oloe->v0^ttXgaB&_r*c zyZ<&50yh^0L@Tp%n{KGczWOt%qKI-=G9yZ?QS&^G!-r?4xn*QTsiJlTyY%T7#mH%X z)|&Ogy;k<kq7=10UzRt3$3JrC~id<#>O zS=ygoi3;jv{V)~xBcmd-wF5WN!!nqegjD6ci$F!}T=!pmb@W&+sw&hzjR_49=@D88 zX$+P$jKg%zQj_G~&K5=OJPymMA(B~@!B-Hbr^PG?;MxnWhN@#lxI3Aw>UueqVo_Yx zJR+GCk#P=2@e35%mJDRZUIWI;1mtjG#eK8N6g`PX<P5?sn&Hl7-P(})?CrK z9zo7@+kl@LVWx`xOz(}Q0`tD1YUTm;s(l(1m?UabFdDqlmKF4Ov4xr)8T(402(%MD?958PKzGml>sMB@_7`-EAVeUQ(di4mE{NB9 zSzrG^+6>j2O0w0QmK4Pr=pay67CWHHqJXAQ;fglrVjE8g0Dbwj68#m}QJ@QH`hR`l zKBbcAESU6HVeQ9kDohJT4M&V^%TPcf2@!YSlPIgAwlGmeCcE64%uVg7`}*t~f6eJ? zB|>5hML)6Ih!l0Ng01e#^GqJp;mHdR^$($D!$uCR)8E*IoVAKq)NA#NtmYo@xJ zb+%6xIhUxIS<^21!x2W#wEm!0bcb$#=h`(bkpk)N0CQ6+S*`}N=#C82+!v3S>KGy( zGcvQJ4K9Z=c?^Ghf2)#f&NbJZG1^N+wc|L>cYze5Q3%!S$#tu6ensv+v8EL*pfZk0qt5B``Y;z(@O*2!7;mXD1 z^n2#s17)pi^~Uo&JR)PJ4O0_#y`=CM-ZJu9*{i9~kLRvl)#JMEHVI)rDgG_j4m zm2>#MAN$~Hsv^bAmBZakcd#OuRWM)!UwPjPkkj4W)Z}{Jk&zJ!iKHKvsiyw+egv>) znfvk99(`s;#9S*y4SGbt5BI?}mx!8c1%1eQ94-dr^~{)gKF(Fqz;JU_x3yNO@7R~^ zY|G>Qd>juI+>uTGrooS)V(Y&D{Jdt&%2KsR0ja>6sVY?!*S-39L{{PP{vZi9AOl$t z>mL%`6n8!6@Zn~wXf{NoOFtrl$m{vcm;_JvZ{H3Rs7XW^O0|X?c(?HU=0eE4w=bv) zvF@b`%6Q;7e9bwZPXQj^-h_2sGm*K%RnNya9}ZQO_5AS@wWJ_b$D8MhD*AampX+>c zbL&Q6uBbvWgv@{q%WQEITemD6!z}B5ez<;fm6<5wT(gKpUfCnIl&~T03K_#F^m-R>1uD<(FRsoYyt) zi;=?`O>mhR5iwWGH^=dqGt}J1n_%3ZpJWKe_003lvEawhN|z)mBi(GxD$-3=ELO&h z;~2v=B4TDIQ!{cL1EOm!fJ~g{;jWp{&yE&hAnd+4RjHMY0=;jFs+&b{M&Sxmsh|+* zwq`UwTsGsjJ2cxLq!kr&sabCRAOvErU*w=3mny1~F1tQRe7}UEZ;Z7lfV;}to0)Am z>`j&r2u1DJzkj=*KQDZ`JI=R<4N92noZ-WtKR&L{pBWS4YKOcC>IqV4?o~?^rl83f z!k`a;l+ps*U<^nG-8{0~G*n1L#Os%bo4HvOO}m5obxa|pxaMl6wCdiZv&!837%cd( z<2)+sUiEl;ynR1ceSCcUe13eM=eg!o)fQg9egFRU{;jAcL&e$`2j&=NBImmkHY4YK z-7_AK$8oev(M0t)$Mt+ZuV-bbo0^W{?)K~V-+uiq|NO_FbKVdE%FMb$7wASz*~^&M z^6D5muTSA(EVZoU=Ufr#!(x?MFQN);9+c(^bt5ZQ3_;mv%(HZudqj!07d`_DMC4vEiHOpMv$!HxrnzyObM_*vk5sL-_tsE5SV@{%y+#N2%_{;G z7n8k!>~K)I*f@rW_I9_Gcr}T+%)KIHyHg`F)vY24htSkcvxLMwi<~P>&D@$CS>#+Z zBDD)gwd)e8#JU#&F?AEJrFO&&cdueqy@KZ?;AW5p>FubRxdDxL>KP{Hl{VbWMGZ}$ z$$gfRK2d6Wi*+0dbRW;CXf8wbH)3wp5Dk3!L4;o}WkDmfv#Om!svR1&p7bHoM-bn2 zZt6BbW-jceMu?c1FiQl7Z$w|8q8b;{2V7GT7k6L#7z$Om3iNCQL_`&-hcypOO`1&M zrmEUvQ;%;d(v&Z-<|-C46Wt=&3@tm%Bms(<>NwuM|MH7kV?RpOD%X!c|MB_pAt+(1 zGgVoArm3o4A2Q2rLqY&VMvrsu7LifansFv`g_?Cbw=pY?6Fg7vc_W7(r%NGLM1?}X zzduNR-gDoos+m>Exl#yKxGCxJqRZ-rvE`jfaQKKwRjS$+;Y}(^RDy*@;4LIW5z=7M z;y8A1j-sTJ;L2Q)Zf>TECZEwnhU;~&tg2Y&d3H#%P^x%)xS3Q|ggz%D7Yl^_{9MP$ z$8dGIS5{%XI%~x=YJb9`+f2zMbFIBcPl$?&?n#pvZN{k*mm=A?ZB?>$kGjh z*#80q`d7H1D=wRNxO;QkBcZxcpLhi;+O5U5jHq-gN1N(<2j0HkZ9IS!n+vmP8ujub z$hKdo_q+*+>;e%M$q@MqT-W2fiiqnj-q`QcUHBj`zj`le$;L*=Ht@7uA}n@zntO@O zoqoxxRwzrD1tCl%tL2ZDJ+|ud>IPA}HRasD>*@M86QW|7W;oBt$c+vieQY;kyELcg@PHU{pmYhC&bcV$Hv7EoS%A@(XHA zl?_fQb`G>XAlRUFb9V*0;`-%U=?}WESZvCtAQ=uDn-)v~p-}2L?d|@z6FMvxmQL7MWrJH;ATLJN~|Ja$H=T&IgY~~YGSL?fG`ErN1OShI__4V zpO@Nj8{_?r@62^y*V9GM$G5k)Z)DB5V@?rWF(WSKRM7gsRwAGoj^Qe3>U9=lCfcPG zNvSq#L?((uHJx8j%p@}av|pp&&MfIb2ii{|0$1^&!!0X|P&0w9C>3chfV!EFTI;^& zb+2RCK{0aQ@d#}a}?c3n20;&!T?XIG%EdDBGPRTXQ7n8aF9K_J{E zfj%Irm%znx-mxY#&D6~vha7{fT6d_cvWy(A#k!wUxY0w1og$JG0`qmycC+K$NcFdc42g#uias%CONzJIfEWQe*Ig^A<) zHv#4~sR`rhhj)Y|BGxq?17Jp}sf{+t$-3^yPh^1Uer7~f*>F=0aF{~SeG$Fb1Je|u zU15uL$U;i{dBS9kPN=%v#CWj0s5;*0eqxMRQC z`v2!PvLS_j7VH+2v|Hej}tQqnNMBI0-xq`ob`%V3b$>aSS z`5Dj8noq`5;CwsnIH0_*dm+xl=8Q^?$A~#2Vz_aw$D2bKt3>o1R>XY;!TZkga=(T zem>sce*4>RfBgQ3Dz49a{POng`jno9wpWMo$~&ugKd_%q7%agO)52cVT#tOXn_=`|4= zYbI*eyMJr}e_ z(4>i0SlWjUu&E*qq0KCPoDrpFsy0`c`{B+i6^(hb!<=pSdkJiv3OSDP{`Pj?_s5)( zX=ZBHizzjAwd~=u&7CT0y5^mg-AdK)3p1N*scJ+(zD}qBscP-3G8XAGYJ%!d4F^wAa#r} z#vmnDs&0woINU@Ej7$?1XjQg*d=DzDh*Fd4R!k9AHXErk^B^L!WVcHwpe7Yfk%1Jp z>A4&G2o&870wH~_80)e!D&d(VHWEUp>mwy)dXOE+Ab-85Ms)D6H|3y|aV zx6|8}d0n>(zP-O4qhAYHQC0Qvah>PzVY~{88PQ<~R}ECG5E0YuBqt=|K950Qt!*P( zD@?SKBFI>o5NU&Q53Y3{F3hewVez^?vm^y}rb|GA(yKU*o zL?C8XWL3FAw*U_A{wFF^A>IYVXqv-b9=8&)3jyTi0)Pm3c(<0OnKdWxi}VhNnl}8o z583X1n0F4MUk4evX16@DKn5M}Lk}ua zl3nJ~BUAfHs;xV$?J|&883mBtp4<2SP6QMhkNB01+-M1@7sH~Tz5Q);bW>W?hP0D> zzeWWH0UB`K1OKKfLd4AVOAYxFL0*K*reDf7`*+jKD}#Za?(tX5iXgg4u89(&n|aw} zMER0-WMAy16mmE4y{r=?v8r6VBf>ea?uqPgHJW_f zQcaJTW?Gy4qWw`-BOyRG=z~JhSgDFJYz5a!H`{(9HLmE3qoZf9utn#mvUWR(w7k`S zGpmyF#pP(jN{em#r)#|lY%88>_O~}9O~u?ZirZ&gy;F$HMulWnl@vINs;1_Z83}V{ zH%%B&h>Y_%&Y^QowAkHJ_+B!RL713`i>gZn=S)D(ChTX<8Rq)@oOIPgYu0(Fn3?L^ zp@N!~eN=F>_lIWTx&ne>zGjwiMHVz!qcJX~Rd7GteT&Vl1cha63e{&l@|NLWKml~d**IIYP zZGyvv5$IA;vx>OydzdxjXRgdhbt__4h={1ND#45jQ>^H>TjUPuG~pHddDWUJA>wB4 z;@XSuoGX0{f!y~p6IEGRxypw{7K3k(Bla;sKA+L45D|%hnGW|P*S*w7&PmpFak!7e z@8=9qfhrthxJtwls+p3>tlqCwF@ftY(A~8n6*RN80NQEDC)Y4 zL(~R^4p%dA_u=jI$*jQEAKQ7mm>ro>_h-Mq1)}b%TCwcl{Jisqy3QG_RLXH4#r%BcI0P)-p(+`f zMRlEbns&T`3W>RVsEEW28wMbjw+0(3ll zUU$wM$J=>+D~v3IO2L9Mj?rzhcAhyW3gQ}>5qD+8ib{$ylioW97Bfu%)9d-U?)7+o z2gHZnS3r0S@1HPKy6W+IrVTkBCj!r(ADQ!UsOR|Q*I%C3_4)anRh%`WRB;YFA3j&A zh>g({6?d14>x#^IKFocKicm7CCccr5b=|8+`EG$>QB?cbBZ?}h36r1CoIr^Bh%qKQD!-YJ(a#xVm;ymSjYknS9}lUVDh-rRi8d=LtGOJ=8=Y!qQC0Hv6 z>M%9<*g+a~%_=vHAz}v6j^Rc!D~h=1B2c6cuPSy<%(T!k$rqc@t!+*%z;4iRFB4RH zO-(@-bl9oqoUt-~dmBZ3{P?IS71hIkJ;&SITV}vCD*ycB=ePIwx9{Kn`M>dz=1fqI<2c?QW;eQSK=&G4R4anQ8S`%bVg*8N}qxBu!s=A4iB6GjA8 zCAQg~YsEN+fYSVb~#Nhe952Lreu2k4G%aiptdq z;$c?mWKmLgfnLq)dEZk6+ZC{z#^`RUHgu>Pi|&@06&VpLZlQE>l$!%Es|s#1DB$Mk z<5$0~0nzr;-!;Sq;q7Lb*0R3g(8S0|Hd7p4-*5YHxMS zZ9{4LPggawN`dGwWx~u`-=U&dBBcU1Yuuc=R}qbI+=*BG~xl zHs|{o85OG-Q&h9k-9*e>B35-EQ03z@3RqiXmX?Gvx23Vl6p;CDME9WUtq? zK>!dcP1R2!^_q)KDUk|fGq zAUYnZ?nSJq>p9no_Bl3zu#Frddk}p&(ZtOPCDsaEUn)eDnz(hbp>*Z&%PF90Qbe-= zv2(M)%cs_#gUhD)?9KD8!`K~*kOs#ft0$ax*h5Ssnt4PLrgFG#=|Ghf?oqJ7=!XgF zHRQai1c45Xn+>Zf&1&4;*R%;VccFi-9k>A72bO!vB^zws>+O;?&ri~Id( z?v*--cC|FpLe+rn-N){A*eMcu*(Ew7(GtmU@6WgE{rW4eYAvV-9+24&QrljShW)j5 zV9(pHH9AC^P@9tdN*6Wd>x1jZ&2FM?S39w-$|BX@+(rfg?YP@mmJP;j_XlL3liFB7 zRwX(il3OEaA4y-Xd~N$TW2Xgzj?475ClKo}6}0V94R1D)u2t*O*lyo|sHkboR0(Wag6S|ToK=Xd3)r8m7t2@y5_t;=JT`nM(^*B^E?=f5%3&GE-bdF%C=7_QD99T193;%mImB znwcHv>4zgLLo;Wt1y)TJ_gEG7b)GCx#yQT@Y}P7bK>9&xS`ju(vP308SW)D79A;Q^ zR)(l{@w*7rB%=UHh7e{Zipr#GpGdEdt5GXOj>B5g64h~dFHHc6nW&FQs1H*0eE9Kh z!z;2F^O_A-T(#zXgTqkE#hiDW(0QE0iXuABA>N#NF?TVmNHSNfm`hdt@IqkW zIadl9OSPW&{Prf_-rmp0F^&;yef)e9%)(q@qciM~-NA;aboaM+={UKXe*U<{Eh0&{ zS}EtOF4fvTcNOXG%jjvXnb4d2Yi8F>05Hwsj=VL}R^>R3$K#Q;sxsHAsD5e3S_1g! zm7i2$4^V$Ki0!&DZXYT{#Mu}t!CI*X6EwcWz>Ty;iI^!Nl0`E$K}GalYh{Q6S~Z`~ zwN6R8X2ksYA*2gZ5i9TO2~|SJp$cZuhTQiQ+Askzqfj+QZ%W`U>(1dO54&eY=)89o zA|Va>F*8+NGh1k3_e}z3+Am`@T{GMyBFEv{D`iOMkRNZ4b*D%j=eR!SKmPU4Z{OZl z#9Hy|uivlF`S$+)>-TT}`2F{_(vmG{onuB>vNuCR3I|n-_QHr zGs)Ze{nuaq{`v9a-<3@D^X>tS(RD#%B-$Plnk>qJ3a(-@NXPY zRn-bcWUTCas{cbkj^QNl>jio(7IT;i&4v}_i+&O-j?;Pr$=X$tYt0o?)rv6nW(~Nj zxv%?f99SiE_%V+Ae(uFJz!EiM_e8YJ)>-J<{fJ*7|5#H%g^IySas}L)nmco+zstz=6SNfIL%d4-MK-C16A#IMTf)DGq5fQK|Gu2GMT+7{=%%Yp7SX6>kQB%oE z?k|WL+p3+J()e^iZ&R6)%pM!Nv8=^`_K}k`ccPfw$A7fPoNJbfGBZom1;ru4LS)5? zex>IOl1Je@Q9%K9V>^qeb**-~nD%Ylb1C;48T}?8m2P$nGnF>hi0oEm5v|yj;CD9N zovU`XMO8DoW}ulY+60!$TB5q+=aGTxBaxX^@#Ew2p%vBHXB1d9Z)V7GXhe}vkrhdn zs(Nc8rYx@P5f&@Bx6Ku5(lrF4imDkUfI80OVLC){&$%K_A2Cz3iH|kRb0%!OegDR& zJ3b>SlW&I$a9^`W&^70AjEwg1LO?N)8)LcQeRqoK%8ZDJumw~DQw?j^)_B=n=AH4G#hQK-e&U)Mqz@Jcf%x85TKC>yBA?Nq`3 zAM;&BsXMgN&Jf@w<@Bx5G6!CxX-6blQYlhZvkd@{7Gu%)4(yl%L?XITsBdCal@H5o zum+NuRXyKVmF^{Hhhbi+5~5uNX!It#C4wZRc0(0jjEUFBrfgRZK_E%@o}^57`v$6V z<9`64GD})UrX&F=cNMUrM0>4+Oq#;G6p0+B!{l^8u&RIpBv+V<4;gN%8if@}FcXnL zr9%5FhKTJpYZ2{XS-(0q=c>%ywWv^4u|wMg2w=DlRVcC;5icK1J0;p{3y>9&M$}fu zx?#;tBeJTzb>$Y}_fLctp~y<2k_}?4$SexEBC1pb&*!Wa|HH4xukT(};!4PMMP#Q} ztY!rvD%Uk5DIzgbqCn~Hq+=Y%W3Y-Cw|2mE#;GEeJv=!pR0Lhg%F>LrScM&3DWyQQ#i4Iq!MdkDJNffe@u){NH zDzUD-^1iNnt;R121W}BrjOX(sYkNykWhzw}3r#?Y$Of_m6U4plcCr^J<~{_)wW6X# zq=Z$ggPpOGgu7*yySoDcSM@_8sfzO$$IytCDOnWOrdb7`rUp{hq`LsJNBt~_iAyXh z;A1dp3TS0kL+Qq0l`Db`<87p6WR*d)-0T>>B9pBGq?wp$^Tq5K+87pNBy&|CHir%M zgU}LFA5|EqE0oZ;U%aaBInC5WS!L*QvxsEfON6o;#|U!*ldIpw-KH3;OC=mYyIwLv z1SLM)x*KR5C%EFC=lOX1^_vj$vfy$*bFQiqqNSTwN-GP>WGIjc9mC88_V)fz)XGQP zbKaL|#!L}0e@!lK5g2NUikXk&VAWa)!~5Z8vhEPz7*5DsAxur zcT@2(4wA7Nz;exNDNA)1s72I$Cy3*C5PnbOT93CwO(DFlXRbS9o#&{`>oba}JD9BP zUSwp(_3>vN=lM7!)dk0jh!yT*&E!BOBjLv|vvsW*6IDJe=3?q``tw>@>EoDD$k$uB zZ3|V`oo;fkY|0)WMNyQSN5*}x-2}f96GebzJG8I$nR|x=Rvc2sT zDf;lt>bl>iv*D|d3qrz4T^VLOD0{CQB&()WTeTrj(erI2(4Gxdp@0HYIZlJ@5}mAk z{`j}bEJ#GD*l;6Y2B_T6r@6VG=EL4x94jL$n>1WNCCuT5^H4pYVwvnSB3P>EXv!Ea zX1StIS6wD-Y7r$6KfJ4(x72gk%b-pGs@ods1PtBiF}|KmULK*Z+53x4HRwaK_vF+Za~CagH$_$8lWGXOAOm=5ZY7 zw{Z`@<_(GG^>eM8sONpRrgn_Sx@J&UPK3QZh9CZ8UeC|ZwdTB0v6o1@hD%M>6}?7^wft}<-K-CAy>F2|Y^1=wHr1lf#nI;D z?XF?RI0(WH*MgZ;=3et+qsQ21k;;{|<|V)}hPlOxHpQvPaUMPMn|o%7l%c)YqH6tD zg5o~hB&z1hnURr1L8MsLJ>uLk6CYm5%G|wUrsvy9kTTJnHgGQ_)QT0!=I(C&USy1s zQEl+9Dlv7lAoSQ|4fg7-Ps$E+Wh#2_sM0426G^ufOZZow%FG)j*jNv3DzEJ&U5^H@ zQN8JL?0(~}0jO$Ich_MESjlwv4rGa`HvN8M+tnOMZipGFX4`da>V1-R+e}#Q4Y!C^ zANyIVe!e|K<@59TeBQ4^Klc2&aW(PrvHTcjVnf`8(76IYWQVFD4bkkbb$RtyCYnMZ zD%s2Z=5~tgj@9jZ=#>sDt5yb~YQt4cOl3yyk%8M<)#SN~QfpMcyl^dhOkq^p3RJ{h zCAp#?1;`kd5d_q=O+=y??&?-qk%WS|0YU;)e@rDigdiAhm9)1+*h4S#Sqed6n?I`}OI1xYgGBq4+NmggIBU7JgUwCwi40cFtWBC| zyzUDeSXFE(WqUa>UAD%;biCJw{}2O^V_OwFAvz8`t7&s zaZXfT`s-`lZG%Yvy@ZOk#fN0FR5UZ%ESXt-)0x^Xz02IjpI2NHkoNlTpn%{DJV|zv zczaPuzU)|iSlCJIwpMm>A-krs*fgK*?||rjIYU+2WzyTbmP>lykQ)>sB3)w)ZTEj> ze|MDykt}3IH;uo@LC7Nb%CpK}19ThD+ibYE`n}~xClp?07l`&Ylf4iU^tY}p8WRaO zGk5HJVkax~^@ejZxMWvW7Bi5H?IluC(TY@qnyFCKRuyZ1$f6i(Zqma5iD9ZLGcqY- z*xSQMT-S^OA@|BCiuCTcUS1w8q6jqz8Lhm@eSBlDF9a2O1{%|`6M3_~= z%w_g?ym@}E_=qZG#2Djz9HwfnWUXsG9&XN}xJwdDHQo2PsunOa5}TwJbCqOO1?rDK zf4Vd>j%~LOwiN5@lfcB_9 z9;XZ1ZB&u{gAx=HN)e&^P=i8}I1WFK?yxK$8d06!%&bT7*t{VkG*`Z)ou_{F5JRdeZDb@v2 zTRRg0&CPrq=YzXkt6H)*1*$UVeSJVuz@nNyOvZRWlSdvU#L63$5mhX;0m_VJ0)bI* z&sBL}*Hg{ieYmfTN{r!R%0^cz+|As_uwICY)!XBIJcg-$d_1F9`Km$%@OV2S`SbIN zh#jNCHVl%b2B@wTec_scl|O&{1k!z&n;OLh)FP^=u9+pOGr69(yQz&ToR3ji!@EX) zJO6DAu-50tirc-$uw$r*DrK!GGG`vHk9TMBzGtjHj+erf7Bi!GUst`HappyukOa62#>=B(Ar#NGbhSa8ekC!cVn(K`}k4<`Y<7f zLCjRO)rSBQUAU)}Io$d++9+{uYxNeRUHlLm08CMty|U|eu99&KH}^4=NdZ%1t$>O> zY~IUXutQ;!mWT{Ss+*AA2F>ib0#YTE=g*Jx?|&cTxaV>kFl*MA;aavD1v7!$W8FcsV=xdzb9#qJPJbL|}`Tp(g{q5~meO}M! z=dCL9zCk?R9`Rh)=Q>aKHfUU{idD?aw>P^!um9`+_&;ObrdZGX{{3BqV;m@(*E(Dj zjO)JQQ&<@(4yKs0qCh-9e*W?A|LWtot`!k;#pl2N!-vng3c})X9;}?#$Mx|6(hsj- z&e>GR>pB11fB)k@{iknl(j7cyZe|vXnXFZ0EyXbV_U*i9t$PY&-g~$Y@{d11-`;=z z`nU6b-Xg{1+uKozYp$5jDml*wv*m|kA&X7CUn_g4&d8W+oTK6T((_OEsH_r7MeWRR zvc>zoka4d_n3)Qb&4BDG)t)pl2Noi z_lk%Vt6M6tw=b$9O|LTdYL8$ByNsw=iQGPdjs~>l6{6>P%;%j|!wtpAIF12e&ME!w z&k|AAPFdq+ofg$T{;CQSS#(ztv8r>V6lB&IhpMhfqK11W+|>QC=7jV-Y~m)-T7)#= zzgPV`B(k*?6jVhDY;+cYh%|FG%asrmsutXhg=A(XD8sGo8>x%Os=nqL>c{xa|YV2A> zimC32bgvM_Y(=m+ox|IaY{OlLs8Hpul`G=&BIWz{4Z_TfdoF7{zz+RN6~qA|vbuJ! zvRlr;C{uOS6_u4BKpcmmDf-1e4OEedRtx~vt6MXx=VF+vsLdHvja-{7SQJH)ndKV< zz}Jqxy(*1rsaImKH~k{buTaRr;f1h8Ut@q;O(s=!=K=~}_QP((YvwB~|v-K%$t zreY$QFtcNfVm?2wKR@nY-j0WhLh_#HWB8CMF;bw~f_WQl@{U_BnE zxYoz>`Qw)NaSY{L$J_DuzkU1oxGN@w^BF_s?Vsiye@;SXIOOkzA^t0RgHDnyr(M8Y`Rny=Gl2kAa6f3*X+~A$4DO6;`FH@8?l2Rvx9y&-+;!VGfGBxgjg( zbw@5COdaI)IUConZa#d@)TEhpY<|Be1!S$2Z*OW35w&b`p*b^h-S_pZy4Ly-CID6b z{1fMRtm`h6`)Q^T38tH!Z|{)9%xGeeoDsQ9KIUCE1eVNLmlj|?G8U355)pR<&*K>8 zD&uYBnxOph{m~}JW8jY;&v}=KonxGjN6Z|;(`{b2nL;$OB6@)$nT0AhwP9xZcpR>P zl2z7eXfp2rP{}!?nX4HTfe#b)Im7*!cPZ$u*=itERJl?l-5@Mh-q&K;7*;E!c}UoA z9aNfNt`rqlTlZZ{1cKr@lwwUQxv!RZGpJq@Rfb z6UAC(B0f$Vc0cF5ml@`rDA;ND-IrxkOHv?0q?QS4(uOl;##EP>%fd1;r^Rf{{CPZ% z!*o#-qBh1c#&M_)Ft6ua*BZZ^4qcMhj}IWDa9_{!uvn21Za!2{eHq6Ps774%%WuP_ zlhIX3?K{HMMB+{x8f)b$8{@v8an#@c{NKm1U;6M;LWK-(?)qs46DzTPjqbDr$a=gGhIcIb$x8YC<7|WAqv=ci7R5 zEBl1dMs7lO`5$*CQUI8U(T(=){P}aikTZ_q%*>SlQ}p8_p!mEa7NBCL*IYmcLiTyY zTv77EXcc$g(H=G3h74xx5ma|EI;;0Ef{0ivBRVCjqMb!Aa~a2oNU=ji{W!)LtmUqA z=6$VkoRJ}>P&wbuZ@+!JeteEGa^@H#s#Nj)w=@26Q+b~F`QzjBiFGekI}c6PAHV

umb+ufB*5@_s8QghU@V- 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 z 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

<71=w6;YHR4pgyxoc9?em}S) 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℘F1SY2;fSZt7!3tl?- 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≫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 a{{I7gQcglq0f$up0000 settings.ClientExePath = value); + changed |= SetIfDifferent(settings.DatFilesDirectory, clientDirectory, value => settings.DatFilesDirectory = value); + } + + var packagedServer = Path.GetFullPath(Path.Combine(applicationDirectory, "Server", "ACE.Server.exe")); + if (File.Exists(packagedServer)) + changed |= SetIfDifferent(settings.ServerExePath, packagedServer, value => settings.ServerExePath = value); + + var packagedMods = Path.GetFullPath(Path.Combine(applicationDirectory, "Mods")); + if (Directory.Exists(packagedMods)) + changed |= SetIfDifferent(settings.ModsDirectory, packagedMods, value => settings.ModsDirectory = value); + + return changed; + } + + private static string? FindCompleteClient(string configuredPath, string applicationDirectory) + { + var candidates = new[] + { + configuredPath, + Path.Combine(applicationDirectory, "Client", "acclient.exe"), + @"C:\Turbine\Asheron's Call\acclient.exe", + @"C:\Games\Asheron's Call\acclient.exe", + @"C:\Games\AsheronsCall\acclient.exe", + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86), "Turbine", "Asheron's Call", "acclient.exe") + }; + + foreach (var candidate in candidates.Where(path => !string.IsNullOrWhiteSpace(path)).Distinct(StringComparer.OrdinalIgnoreCase)) + { + try + { + var fullPath = Path.GetFullPath(candidate); + if (File.Exists(fullPath) && SetupValidator.DetectDatDirectory(fullPath) is not null) + return fullPath; + } + catch (Exception ex) when (ex is ArgumentException or NotSupportedException or PathTooLongException) + { + // Ignore a malformed stale path and continue through the known safe locations. + } + } + + return null; + } + + private static bool SetIfDifferent(string current, string replacement, Action setter) + { + if (string.Equals(current, replacement, StringComparison.OrdinalIgnoreCase)) + return false; + + setter(replacement); + return true; + } +} diff --git a/Source/ACE.SinglePlayer/Infrastructure/SetupValidator.cs b/Source/ACE.SinglePlayer/Infrastructure/SetupValidator.cs index 30413ed6b4..e7e92dfca0 100644 --- a/Source/ACE.SinglePlayer/Infrastructure/SetupValidator.cs +++ b/Source/ACE.SinglePlayer/Infrastructure/SetupValidator.cs @@ -18,6 +18,14 @@ public static class SetupValidator "client_local_English.dat" }; + public static readonly string[] RequiredClientDatFiles = + { + "client_cell_1.dat", + "client_portal.dat", + "client_local_English.dat", + "client_highres.dat" + }; + public static ValidationResult Validate(LauncherSettings settings) { var errors = new List(); @@ -25,12 +33,29 @@ public static ValidationResult Validate(LauncherSettings settings) errors.Add("Select a valid acclient.exe file."); else if (!string.Equals(Path.GetFileName(settings.ClientExePath), "acclient.exe", StringComparison.OrdinalIgnoreCase)) errors.Add("The selected client executable must be acclient.exe."); + else + { + var clientDirectory = Path.GetDirectoryName(Path.GetFullPath(settings.ClientExePath))!; + var missingClientDats = RequiredClientDatFiles + .Where(file => !File.Exists(Path.Combine(clientDirectory, file))) + .ToArray(); + if (missingClientDats.Length > 0) + { + errors.Add("The folder containing acclient.exe is missing required client data files: " + + string.Join(", ", missingClientDats) + + ". The AC client must have its DAT files in the same folder as acclient.exe. Copy the complete client installation to a writable folder such as C:\\Games\\AsheronsCall, then select that acclient.exe."); + } + else if (!CanWriteDirectory(clientDirectory)) + { + errors.Add("The folder containing acclient.exe is not writable. Copy the complete AC client installation to a normal folder such as C:\\Games\\AsheronsCall; do not run it from Program Files, OneDrive, or a read-only archive."); + } + } if (!File.Exists(settings.ServerExePath)) errors.Add("Select a published ACE.Server executable."); if (!Directory.Exists(settings.DatFilesDirectory)) - errors.Add("Select the directory containing the Asheron's Call DAT files."); + errors.Add("Return to the first setup page and select acclient.exe from a complete Asheron's Call installation. The DAT folder is filled automatically."); else foreach (var file in RequiredDatFiles) if (!File.Exists(Path.Combine(settings.DatFilesDirectory, file))) @@ -79,8 +104,35 @@ public static ValidationResult Validate(LauncherSettings settings) public static string? DetectDatDirectory(string clientExePath) { var directory = Path.GetDirectoryName(clientExePath); - return directory is not null && RequiredDatFiles.All(file => File.Exists(Path.Combine(directory, file))) + return directory is not null && RequiredClientDatFiles.All(file => File.Exists(Path.Combine(directory, file))) ? directory : null; } + + private static bool CanWriteDirectory(string directory) + { + var probe = Path.Combine(directory, ".ace-singleplayer-write-test-" + Guid.NewGuid().ToString("N") + ".tmp"); + try + { + using var stream = new FileStream(probe, FileMode.CreateNew, FileAccess.Write, FileShare.None, 1, FileOptions.DeleteOnClose); + stream.WriteByte(0); + return true; + } + catch (Exception ex) when (ex is UnauthorizedAccessException or IOException) + { + return false; + } + finally + { + try + { + if (File.Exists(probe)) + File.Delete(probe); + } + catch (Exception ex) when (ex is UnauthorizedAccessException or IOException) + { + // A failed cleanup does not change whether the directory accepted the write probe. + } + } + } } diff --git a/Source/ACE.SinglePlayer/Mods/AceServerModProvider.cs b/Source/ACE.SinglePlayer/Mods/AceServerModProvider.cs new file mode 100644 index 0000000000..176c973b86 --- /dev/null +++ b/Source/ACE.SinglePlayer/Mods/AceServerModProvider.cs @@ -0,0 +1,91 @@ +using System.Text.Json.Nodes; + +namespace ACE.SinglePlayer.Mods; + +public sealed class AceServerModProvider : IModProvider +{ + private readonly string modsDirectory; + + public AceServerModProvider(string modsDirectory) + { + this.modsDirectory = modsDirectory; + } + + public ModType Type => ModType.AceServer; + + public IReadOnlyList Scan() + { + if (!Directory.Exists(modsDirectory)) + return Array.Empty(); + + return Directory.GetDirectories(modsDirectory) + .OrderBy(path => path, StringComparer.OrdinalIgnoreCase) + .Select(Read) + .ToArray(); + } + + public static ModRecord Read(string directory) + { + var metadataPath = Path.Combine(directory, "Meta.json"); + if (!File.Exists(metadataPath)) + return Malformed(directory, metadataPath, "Meta.json is missing."); + + try + { + var metadata = ModMetadataEditor.Parse(File.ReadAllText(metadataPath)); + var name = ReadString(metadata, "Name"); + if (string.IsNullOrWhiteSpace(name)) + return Malformed(directory, metadataPath, "Meta.json has no Name."); + + return new ModRecord + { + CatalogId = ReadString(metadata, "CatalogId"), + Type = ModType.AceServer, + Name = name, + Author = ReadString(metadata, "Author"), + Description = ReadString(metadata, "Description"), + Version = ReadString(metadata, "Version"), + TargetAceVersion = FirstNonEmpty(ReadString(metadata, "TargetAceVersion"), ReadString(metadata, "ACEVersion")), + TargetFramework = ReadString(metadata, "TargetFramework"), + RequiredClientFramework = "None (server-side)", + RequiredDependencies = ReadNode(metadata, "Dependencies"), + Priority = ReadUInt(metadata, "Priority"), + Enabled = ReadBool(metadata, "Enabled", defaultValue: true), + InstalledPath = directory, + MetadataPath = metadataPath, + SettingsPath = Path.Combine(directory, "Settings.json"), + CompatibilityStatus = CompatibilityStatus.Unknown + }; + } + catch (Exception ex) when (ex is IOException or System.Text.Json.JsonException or InvalidOperationException) + { + return Malformed(directory, metadataPath, ex.Message); + } + } + + private static ModRecord Malformed(string directory, string metadataPath, string error) => new() + { + Type = ModType.AceServer, + Name = Path.GetFileName(directory), + InstalledPath = directory, + MetadataPath = metadataPath, + IsMalformed = true, + LastLoadError = error, + CompatibilityStatus = CompatibilityStatus.LoadFailed + }; + + private static JsonNode? Find(JsonObject value, string name) => + value.FirstOrDefault(property => string.Equals(property.Key, name, StringComparison.OrdinalIgnoreCase)).Value; + + private static string ReadString(JsonObject value, string name) => Find(value, name)?.ToString() ?? string.Empty; + + private static bool ReadBool(JsonObject value, string name, bool defaultValue) => + Find(value, name) is JsonValue node && node.TryGetValue(out var result) ? result : defaultValue; + + private static uint ReadUInt(JsonObject value, string name) => + Find(value, name) is JsonValue node && node.TryGetValue(out var result) ? result : 0; + + private static string ReadNode(JsonObject value, string name) => Find(value, name)?.ToJsonString() ?? string.Empty; + + private static string FirstNonEmpty(string first, string second) => string.IsNullOrWhiteSpace(first) ? second : first; +} diff --git a/Source/ACE.SinglePlayer/Mods/AquafirSampleCatalog.cs b/Source/ACE.SinglePlayer/Mods/AquafirSampleCatalog.cs new file mode 100644 index 0000000000..3dfce1ce41 --- /dev/null +++ b/Source/ACE.SinglePlayer/Mods/AquafirSampleCatalog.cs @@ -0,0 +1,178 @@ +namespace ACE.SinglePlayer.Mods; + +public static class AquafirSampleCatalog +{ + private const string BaseUrl = "https://github.com/aquafir/ACE.BaseMod/tree/master/Samples/"; + + public static IReadOnlyList Entries { get; } = new ModCatalogEntry[] + { + PortRequired( + "aquafir.access-db", "AccessDb", + "Adds administrator examples for moving online or offline characters, listing player locations, and querying creature/login counts from the ACE databases.", + "This is primarily a server-administration and mod-development sample. Its moveall command can permanently change character login locations.", + ModDataImpact.CharacterData, ModRemovalPolicy.ChangesRemain, + "Turning it off does not undo character moves already performed."), + PortRequired( + "aquafir.auto-loot", "AutoLoot", + "Automatically loots creature corpses for a character using selectable Virindi Tank-style loot profiles and a /loot command.", + "Loot profiles choose which generated items a character takes from corpses. It changes server-side looting behavior and does not require Decal.", + ModDataImpact.SettingsOnly, ModRemovalPolicy.Safe, + "Safe to turn off; items already looted remain in character inventories."), + PortRequired( + "aquafir.balance", "Balance", + "Lets you replace many combat, healing, experience, level-cost, critical-hit, rending, accuracy, and damage formulas from Settings.json.", + "Each formula patch can be enabled separately. Because this can change experience awards and progression costs, a character may keep gains made under a previous formula.", + ModDataImpact.CharacterData, ModRemovalPolicy.BackupRequired, + "Back up first. Disabling restores ACE formulas but cannot reverse experience, levels, or item outcomes already earned."), + PortRequired( + "aquafir.bank", "Bank", + "Adds a virtual bank for configured items, pyreals, trade notes, luminance, direct vendor deposits, and optional death-drop rules.", + "Balances are stored on characters. Players can deposit and withdraw configured items or currency with /bank, /cash, and /lum commands.", + ModDataImpact.CharacterData, ModRemovalPolicy.DoNotRemove, + "Do not turn this off while anything is deposited; stored balances could become inaccessible."), + PortRequired( + "aquafir.chat-filter", "ChatFilter", + "Filters chat and tells with configurable blacklists/whitelists, censorship, shadow bans, gags, and temporary bans.", + "This is mainly useful on multiplayer servers. It requires the Profanity.Detector dependency and careful moderation settings.", + ModDataImpact.CharacterData, ModRemovalPolicy.ChangesRemain, + "Existing gag or ban state may remain after the mod is disabled."), + PortRequired( + "aquafir.connection-limit", "ConnectionLimit", + "Limits simultaneous connections while allowing configured IP addresses or landblocks to be exempt for bots or mule characters.", + "This is a multiplayer administration tool and normally has no benefit in a private one-player world.", + ModDataImpact.SettingsOnly, ModRemovalPolicy.Safe, + "Safe to remove, but not recommended for ordinary single-player use.", + availability: ModCatalogAvailability.NotRecommended), + new ModCatalogEntry( + "aquafir.critical-override", "CriticalOverride", "aquafir", + "Overrides physical and magic critical-hit chances against non-player creatures with two simple settings.", + "The ACE Single Player port keeps player-versus-player calculations unchanged. Restart the local server after changing Settings.json.", + BaseUrl + "CriticalOverride", ModCatalogAvailability.Ready, ModDataImpact.SettingsOnly, ModRemovalPolicy.Safe, + "Safe to turn off. Existing combat results are not recalculated.", + TargetAceVersion: "ACE.Server 1.1 / ACE Single Player", + TargetFramework: ".NET 10 port", + PackageRelativePath: @"Packages\aquafir.critical-override-1.0.0-sp1.zip"), + PortRequired( + "aquafir.custom-spells", "CustomSpells", + "Creates or edits spells and equipment-set spell tiers from Settings.json or an Excel spreadsheet.", + "It can add custom spell IDs, change names and effects, alter stacking categories, and customize set bonuses. Incorrect projectile IDs can crash the client.", + ModDataImpact.WorldData, ModRemovalPolicy.DoNotRemove, + "High risk: saved enchantments or items may refer to custom spell IDs. Do not disable after using custom content without a tested migration."), + PortRequired( + "aquafir.discord", "Discord", + "Relays chat and tells between ACE and Discord and lets approved Discord users run configured server commands.", + "Requires a Discord bot, token, channel IDs, Discord.Net, and a deliberate security setup. It is intended for hosted multiplayer servers.", + ModDataImpact.SettingsOnly, ModRemovalPolicy.Safe, + "Never place a Discord bot token in a public mod package or log.", + availability: ModCatalogAvailability.NotRecommended), + PortRequired( + "aquafir.easy-enlightenment", "EasyEnlightenment", + "Makes enlightenment requirements, resets, bonuses, skill credits, luminance limits, and maximum enlightenment count configurable.", + "Optional skill, attribute, and vital bonuses rely on Expansion's BonusStats feature. It can convert characters to a new persistent progression system.", + ModDataImpact.CharacterData, ModRemovalPolicy.DoNotRemove, + "High risk: converted characters and persistent bonuses may depend on this mod.", + dependencyIds: new[] { "aquafir.expansion" }), + PortRequired( + "aquafir.expansion", "Expansion", + "A large loot and creature expansion framework that can mutate generated items, add bonus properties, sets, slayers, procs, creature behaviors, and other systems.", + "This is an experimental foundation for major gameplay overhauls. Some generated items require its runtime features to keep working as designed.", + ModDataImpact.WorldData, ModRemovalPolicy.DoNotRemove, + "High risk: once it has generated modified loot, removing it can leave dependent items in the saved world."), + PortRequired( + "aquafir.hello-command", "HelloCommand", + "A small developer sample that adds /hello and /bye commands to demonstrate how ACE server-mod commands are registered.", + "It is useful for mod authors but adds little to normal gameplay.", + ModDataImpact.None, ModRemovalPolicy.Safe, + "Safe to turn off or remove.", + availability: ModCatalogAvailability.NotRecommended), + PortRequired( + "aquafir.imgui-hud", "ImGuiHud", + "An experimental server-side ImGui overlay sample with pickers, filters, textures, tables, and on-screen tools.", + "The upstream README is unfinished. It opens native desktop UI from the server process and needs extra graphics dependencies and focused testing.", + ModDataImpact.SettingsOnly, ModRemovalPolicy.Safe, + "Experimental desktop integration; it is not a Decal in-game plugin.", + availability: ModCatalogAvailability.Experimental), + PortRequired( + "aquafir.ironman", "Ironman", + "Adds opt-in ironman/hardcore rule sets, character templates, item restrictions, fellowship/allegiance restrictions, and progression flags.", + "The upstream documentation is unfinished, but the source enrolls characters and stores custom state used by its restrictions.", + ModDataImpact.CharacterData, ModRemovalPolicy.DoNotRemove, + "High risk: enrolled characters and flagged items may rely on the mod. Test recovery before enabling it on a real save.", + availability: ModCatalogAvailability.Experimental), + PortRequired( + "aquafir.player-save", "PlayerSave", + "Exports character snapshots and can import them as new characters or into another account.", + "The author labels this work in progress. It rewrites extensive character, inventory, and relationship data and does not yet fully handle houses, allegiances, or cross-server IDs.", + ModDataImpact.CharacterData, ModRemovalPolicy.BackupRequired, + "Experimental database operation: always make a full private-database backup before loading a snapshot.", + availability: ModCatalogAvailability.Experimental), + PortRequired( + "aquafir.quality-of-life", "QualityOfLife", + "Bundles configurable convenience changes for fellowships, animations, augment limits, property defaults, tailoring, recklessness, and admin commands.", + "Individual feature groups are selected in Settings.json. Some options can permanently affect augmentations or tailored items.", + ModDataImpact.CharacterData, ModRemovalPolicy.BackupRequired, + "Back up before enabling progression or tailoring changes; turning them off does not undo earlier character or item changes."), + PortRequired( + "aquafir.quest-bonus", "QuestBonus", + "Tracks completed-quest points on each character and multiplies earned experience by a configurable quest-completion bonus.", + "The bonus is recalculated at login and when quests complete, then stored on the character in a configured property.", + ModDataImpact.CharacterData, ModRemovalPolicy.ChangesRemain, + "Turning it off stops future bonus experience but does not remove experience already gained."), + PortRequired( + "aquafir.raise", "Raise", + "Raises the level cap and adds alternate or effectively infinite advancement for levels, skills, attributes, vitals, and ratings.", + "Custom progression counts and spent resources are stored in character properties, with refund and inspection commands.", + ModDataImpact.CharacterData, ModRemovalPolicy.DoNotRemove, + "High risk: characters advanced beyond normal ACE limits may become inconsistent or lose access to progression if the mod is removed."), + PortRequired( + "aquafir.selective-startup", "SelectiveStartup", + "A developer sample that can skip selected ACE startup systems such as networking, world loading, houses, players, or events.", + "This can deliberately create a partial server for testing. Disabling the wrong subsystem can prevent the launcher from reaching a playable world.", + ModDataImpact.WorldData, ModRemovalPolicy.Safe, + "Dangerous for normal play; the launcher will not offer one-click installation.", + availability: ModCatalogAvailability.NotRecommended), + PortRequired( + "aquafir.society-tailoring", "SocietyTailoring", + "Allows Society armor to be used in tailoring while keeping inventory and retained-item checks.", + "Tailoring changes the resulting item permanently; disabling the mod stops new uses but does not reverse completed tailoring.", + ModDataImpact.CharacterData, ModRemovalPolicy.ChangesRemain, + "Existing tailored items remain after the mod is turned off."), + PortRequired( + "aquafir.tinkering", "Tinkering", + "Reworks tinkering requirement checks, maximum attempts, difficulty scaling, and handling of additional imbue effects.", + "Items can be tinkered under rules that differ from stock ACE, so their saved tinkering counts may exceed normal expectations.", + ModDataImpact.CharacterData, ModRemovalPolicy.BackupRequired, + "Back up first. Turning it off cannot undo tinkers or imbues already applied to items."), + PortRequired( + "aquafir.tower", "Tower", + "An experimental game-mode overhaul combining tower floors, hardcore play, banking, custom loot, aetheria, melee magic, PvP, offline progress, and speedrun features.", + "The upstream README is incomplete and the source contains several interdependent systems with persistent character and item state.", + ModDataImpact.WorldData, ModRemovalPolicy.DoNotRemove, + "High risk and unfinished: use only on a separate test world after it is ported and validated.", + availability: ModCatalogAvailability.Experimental) + }; + + private static ModCatalogEntry PortRequired( + string id, + string name, + string description, + string details, + ModDataImpact dataImpact, + ModRemovalPolicy removalPolicy, + string safetyNotice, + IReadOnlyList? dependencyIds = null, + IReadOnlyList? conflictIds = null, + ModCatalogAvailability availability = ModCatalogAvailability.NeedsPort) => new( + id, + name, + "aquafir", + description, + details, + BaseUrl + name, + availability, + dataImpact, + removalPolicy, + safetyNotice, + DependencyIds: dependencyIds, + ConflictIds: conflictIds); +} diff --git a/Source/ACE.SinglePlayer/Mods/DecalPluginProvider.cs b/Source/ACE.SinglePlayer/Mods/DecalPluginProvider.cs new file mode 100644 index 0000000000..68a721eee5 --- /dev/null +++ b/Source/ACE.SinglePlayer/Mods/DecalPluginProvider.cs @@ -0,0 +1,58 @@ +using Microsoft.Win32; + +namespace ACE.SinglePlayer.Mods; + +public sealed class DecalPluginProvider : IModProvider +{ + private static readonly string[] Categories = { "Plugins", "Services", "NetworkFilters" }; + + public ModType Type => ModType.DecalPlugin; + + public IReadOnlyList Scan() + { + if (!OperatingSystem.IsWindows()) + return Array.Empty(); + + var records = new Dictionary(StringComparer.OrdinalIgnoreCase); + foreach (var hive in new[] { RegistryHive.LocalMachine, RegistryHive.CurrentUser }) + foreach (var view in new[] { RegistryView.Registry32, RegistryView.Registry64 }) + foreach (var category in Categories) + { + try + { + using var baseKey = RegistryKey.OpenBaseKey(hive, view); + using var categoryKey = baseKey.OpenSubKey(@"SOFTWARE\Decal\" + category); + if (categoryKey is null) + continue; + foreach (var subkeyName in categoryKey.GetSubKeyNames()) + { + using var key = categoryKey.OpenSubKey(subkeyName); + var path = (key?.GetValue("Path") as string ?? string.Empty).Trim(); + var name = key?.GetValue("Name") as string; + var enabled = Convert.ToInt32(key?.GetValue("Enabled", 0)) == 1; + var identity = $"{category}:{subkeyName}:{path}"; + records.TryAdd(identity, new ModRecord + { + Type = ModType.DecalPlugin, + Name = string.IsNullOrWhiteSpace(name) ? subkeyName : name, + Description = $"Registered Decal {category.TrimEnd('s')} (read-only inventory).", + RequiredClientFramework = "Decal", + RequiredDependencies = "An installed Decal runtime and the registered plugin files", + Enabled = enabled, + InstalledPath = path, + CompatibilityStatus = File.Exists(path) || Directory.Exists(path) + ? CompatibilityStatus.Unknown + : CompatibilityStatus.MissingDependency, + LastLoadError = File.Exists(path) || Directory.Exists(path) ? string.Empty : "The registered path is missing." + }); + } + } + catch (UnauthorizedAccessException) + { + // Inventory remains best-effort and read-only. + } + } + + return records.Values.OrderBy(record => record.Name, StringComparer.OrdinalIgnoreCase).ToArray(); + } +} diff --git a/Source/ACE.SinglePlayer/Mods/FutureModProviders.cs b/Source/ACE.SinglePlayer/Mods/FutureModProviders.cs new file mode 100644 index 0000000000..68e8e521ce --- /dev/null +++ b/Source/ACE.SinglePlayer/Mods/FutureModProviders.cs @@ -0,0 +1,13 @@ +namespace ACE.SinglePlayer.Mods; + +public sealed class ChorizitePluginProvider : IModProvider +{ + public ModType Type => ModType.ChorizitePlugin; + public IReadOnlyList Scan() => Array.Empty(); +} + +public sealed class AceContentPackProvider : IModProvider +{ + public ModType Type => ModType.WorldContent; + public IReadOnlyList Scan() => Array.Empty(); +} diff --git a/Source/ACE.SinglePlayer/Mods/ModCatalog.cs b/Source/ACE.SinglePlayer/Mods/ModCatalog.cs new file mode 100644 index 0000000000..1cafb6f01c --- /dev/null +++ b/Source/ACE.SinglePlayer/Mods/ModCatalog.cs @@ -0,0 +1,13 @@ +namespace ACE.SinglePlayer.Mods; + +public sealed class ModCatalog +{ + private readonly IReadOnlyList providers; + + public ModCatalog(IEnumerable providers) + { + this.providers = providers.ToArray(); + } + + public IReadOnlyList Scan() => providers.SelectMany(provider => provider.Scan()).ToArray(); +} diff --git a/Source/ACE.SinglePlayer/Mods/ModCatalogService.cs b/Source/ACE.SinglePlayer/Mods/ModCatalogService.cs new file mode 100644 index 0000000000..3e281e6de6 --- /dev/null +++ b/Source/ACE.SinglePlayer/Mods/ModCatalogService.cs @@ -0,0 +1,129 @@ +namespace ACE.SinglePlayer.Mods; + +public sealed class ModCatalogService +{ + private readonly IReadOnlyList catalog; + private readonly string applicationDirectory; + + public ModCatalogService(IEnumerable catalog, string applicationDirectory) + { + this.catalog = catalog.ToArray(); + this.applicationDirectory = Path.GetFullPath(applicationDirectory); + } + + public IReadOnlyList Merge(IEnumerable installedRecords) + { + var installed = installedRecords.ToArray(); + var installedByName = installed + .GroupBy(record => record.Name, StringComparer.OrdinalIgnoreCase) + .ToDictionary(group => group.Key, group => group.First(), StringComparer.OrdinalIgnoreCase); + var catalogByName = catalog.ToDictionary(entry => entry.Name, StringComparer.OrdinalIgnoreCase); + var installedIds = catalog + .Where(entry => installedByName.ContainsKey(entry.Name)) + .Select(entry => entry.Id) + .ToHashSet(StringComparer.OrdinalIgnoreCase); + + var result = catalog.Select(entry => + { + installedByName.TryGetValue(entry.Name, out var installedRecord); + var packagePath = ResolvePackagePath(entry.PackageRelativePath); + var (status, message) = Evaluate(entry, installedRecord, installedIds, packagePath); + return new ModListItem + { + Catalog = entry, + Installed = installedRecord, + CompatibilityStatus = status, + CompatibilityMessage = message, + PackagePath = packagePath + }; + }).ToList(); + + foreach (var record in installed.Where(record => !catalogByName.ContainsKey(record.Name))) + { + var description = string.IsNullOrWhiteSpace(record.Description) + ? "Installed manually. No curated description is available." + : record.Description; + var entry = new ModCatalogEntry( + "installed." + NormalizeId(record.Name), + record.Name, + string.IsNullOrWhiteSpace(record.Author) ? "Unknown" : record.Author, + description, + "This mod was found in the local Mods folder but is not part of the curated catalog. The launcher cannot verify its dependencies, conflicts, or saved-data behavior.", + string.Empty, + ModCatalogAvailability.Experimental, + ModDataImpact.WorldData, + ModRemovalPolicy.BackupRequired, + "Unknown mod: make a backup before changing or removing it.", + record.TargetAceVersion, + record.TargetFramework); + result.Add(new ModListItem + { + Catalog = entry, + Installed = record, + CompatibilityStatus = record.IsMalformed ? CompatibilityStatus.LoadFailed : CompatibilityStatus.Unknown, + CompatibilityMessage = record.IsMalformed ? record.LastLoadError : "Installed manually; compatibility has not been verified." + }); + } + + return result + .OrderByDescending(item => item.Installed is not null) + .ThenBy(item => item.Name, StringComparer.OrdinalIgnoreCase) + .ToArray(); + } + + private (CompatibilityStatus Status, string Message) Evaluate( + ModCatalogEntry entry, + ModRecord? installed, + IReadOnlySet installedIds, + string packagePath) + { + if (installed is not null) + { + if (installed.IsMalformed) + return (CompatibilityStatus.LoadFailed, installed.LastLoadError); + return (CompatibilityStatus.Compatible, installed.Enabled + ? "Installed and enabled. A server restart is required after changes." + : "Installed but disabled. A server restart is required after changes."); + } + + if (entry.Availability is not ModCatalogAvailability.Ready) + { + var message = entry.Availability switch + { + ModCatalogAvailability.Experimental => "The upstream sample is unfinished or high-risk and has not been ported to this ACE build.", + ModCatalogAvailability.NotRecommended => "This sample is not intended for ordinary single-player use and has not been ported.", + _ => "The upstream .NET 8 sample must be rebuilt and tested against this exact ACE version before installation." + }; + return (CompatibilityStatus.NeedsSourcePort, message); + } + + var missing = entry.Dependencies.Where(id => !installedIds.Contains(id)).ToArray(); + if (missing.Length > 0) + return (CompatibilityStatus.MissingDependency, "Install first: " + FriendlyNames(missing)); + + var conflicts = entry.Conflicts.Where(installedIds.Contains).ToArray(); + if (conflicts.Length > 0) + return (CompatibilityStatus.Conflict, "Conflicts with: " + FriendlyNames(conflicts)); + + if (string.IsNullOrWhiteSpace(packagePath) || !File.Exists(packagePath)) + return (CompatibilityStatus.PackageMissing, "This build does not contain the validated mod package."); + + return (CompatibilityStatus.Compatible, "Validated package is included and ready to install."); + } + + private string FriendlyNames(IEnumerable ids) => string.Join(", ", ids.Select(id => + catalog.FirstOrDefault(entry => string.Equals(entry.Id, id, StringComparison.OrdinalIgnoreCase))?.Name ?? id)); + + private string ResolvePackagePath(string relativePath) + { + if (string.IsNullOrWhiteSpace(relativePath)) + return string.Empty; + var path = Path.GetFullPath(Path.Combine(applicationDirectory, relativePath)); + var prefix = applicationDirectory.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar) + Path.DirectorySeparatorChar; + return path.StartsWith(prefix, StringComparison.OrdinalIgnoreCase) ? path : string.Empty; + } + + private static string NormalizeId(string value) => string.Concat(value + .ToLowerInvariant() + .Select(character => char.IsLetterOrDigit(character) ? character : '-')); +} diff --git a/Source/ACE.SinglePlayer/Mods/ModMetadataEditor.cs b/Source/ACE.SinglePlayer/Mods/ModMetadataEditor.cs new file mode 100644 index 0000000000..417ee0a32c --- /dev/null +++ b/Source/ACE.SinglePlayer/Mods/ModMetadataEditor.cs @@ -0,0 +1,41 @@ +using System.Text.Json; +using System.Text.Json.Nodes; + +namespace ACE.SinglePlayer.Mods; + +public static class ModMetadataEditor +{ + public static JsonObject Parse(string json) + { + var node = JsonNode.Parse(json, documentOptions: new JsonDocumentOptions + { + AllowTrailingCommas = true, + CommentHandling = JsonCommentHandling.Skip + }); + return node as JsonObject ?? throw new JsonException("Meta.json must contain one JSON object."); + } + + public static void SetEnabled(JsonObject metadata, bool enabled) + { + var existingName = metadata.Select(property => property.Key) + .FirstOrDefault(name => string.Equals(name, "Enabled", StringComparison.OrdinalIgnoreCase)); + metadata[existingName ?? "Enabled"] = enabled; + } + + public static async Task SetEnabledAsync(string metadataPath, bool enabled, CancellationToken cancellationToken = default) + { + var metadata = Parse(await File.ReadAllTextAsync(metadataPath, cancellationToken)); + SetEnabled(metadata, enabled); + var temporaryPath = metadataPath + "." + Guid.NewGuid().ToString("N") + ".tmp"; + try + { + await File.WriteAllTextAsync(temporaryPath, metadata.ToJsonString(new JsonSerializerOptions { WriteIndented = true }), cancellationToken); + File.Move(temporaryPath, metadataPath, true); + } + finally + { + if (File.Exists(temporaryPath)) + File.Delete(temporaryPath); + } + } +} diff --git a/Source/ACE.SinglePlayer/Mods/ModModels.cs b/Source/ACE.SinglePlayer/Mods/ModModels.cs new file mode 100644 index 0000000000..14bf3c94b5 --- /dev/null +++ b/Source/ACE.SinglePlayer/Mods/ModModels.cs @@ -0,0 +1,133 @@ +namespace ACE.SinglePlayer.Mods; + +public enum ModType +{ + AceServer, + DecalPlugin, + ChorizitePlugin, + WorldContent +} + +public enum CompatibilityStatus +{ + Compatible, + CompatibleAfterRebuild, + NeedsSourcePort, + MissingDependency, + Conflict, + PackageMissing, + WrongModType, + Unknown, + LoadFailed +} + +public enum ModDataImpact +{ + None, + SettingsOnly, + CharacterData, + WorldData, + ClientData +} + +public enum ModRemovalPolicy +{ + Safe, + ChangesRemain, + BackupRequired, + DoNotRemove +} + +public enum ModCatalogAvailability +{ + Ready, + NeedsPort, + Experimental, + NotRecommended +} + +public sealed class ModRecord +{ + public string CatalogId { get; init; } = string.Empty; + public ModType Type { get; init; } + public string Name { get; init; } = string.Empty; + public string Author { get; init; } = string.Empty; + public string Description { get; init; } = string.Empty; + public string Version { get; init; } = string.Empty; + public string TargetAceVersion { get; init; } = string.Empty; + public string TargetFramework { get; init; } = string.Empty; + public string RequiredClientFramework { get; init; } = string.Empty; + public string RequiredDependencies { get; init; } = string.Empty; + public uint Priority { get; init; } + public bool Enabled { get; set; } + public string InstalledPath { get; init; } = string.Empty; + public string MetadataPath { get; init; } = string.Empty; + public string SettingsPath { get; init; } = string.Empty; + public bool IsMalformed { get; init; } + public string LastLoadError { get; init; } = string.Empty; + public CompatibilityStatus CompatibilityStatus { get; init; } = CompatibilityStatus.Unknown; + public bool CanToggle => Type == ModType.AceServer && !IsMalformed; +} + +public sealed record ModCatalogEntry( + string Id, + string Name, + string Author, + string Description, + string Details, + string SourceUrl, + ModCatalogAvailability Availability, + ModDataImpact DataImpact, + ModRemovalPolicy RemovalPolicy, + string SafetyNotice, + string TargetAceVersion = "Current ACE port required", + string TargetFramework = ".NET 8 source sample", + IReadOnlyList? DependencyIds = null, + IReadOnlyList? ConflictIds = null, + string PackageRelativePath = "") +{ + public IReadOnlyList Dependencies { get; init; } = DependencyIds ?? Array.Empty(); + public IReadOnlyList Conflicts { get; init; } = ConflictIds ?? Array.Empty(); +} + +public sealed class ModListItem +{ + public required ModCatalogEntry Catalog { get; init; } + public ModRecord? Installed { get; init; } + public required CompatibilityStatus CompatibilityStatus { get; init; } + public string CompatibilityMessage { get; init; } = string.Empty; + public string PackagePath { get; init; } = string.Empty; + + public string Name => Catalog.Name; + public string Author => Catalog.Author; + public string Description => Catalog.Description; + public string Safety => Catalog.DataImpact switch + { + ModDataImpact.None => "No saved-data changes", + ModDataImpact.SettingsOnly => "Settings only", + ModDataImpact.CharacterData => "Changes characters", + ModDataImpact.WorldData => "Changes the saved world", + ModDataImpact.ClientData => "Changes client data", + _ => Catalog.DataImpact.ToString() + }; + public string Status => Installed?.IsMalformed == true ? "Install error" + : Installed is not null + ? Installed.Enabled ? "Installed - on" : "Installed - off" + : Catalog.Availability == ModCatalogAvailability.Experimental ? "Experimental" + : Catalog.Availability == ModCatalogAvailability.NotRecommended ? "Not recommended" + : CompatibilityStatus switch + { + CompatibilityStatus.Compatible => "Ready to install", + CompatibilityStatus.NeedsSourcePort => "Needs port", + CompatibilityStatus.MissingDependency => "Missing requirement", + CompatibilityStatus.Conflict => "Conflicts", + CompatibilityStatus.PackageMissing => "Package unavailable", + _ => CompatibilityStatus.ToString() + }; +} + +public interface IModProvider +{ + ModType Type { get; } + IReadOnlyList Scan(); +} diff --git a/Source/ACE.SinglePlayer/Mods/ModPackageInstaller.cs b/Source/ACE.SinglePlayer/Mods/ModPackageInstaller.cs new file mode 100644 index 0000000000..fc1fc397ab --- /dev/null +++ b/Source/ACE.SinglePlayer/Mods/ModPackageInstaller.cs @@ -0,0 +1,213 @@ +using System.IO.Compression; +using System.Security.Cryptography; +using System.Text.Json; + +namespace ACE.SinglePlayer.Mods; + +public sealed class ModPackageManifest +{ + public int FormatVersion { get; set; } + public string Id { get; set; } = string.Empty; + public string Name { get; set; } = string.Empty; + public string Version { get; set; } = string.Empty; + public string FolderName { get; set; } = string.Empty; + public string EntryAssembly { get; set; } = string.Empty; +} + +public sealed class ModPackageInstaller +{ + private const long MaximumExpandedSize = 100L * 1024 * 1024; + private const int MaximumEntries = 500; + + public async Task InstallAsync( + string packagePath, + string expectedCatalogId, + string modsDirectory, + string stagingRoot, + CancellationToken cancellationToken = default) + { + packagePath = Path.GetFullPath(packagePath); + if (!File.Exists(packagePath)) + throw new FileNotFoundException("The mod package is missing.", packagePath); + + await VerifyHashSidecarAsync(packagePath, cancellationToken); + Directory.CreateDirectory(modsDirectory); + Directory.CreateDirectory(stagingRoot); + + var operationDirectory = Path.Combine(stagingRoot, "mod-install-" + Guid.NewGuid().ToString("N")); + var extractedModDirectory = Path.Combine(operationDirectory, "mod"); + Directory.CreateDirectory(extractedModDirectory); + + try + { + using var archive = ZipFile.OpenRead(packagePath); + if (archive.Entries.Count > MaximumEntries) + throw new InvalidDataException("The mod package contains too many files."); + if (archive.Entries.Sum(entry => entry.Length) > MaximumExpandedSize) + throw new InvalidDataException("The expanded mod package is larger than 100 MB."); + + var manifestEntry = archive.Entries.SingleOrDefault(entry => + string.Equals(NormalizeEntry(entry.FullName), "ace-mod.json", StringComparison.OrdinalIgnoreCase)) + ?? throw new InvalidDataException("The package has no ace-mod.json manifest."); + var manifest = await ReadManifestAsync(manifestEntry, cancellationToken); + ValidateManifest(manifest, expectedCatalogId); + + var seenPaths = new HashSet(StringComparer.OrdinalIgnoreCase); + foreach (var entry in archive.Entries) + { + cancellationToken.ThrowIfCancellationRequested(); + var normalized = NormalizeEntry(entry.FullName); + if (string.Equals(normalized, "ace-mod.json", StringComparison.OrdinalIgnoreCase)) + continue; + if (!normalized.StartsWith("mod/", StringComparison.OrdinalIgnoreCase)) + throw new InvalidDataException($"Unexpected package entry: {entry.FullName}"); + + var relative = normalized[4..]; + if (string.IsNullOrWhiteSpace(relative)) + continue; + ValidateRelativePath(relative); + if (!seenPaths.Add(relative)) + throw new InvalidDataException($"Duplicate package path: {relative}"); + + var destination = Path.GetFullPath(Path.Combine(extractedModDirectory, relative.Replace('/', Path.DirectorySeparatorChar))); + EnsureInside(extractedModDirectory, destination); + if (normalized.EndsWith('/')) + { + Directory.CreateDirectory(destination); + continue; + } + + Directory.CreateDirectory(Path.GetDirectoryName(destination)!); + await using var source = entry.Open(); + await using var target = new FileStream(destination, FileMode.CreateNew, FileAccess.Write, FileShare.None, 81920, FileOptions.Asynchronous); + await source.CopyToAsync(target, cancellationToken); + } + + ValidateExtractedMod(extractedModDirectory, manifest); + var destinationDirectory = Path.GetFullPath(Path.Combine(modsDirectory, manifest.FolderName)); + EnsureImmediateChild(modsDirectory, destinationDirectory); + if (Directory.Exists(destinationDirectory) || File.Exists(destinationDirectory)) + throw new IOException($"{manifest.Name} is already installed."); + + Directory.Move(extractedModDirectory, destinationDirectory); + return destinationDirectory; + } + finally + { + if (Directory.Exists(operationDirectory)) + Directory.Delete(operationDirectory, recursive: true); + } + } + + public string MoveToQuarantine(string installedDirectory, string modsDirectory, string quarantineRoot) + { + installedDirectory = Path.GetFullPath(installedDirectory); + EnsureImmediateChild(modsDirectory, installedDirectory); + if (!Directory.Exists(installedDirectory)) + throw new DirectoryNotFoundException("The installed mod folder no longer exists."); + + Directory.CreateDirectory(quarantineRoot); + var baseName = Path.GetFileName(installedDirectory) + "-" + DateTime.UtcNow.ToString("yyyyMMdd-HHmmss"); + var destination = Path.Combine(quarantineRoot, baseName); + for (var suffix = 2; Directory.Exists(destination); suffix++) + destination = Path.Combine(quarantineRoot, baseName + "-" + suffix); + + Directory.Move(installedDirectory, destination); + return destination; + } + + private static async Task VerifyHashSidecarAsync(string packagePath, CancellationToken cancellationToken) + { + var sidecarPath = packagePath + ".sha256"; + if (!File.Exists(sidecarPath)) + throw new InvalidDataException("The package checksum is missing."); + + var expected = (await File.ReadAllTextAsync(sidecarPath, cancellationToken)) + .Split((char[]?)null, StringSplitOptions.RemoveEmptyEntries) + .FirstOrDefault() ?? string.Empty; + if (expected.Length != 64 || expected.Any(character => !Uri.IsHexDigit(character))) + throw new InvalidDataException("The package checksum is malformed."); + + await using var stream = new FileStream(packagePath, FileMode.Open, FileAccess.Read, FileShare.Read, 81920, FileOptions.Asynchronous | FileOptions.SequentialScan); + var actual = Convert.ToHexString(await SHA256.HashDataAsync(stream, cancellationToken)); + if (!string.Equals(actual, expected, StringComparison.OrdinalIgnoreCase)) + throw new InvalidDataException("The package checksum does not match. The mod was not installed."); + } + + private static async Task ReadManifestAsync(ZipArchiveEntry entry, CancellationToken cancellationToken) + { + await using var stream = entry.Open(); + return await JsonSerializer.DeserializeAsync(stream, new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true + }, cancellationToken) ?? throw new InvalidDataException("The package manifest is empty."); + } + + private static void ValidateManifest(ModPackageManifest manifest, string expectedCatalogId) + { + if (manifest.FormatVersion != 1) + throw new InvalidDataException("The package manifest version is not supported."); + if (!string.Equals(manifest.Id, expectedCatalogId, StringComparison.OrdinalIgnoreCase)) + throw new InvalidDataException("The package identity does not match the selected catalog mod."); + if (string.IsNullOrWhiteSpace(manifest.Name) || string.IsNullOrWhiteSpace(manifest.Version)) + throw new InvalidDataException("The package name or version is missing."); + ValidateSimpleName(manifest.FolderName, "folder"); + ValidateSimpleName(manifest.EntryAssembly, "entry assembly"); + if (!manifest.EntryAssembly.EndsWith(".dll", StringComparison.OrdinalIgnoreCase)) + throw new InvalidDataException("The package entry assembly must be a DLL."); + if (!string.Equals(Path.GetFileNameWithoutExtension(manifest.EntryAssembly), manifest.FolderName, StringComparison.OrdinalIgnoreCase)) + throw new InvalidDataException("ACE requires the mod folder and entry assembly to have the same name."); + } + + private static void ValidateExtractedMod(string directory, ModPackageManifest manifest) + { + var metadataPath = Path.Combine(directory, "Meta.json"); + var assemblyPath = Path.Combine(directory, manifest.EntryAssembly); + if (!File.Exists(metadataPath)) + throw new InvalidDataException("The package does not contain mod/Meta.json."); + if (!File.Exists(assemblyPath)) + throw new InvalidDataException($"The package does not contain mod/{manifest.EntryAssembly}."); + + var metadata = ModMetadataEditor.Parse(File.ReadAllText(metadataPath)); + var name = metadata.FirstOrDefault(property => string.Equals(property.Key, "Name", StringComparison.OrdinalIgnoreCase)).Value?.ToString(); + if (!string.Equals(name, manifest.Name, StringComparison.OrdinalIgnoreCase)) + throw new InvalidDataException("Meta.json does not match the package manifest."); + } + + private static string NormalizeEntry(string value) + { + var normalized = value.Replace('\\', '/'); + if (normalized.StartsWith('/') || Path.IsPathRooted(normalized)) + throw new InvalidDataException($"Absolute package path is not allowed: {value}"); + return normalized; + } + + private static void ValidateRelativePath(string value) + { + var parts = value.Split('/', StringSplitOptions.RemoveEmptyEntries); + if (parts.Length == 0 || parts.Any(part => part is "." or ".." || part.Contains(':'))) + throw new InvalidDataException($"Unsafe package path: {value}"); + } + + private static void ValidateSimpleName(string value, string field) + { + if (string.IsNullOrWhiteSpace(value) || value is "." or ".." || + value.IndexOfAny(Path.GetInvalidFileNameChars()) >= 0 || value.Contains('/') || value.Contains('\\')) + throw new InvalidDataException($"The package {field} is invalid."); + } + + private static void EnsureInside(string parent, string child) + { + var prefix = Path.GetFullPath(parent).TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar) + Path.DirectorySeparatorChar; + if (!child.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)) + throw new InvalidDataException("A package entry attempted to leave its install directory."); + } + + private static void EnsureImmediateChild(string parent, string child) + { + var expectedParent = Path.GetFullPath(parent).TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + var actualParent = Path.GetDirectoryName(Path.GetFullPath(child))?.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + if (!string.Equals(expectedParent, actualParent, StringComparison.OrdinalIgnoreCase)) + throw new InvalidDataException("The mod folder is outside the configured Mods directory."); + } +} diff --git a/Source/ACE.SinglePlayer/Processes/ClientProcessManager.cs b/Source/ACE.SinglePlayer/Processes/ClientProcessManager.cs index e80ee8e9b7..c1389250a6 100644 --- a/Source/ACE.SinglePlayer/Processes/ClientProcessManager.cs +++ b/Source/ACE.SinglePlayer/Processes/ClientProcessManager.cs @@ -31,6 +31,9 @@ public async Task StartAsync(LauncherSettings settings, string accountP if (!provider.IsAvailable(out var reason)) throw new InvalidOperationException(reason); + var workingDirectory = Path.GetDirectoryName(Path.GetFullPath(settings.ClientExePath))!; + log.Write($"Launching client executable '{Path.GetFullPath(settings.ClientExePath)}'."); + log.Write($"Client working/DAT directory: '{workingDirectory}'. ACE.Server DAT directory: '{Path.GetFullPath(settings.DatFilesDirectory)}'."); process = await provider.LaunchAsync(new ClientLaunchRequest(settings, accountPassword), cancellationToken); process.EnableRaisingEvents = true; process.Exited += OnExited; @@ -68,6 +71,8 @@ private void OnExited(object? sender, EventArgs e) if (sender is not Process exited) return; log.Write($"acclient.exe process {exited.Id} exited with code {exited.ExitCode}."); + if (exited.ExitCode != 0) + log.Write("Client startup failed. Verify that the complete AC client, including all client DAT files, is beside acclient.exe in a writable folder and is not blocked by Windows Security."); if (!stopping) ClientExited?.Invoke(exited.ExitCode); } diff --git a/Source/ACE.SinglePlayer/Program.cs b/Source/ACE.SinglePlayer/Program.cs index f5fcee15a0..30cd5b0ffc 100644 --- a/Source/ACE.SinglePlayer/Program.cs +++ b/Source/ACE.SinglePlayer/Program.cs @@ -63,6 +63,13 @@ private static void RunApplication() settings.ManagedDatabaseExePath = MariaDbInstallationLocator.FindServerExecutable(settings.ManagedDatabaseExePath) ?? settings.ManagedDatabaseExePath; + if (SettingsPathRepairer.Repair(settings, AppContext.BaseDirectory)) + { + log.Write("Automatically repaired the client/DAT or packaged server paths for this installation."); + if (store.Exists) + store.SaveAsync(settings).GetAwaiter().GetResult(); + } + if (!store.Exists || !SetupValidator.Validate(settings).IsValid) { using var wizard = new SetupWizardForm(settings, store, protector, runtimeFactory, bootstrapper); diff --git a/Source/ACE.SinglePlayer/UI/MainForm.cs b/Source/ACE.SinglePlayer/UI/MainForm.cs index af35c7cf36..2ce323d87b 100644 --- a/Source/ACE.SinglePlayer/UI/MainForm.cs +++ b/Source/ACE.SinglePlayer/UI/MainForm.cs @@ -10,18 +10,24 @@ namespace ACE.SinglePlayer.UI; public sealed class MainForm : Form { + private static readonly Color Night = Color.FromArgb(14, 25, 32); + private static readonly Color DeepSlate = Color.FromArgb(26, 43, 52); + private static readonly Color WeatheredGold = Color.FromArgb(205, 160, 82); + private static readonly Color PaleGold = Color.FromArgb(241, 220, 170); + private static readonly Color Mist = Color.FromArgb(222, 231, 226); private readonly LauncherController controller; private readonly SettingsStore settingsStore; private readonly ISecretProtector secretProtector; private readonly DatabaseRuntimeFactory databaseRuntimeFactory; private readonly DatabaseBootstrapper databaseBootstrapper; private readonly LauncherLog log; - private readonly Label state = new() { AutoSize = false, Dock = DockStyle.Top, Height = 64, TextAlign = ContentAlignment.MiddleCenter, Font = new Font(SystemFonts.MessageBoxFont!.FontFamily, 14, FontStyle.Bold) }; - private readonly Button play = new() { Text = "PLAY", Width = 330, Height = 100, Font = new Font(SystemFonts.MessageBoxFont.FontFamily, 26, FontStyle.Bold) }; - private readonly CheckBox useDecal = new() { Text = "Use Decal", AutoSize = true, Padding = new Padding(10, 38, 4, 0) }; - private readonly Button stop = new() { Text = "Stop", Width = 100, Height = 38 }; - private readonly TextBox diagnostics = new() { Dock = DockStyle.Fill, Multiline = true, ReadOnly = true, ScrollBars = ScrollBars.Vertical, Font = new Font(FontFamily.GenericMonospace, 9) }; - private readonly Panel diagnosticPanel = new() { Dock = DockStyle.Fill, Visible = false, Padding = new Padding(8) }; + private readonly Label title = new() { Text = "A C E S I N G L E P L A Y E R", AutoSize = false, Dock = DockStyle.Fill, TextAlign = ContentAlignment.MiddleCenter }; + private readonly Label state = new() { AutoSize = false, Dock = DockStyle.Fill, TextAlign = ContentAlignment.MiddleCenter }; + private readonly Button play = new() { Text = "PLAY", Width = 320, Height = 96 }; + private readonly CheckBox useDecal = new() { Text = "Use Decal", AutoSize = true, Margin = new Padding(7, 7, 7, 11) }; + private readonly Button stop = new() { Text = "Stop", Width = 116, Height = 36, Margin = new Padding(4, 0, 4, 4) }; + private readonly TextBox diagnostics = new() { Dock = DockStyle.Fill, Multiline = true, ReadOnly = true, ScrollBars = ScrollBars.Vertical, Font = new Font(FontFamily.GenericMonospace, 9), BorderStyle = BorderStyle.None }; + private readonly Panel diagnosticPanel = new() { Dock = DockStyle.Fill, Visible = false, Padding = new Padding(12), BorderStyle = BorderStyle.FixedSingle }; private readonly ToolTip toolTip = new(); private bool closingAllowed; private bool updatingDecalPreference; @@ -36,34 +42,86 @@ public MainForm(LauncherController controller, SettingsStore settingsStore, ISec this.databaseBootstrapper = databaseBootstrapper; this.log = log; - Text = "ACE Single Player"; + Text = "ACE Single Player - A Private World in Dereth"; StartPosition = FormStartPosition.CenterScreen; - MinimumSize = new Size(700, 520); - Size = new Size(820, 650); + MinimumSize = new Size(780, 620); + Size = new Size(900, 710); + BackColor = Night; + ForeColor = Mist; + DoubleBuffered = true; + BackgroundImage = LoadLauncherBackground(); + BackgroundImageLayout = ImageLayout.Zoom; - var main = new TableLayoutPanel { Dock = DockStyle.Fill, RowCount = 4, ColumnCount = 1 }; - main.RowStyles.Add(new RowStyle(SizeType.Absolute, 70)); + title.Font = new Font("Georgia", 21, FontStyle.Bold); + title.ForeColor = PaleGold; + title.BackColor = Color.FromArgb(188, Night); + state.Font = new Font("Georgia", 12, FontStyle.Bold); + state.ForeColor = PaleGold; + state.BackColor = Color.FromArgb(188, Night); + + play.Font = new Font("Georgia", 26, FontStyle.Bold); + play.ForeColor = PaleGold; + play.BackColor = Color.FromArgb(186, 103, 45); + play.FlatStyle = FlatStyle.Flat; + play.FlatAppearance.BorderColor = WeatheredGold; + play.FlatAppearance.BorderSize = 2; + play.FlatAppearance.MouseOverBackColor = Color.FromArgb(205, 126, 55); + play.FlatAppearance.MouseDownBackColor = Color.FromArgb(151, 80, 37); + + useDecal.ForeColor = Mist; + useDecal.BackColor = DeepSlate; + useDecal.Font = new Font(SystemFonts.MessageBoxFont!.FontFamily, 10, FontStyle.Bold); + StyleSecondaryButton(stop); + + diagnostics.BackColor = Color.FromArgb(9, 17, 22); + diagnostics.ForeColor = Color.FromArgb(190, 214, 204); + diagnosticPanel.BackColor = Color.FromArgb(225, Night); + + var main = new TableLayoutPanel { Dock = DockStyle.Fill, RowCount = 5, ColumnCount = 1, BackColor = Color.Transparent, Padding = new Padding(22, 18, 22, 18) }; + main.RowStyles.Add(new RowStyle(SizeType.Absolute, 56)); + main.RowStyles.Add(new RowStyle(SizeType.Absolute, 67)); main.RowStyles.Add(new RowStyle(SizeType.Absolute, 150)); - main.RowStyles.Add(new RowStyle(SizeType.Absolute, 60)); + main.RowStyles.Add(new RowStyle(SizeType.Absolute, 58)); main.RowStyles.Add(new RowStyle(SizeType.Percent, 100)); - main.Controls.Add(state, 0, 0); + main.Controls.Add(title, 0, 0); + main.Controls.Add(state, 0, 1); - var playPanel = new FlowLayoutPanel { Dock = DockStyle.Fill, FlowDirection = FlowDirection.LeftToRight, WrapContents = false, Padding = new Padding(150, 15, 0, 0) }; + var playHost = new TableLayoutPanel { Dock = DockStyle.Fill, ColumnCount = 3, RowCount = 1, BackColor = Color.Transparent }; + playHost.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50)); + playHost.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize)); + playHost.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50)); + var playPanel = new FlowLayoutPanel { AutoSize = true, FlowDirection = FlowDirection.LeftToRight, WrapContents = false, BackColor = Color.Transparent, Padding = new Padding(0, 20, 0, 0) }; playPanel.Controls.Add(play); - playPanel.Controls.Add(useDecal); - playPanel.Controls.Add(stop); - main.Controls.Add(playPanel, 0, 1); + var playOptions = new FlowLayoutPanel + { + AutoSize = true, + FlowDirection = FlowDirection.TopDown, + WrapContents = false, + BackColor = DeepSlate, + Padding = new Padding(10), + Margin = new Padding(12, 4, 0, 0) + }; + playOptions.Controls.Add(useDecal); + playOptions.Controls.Add(stop); + playPanel.Controls.Add(playOptions); + playHost.Controls.Add(playPanel, 1, 0); + main.Controls.Add(playHost, 0, 2); - var actions = new FlowLayoutPanel { Dock = DockStyle.Fill, FlowDirection = FlowDirection.LeftToRight, Padding = new Padding(15, 8, 0, 0) }; + var actions = new FlowLayoutPanel { Dock = DockStyle.Fill, FlowDirection = FlowDirection.LeftToRight, WrapContents = false, BackColor = Color.FromArgb(216, Night), Padding = new Padding(12, 9, 0, 0) }; var settings = new Button { Text = "Settings", AutoSize = true }; var mods = new Button { Text = "Mods", AutoSize = true }; var logs = new Button { Text = "Open Logs", AutoSize = true }; var showDiagnostics = new CheckBox { Text = "Show diagnostics", AutoSize = true, Padding = new Padding(10, 7, 0, 0) }; + StyleSecondaryButton(settings); + StyleSecondaryButton(mods); + StyleSecondaryButton(logs); + showDiagnostics.ForeColor = Mist; + showDiagnostics.BackColor = Color.Transparent; actions.Controls.AddRange(new Control[] { settings, mods, logs, showDiagnostics }); - main.Controls.Add(actions, 0, 2); + main.Controls.Add(actions, 0, 3); diagnosticPanel.Controls.Add(diagnostics); - main.Controls.Add(diagnosticPanel, 0, 3); + main.Controls.Add(diagnosticPanel, 0, 4); Controls.Add(main); var decalAvailable = IsDecalAvailable(); @@ -91,8 +149,13 @@ public MainForm(LauncherController controller, SettingsStore settingsStore, ISec logs.Click += (_, _) => Process.Start(new ProcessStartInfo { FileName = Path.GetDirectoryName(log.LogPath)!, UseShellExecute = true }); showDiagnostics.CheckedChanged += (_, _) => diagnosticPanel.Visible = showDiagnostics.Checked; FormClosing += OnFormClosing; + Disposed += (_, _) => + { + BackgroundImage?.Dispose(); + toolTip.Dispose(); + }; - controller.State.Set(LauncherState.Ready, "Ready — click Play"); + controller.State.Set(LauncherState.Ready, "Ready - click Play"); } private async Task UpdateDecalPreferenceAsync() @@ -167,6 +230,13 @@ private void UpdateState(LauncherStateChanged change) return; } state.Text = $"{ToDisplayName(change.State)}\r\n{change.Message}"; + state.ForeColor = change.State switch + { + LauncherState.Error => Color.FromArgb(255, 153, 125), + LauncherState.GameRunning => Color.FromArgb(151, 222, 178), + LauncherState.Ready => PaleGold, + _ => Color.FromArgb(151, 201, 230) + }; stop.Enabled = controller.IsServerRunning || controller.IsClientRunning; play.Enabled = (change.State is LauncherState.Ready or LauncherState.Error or LauncherState.NotConfigured) && !controller.IsClientRunning; useDecal.Enabled = IsDecalAvailable() && !controller.IsServerRunning && !controller.IsClientRunning; @@ -174,6 +244,24 @@ private void UpdateState(LauncherStateChanged change) diagnosticPanel.Visible = true; } + private static void StyleSecondaryButton(Button button) + { + button.FlatStyle = FlatStyle.Flat; + button.FlatAppearance.BorderColor = Color.FromArgb(126, 146, 145); + button.FlatAppearance.BorderSize = 1; + button.FlatAppearance.MouseOverBackColor = Color.FromArgb(55, 77, 84); + button.FlatAppearance.MouseDownBackColor = Color.FromArgb(33, 51, 59); + button.BackColor = DeepSlate; + button.ForeColor = Mist; + } + + private static Image? LoadLauncherBackground() + { + using var stream = typeof(MainForm).Assembly.GetManifestResourceStream( + "ACE.SinglePlayer.Assets.dereth-launcher-background.png"); + return stream is null ? null : new Bitmap(stream); + } + private void AppendDiagnostic(string line) { if (InvokeRequired) diff --git a/Source/ACE.SinglePlayer/UI/ModsForm.cs b/Source/ACE.SinglePlayer/UI/ModsForm.cs index 335c3fb7f2..dcb26d4876 100644 --- a/Source/ACE.SinglePlayer/UI/ModsForm.cs +++ b/Source/ACE.SinglePlayer/UI/ModsForm.cs @@ -8,121 +8,387 @@ namespace ACE.SinglePlayer.UI; public sealed class ModsForm : Form { + private static readonly Color Night = Color.FromArgb(14, 25, 32); + private static readonly Color DeepSlate = Color.FromArgb(26, 43, 52); + private static readonly Color WeatheredGold = Color.FromArgb(205, 160, 82); + private static readonly Color PaleGold = Color.FromArgb(241, 220, 170); + private static readonly Color Mist = Color.FromArgb(222, 231, 226); + private readonly LauncherSettings settings; private readonly Func isServerRunning; - private readonly DataGridView grid = new() { Dock = DockStyle.Fill, AutoGenerateColumns = false, ReadOnly = true, AllowUserToAddRows = false, SelectionMode = DataGridViewSelectionMode.FullRowSelect }; - private BindingList records = new(); + private readonly ModPackageInstaller installer = new(); + private readonly DataGridView grid = new() + { + Dock = DockStyle.Fill, + AutoGenerateColumns = false, + ReadOnly = true, + AllowUserToAddRows = false, + AllowUserToDeleteRows = false, + AllowUserToResizeRows = false, + MultiSelect = false, + RowHeadersVisible = false, + SelectionMode = DataGridViewSelectionMode.FullRowSelect, + BackgroundColor = Night, + BorderStyle = BorderStyle.None + }; + private readonly Label detailTitle = new() { AutoSize = false, Dock = DockStyle.Top, Height = 42 }; + private readonly Label detailStatus = new() { AutoSize = false, Dock = DockStyle.Top, Height = 44 }; + private readonly TextBox detailText = new() + { + Dock = DockStyle.Fill, + Multiline = true, + ReadOnly = true, + ScrollBars = ScrollBars.Vertical, + BorderStyle = BorderStyle.None + }; + private readonly LinkLabel sourceLink = new() { Text = "View source and original documentation", AutoSize = true }; + private readonly Button install = new() { Text = "Install", AutoSize = true }; + private readonly Button toggle = new() { Text = "Turn off", AutoSize = true }; + private readonly Button remove = new() { Text = "Remove", AutoSize = true }; + private readonly Button openSettings = new() { Text = "Settings", AutoSize = true }; + private BindingList items = new(); public ModsForm(LauncherSettings settings, Func isServerRunning) { this.settings = settings; this.isServerRunning = isServerRunning; - Text = "Mods and client plugins"; + + Text = "ACE Single Player - Mod Library"; StartPosition = FormStartPosition.CenterParent; - Size = new Size(1000, 600); + MinimumSize = new Size(1040, 680); + Size = new Size(1240, 780); + BackColor = Night; + ForeColor = Mist; + Font = new Font(SystemFonts.MessageBoxFont!.FontFamily, 9.5f); AddColumns(); - grid.CellContentClick += async (_, args) => await ToggleAsync(args); - grid.CellFormatting += FormatCell; - - var buttons = new FlowLayoutPanel { Dock = DockStyle.Bottom, Height = 48, Padding = new Padding(8), AutoSize = false }; - var refresh = new Button { Text = "Refresh", AutoSize = true }; - var openMods = new Button { Text = "Open Mods Folder", AutoSize = true }; - var openMod = new Button { Text = "Open Selected Folder", AutoSize = true }; - var openSettings = new Button { Text = "Open Settings.json", AutoSize = true }; - buttons.Controls.AddRange(new Control[] { refresh, openMods, openMod, openSettings }); - refresh.Click += (_, _) => RefreshCatalog(); - openMods.Click += (_, _) => Open(settings.ModsDirectory); - openMod.Click += (_, _) => { if (Selected is { InstalledPath.Length: > 0 } record) Open(record.InstalledPath); }; - openSettings.Click += (_, _) => - { - if (Selected is { SettingsPath.Length: > 0 } record && File.Exists(record.SettingsPath)) Open(record.SettingsPath); - else MessageBox.Show(this, "This server mod has no Settings.json file.", "No settings file", MessageBoxButtons.OK, MessageBoxIcon.Information); - }; + StyleGrid(); - var note = new Label + var heading = new Label { Dock = DockStyle.Top, - Height = 48, - Padding = new Padding(10), - Text = "ACE server mods are loaded by ACE.Server's existing Harmony ModManager. Decal entries are read-only and load only in Decal mode. Server-mod changes require a restart." + Height = 72, + Padding = new Padding(18, 10, 18, 4), + Font = new Font("Georgia", 19, FontStyle.Bold), + ForeColor = PaleGold, + Text = "MOD LIBRARY\r\nPick a mod to see what it changes before installing it." }; - Controls.Add(grid); - Controls.Add(buttons); - Controls.Add(note); + + var split = new SplitContainer + { + Dock = DockStyle.Fill, + SplitterDistance = 730, + SplitterWidth = 6, + BackColor = Night, + Panel1MinSize = 540, + Panel2MinSize = 360 + }; + split.Panel1.Padding = new Padding(14, 8, 6, 14); + split.Panel2.Padding = new Padding(8, 8, 14, 14); + split.Panel1.Controls.Add(grid); + split.Panel2.Controls.Add(BuildDetailsPanel()); + + Controls.Add(split); + Controls.Add(heading); + + grid.SelectionChanged += (_, _) => UpdateDetails(); + install.Click += async (_, _) => await InstallSelectedAsync(); + toggle.Click += async (_, _) => await ToggleSelectedAsync(); + remove.Click += (_, _) => RemoveSelected(); + openSettings.Click += (_, _) => OpenSelectedSettings(); + sourceLink.LinkClicked += (_, _) => OpenSelectedSource(); + RefreshCatalog(); } - private ModRecord? Selected => grid.CurrentRow?.DataBoundItem as ModRecord; + private ModListItem? Selected => grid.CurrentRow?.DataBoundItem as ModListItem; + + private Control BuildDetailsPanel() + { + var panel = new Panel { Dock = DockStyle.Fill, BackColor = DeepSlate, Padding = new Padding(16) }; + detailTitle.Font = new Font("Georgia", 17, FontStyle.Bold); + detailTitle.ForeColor = PaleGold; + detailStatus.Font = new Font(Font, FontStyle.Bold); + detailStatus.ForeColor = WeatheredGold; + detailText.BackColor = DeepSlate; + detailText.ForeColor = Mist; + detailText.Font = new Font(Font.FontFamily, 10); + sourceLink.LinkColor = Color.FromArgb(142, 197, 222); + sourceLink.ActiveLinkColor = PaleGold; + + var actions = new FlowLayoutPanel + { + Dock = DockStyle.Bottom, + Height = 48, + FlowDirection = FlowDirection.LeftToRight, + WrapContents = false, + Padding = new Padding(0, 9, 0, 0), + BackColor = Color.Transparent + }; + foreach (var button in new[] { install, toggle, remove, openSettings }) + StyleButton(button); + actions.Controls.AddRange(new Control[] { install, toggle, remove, openSettings }); + + var sourcePanel = new Panel { Dock = DockStyle.Bottom, Height = 38, Padding = new Padding(0, 8, 0, 0) }; + sourcePanel.Controls.Add(sourceLink); + + panel.Controls.Add(detailText); + panel.Controls.Add(sourcePanel); + panel.Controls.Add(actions); + panel.Controls.Add(detailStatus); + panel.Controls.Add(detailTitle); + return panel; + } private void RefreshCatalog() { - var catalog = new ModCatalog(new IModProvider[] + var installedCatalog = new ModCatalog(new IModProvider[] { new AceServerModProvider(settings.ModsDirectory), new DecalPluginProvider(), new ChorizitePluginProvider(), new AceContentPackProvider() }); - records = new BindingList(catalog.Scan().ToList()); - grid.DataSource = records; + var service = new ModCatalogService(AquafirSampleCatalog.Entries, AppContext.BaseDirectory); + items = new BindingList(service.Merge(installedCatalog.Scan()).ToList()); + grid.DataSource = items; + if (grid.Rows.Count > 0) + grid.Rows[0].Selected = true; + UpdateDetails(); } - private async Task ToggleAsync(DataGridViewCellEventArgs args) + private void UpdateDetails() { - if (args.RowIndex < 0 || grid.Columns[args.ColumnIndex].Name != "Enabled" || grid.Rows[args.RowIndex].DataBoundItem is not ModRecord record) - return; - if (!record.CanToggle) + var item = Selected; + if (item is null) { - MessageBox.Show(this, record.Type == ModType.DecalPlugin - ? "Decal registration is read-only until its current format is fully tested." - : "Malformed metadata cannot be edited safely.", "Read-only", MessageBoxButtons.OK, MessageBoxIcon.Information); + detailTitle.Text = "Select a mod"; + detailStatus.Text = string.Empty; + detailText.Text = string.Empty; + SetActions(false, false, false, false, false); return; } - if (isServerRunning()) + + detailTitle.Text = item.Name; + detailStatus.Text = $"{item.Status} | {item.Safety}"; + detailStatus.ForeColor = item.CompatibilityStatus switch + { + CompatibilityStatus.Compatible => Color.FromArgb(151, 222, 178), + CompatibilityStatus.LoadFailed or CompatibilityStatus.Conflict => Color.FromArgb(255, 153, 125), + _ => WeatheredGold + }; + + var dependencies = item.Catalog.Dependencies.Count == 0 + ? "None declared" + : string.Join(", ", item.Catalog.Dependencies.Select(FindCatalogName)); + detailText.Text = + $"WHAT IT DOES\r\n{item.Catalog.Description}\r\n\r\n" + + $"DETAILS\r\n{item.Catalog.Details}\r\n\r\n" + + $"SAVED-GAME SAFETY\r\n{item.Catalog.SafetyNotice}\r\n\r\n" + + $"COMPATIBILITY\r\n{item.CompatibilityMessage}\r\n\r\n" + + $"REQUIRES\r\n{dependencies}\r\n\r\n" + + $"AUTHOR / VERSION TARGET\r\n{item.Author} | {item.Catalog.TargetFramework} | {item.Catalog.TargetAceVersion}"; + + var installedRecord = item.Installed; + install.Text = "Install"; + toggle.Text = installedRecord?.Enabled == true ? "Turn off" : "Turn on"; + SetActions( + installEnabled: installedRecord is null && item.CompatibilityStatus == CompatibilityStatus.Compatible, + toggleEnabled: installedRecord?.CanToggle == true, + removeEnabled: installedRecord?.Type == ModType.AceServer, + settingsEnabled: installedRecord is not null && File.Exists(installedRecord.SettingsPath), + sourceEnabled: !string.IsNullOrWhiteSpace(item.Catalog.SourceUrl)); + } + + private async Task InstallSelectedAsync() + { + var item = Selected; + if (item is null || item.Installed is not null) + return; + if (!EnsureServerStopped()) + return; + if (item.CompatibilityStatus != CompatibilityStatus.Compatible) { - MessageBox.Show(this, "Stop ACE.Server before changing mod metadata. The change requires a server restart.", "Restart required", MessageBoxButtons.OK, MessageBoxIcon.Information); + MessageBox.Show(this, item.CompatibilityMessage, "Mod cannot be installed", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } + var answer = MessageBox.Show(this, + $"Install {item.Name}?\r\n\r\n{item.Catalog.Description}\r\n\r\n{item.Catalog.SafetyNotice}\r\n\r\nThe local server must restart before the mod becomes active.", + "Install mod", MessageBoxButtons.YesNo, MessageBoxIcon.Question); + if (answer != DialogResult.Yes) + return; + + SetActions(false, false, false, false, false); try { - record.Enabled = !record.Enabled; - await ModMetadataEditor.SetEnabledAsync(record.MetadataPath, record.Enabled); - grid.InvalidateRow(args.RowIndex); + await installer.InstallAsync( + item.PackagePath, + item.Catalog.Id, + settings.ModsDirectory, + Path.Combine(settings.RuntimeDirectory, "ModStaging")); + RefreshCatalog(); + MessageBox.Show(this, $"{item.Name} is installed. It will load the next time you click Play.", + "Mod installed", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { - record.Enabled = !record.Enabled; - MessageBox.Show(this, ex.Message, "Could not update Meta.json", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(this, ex.Message, "Mod was not installed", MessageBoxButtons.OK, MessageBoxIcon.Error); + UpdateDetails(); } } - private static void Open(string path) + private async Task ToggleSelectedAsync() { - Process.Start(new ProcessStartInfo { FileName = path, UseShellExecute = true }); + var item = Selected; + var record = item?.Installed; + if (item is null || record is null || !record.CanToggle) + return; + if (!EnsureServerStopped()) + return; + + var enabling = !record.Enabled; + if (!enabling && item.Catalog.RemovalPolicy is not ModRemovalPolicy.Safe) + { + var warning = item.Catalog.RemovalPolicy == ModRemovalPolicy.DoNotRemove + ? "This mod may be required by saved characters, items, or world data. Turning it off is strongly discouraged." + : "Some changes made by this mod will remain in the saved game after it is turned off."; + var answer = MessageBox.Show(this, + $"{warning}\r\n\r\n{item.Catalog.SafetyNotice}\r\n\r\nBack up %LOCALAPPDATA%\\ACESinglePlayer first. Turn it off anyway?", + "Saved-game warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + if (answer != DialogResult.Yes) + return; + } + + try + { + await ModMetadataEditor.SetEnabledAsync(record.MetadataPath, enabling); + RefreshCatalog(); + } + catch (Exception ex) + { + MessageBox.Show(this, ex.Message, "Could not change the mod", MessageBoxButtons.OK, MessageBoxIcon.Error); + } } - private void FormatCell(object? sender, DataGridViewCellFormattingEventArgs args) + private void RemoveSelected() { - if (args.RowIndex < 0 || grid.Rows[args.RowIndex].DataBoundItem is not ModRecord record) + var item = Selected; + var record = item?.Installed; + if (item is null || record?.Type != ModType.AceServer) + return; + if (!EnsureServerStopped()) + return; + if (item.Catalog.RemovalPolicy == ModRemovalPolicy.DoNotRemove) + { + MessageBox.Show(this, + "Removal is blocked because saved characters, items, or world data may require this mod. You can turn it off for troubleshooting, but keep the files until a tested cleanup migration exists.\r\n\r\n" + item.Catalog.SafetyNotice, + "Removal blocked", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + + var answer = MessageBox.Show(this, + $"Remove {item.Name}?\r\n\r\n{item.Catalog.SafetyNotice}\r\n\r\nThe files will be moved to a recovery folder, not deleted.", + "Remove mod", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + if (answer != DialogResult.Yes) return; - if (record.IsMalformed || record.CompatibilityStatus == CompatibilityStatus.LoadFailed) - args.CellStyle.BackColor = Color.MistyRose; - else if (record.Type == ModType.DecalPlugin) - args.CellStyle.BackColor = Color.AliceBlue; + + try + { + var destination = installer.MoveToQuarantine( + record.InstalledPath, + settings.ModsDirectory, + Path.Combine(settings.RuntimeDirectory, "RemovedMods")); + RefreshCatalog(); + MessageBox.Show(this, $"The mod was removed from ACE and retained for recovery at:\r\n{destination}", + "Mod removed", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + MessageBox.Show(this, ex.Message, "Could not remove the mod", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void OpenSelectedSettings() + { + var path = Selected?.Installed?.SettingsPath; + if (!string.IsNullOrWhiteSpace(path) && File.Exists(path)) + Open(path); + } + + private void OpenSelectedSource() + { + var url = Selected?.Catalog.SourceUrl; + if (!string.IsNullOrWhiteSpace(url)) + Open(url); + } + + private bool EnsureServerStopped() + { + if (!isServerRunning()) + return true; + MessageBox.Show(this, "Stop the game and local server before changing mods.", + "Server is running", MessageBoxButtons.OK, MessageBoxIcon.Information); + return false; + } + + private static void Open(string path) => + Process.Start(new ProcessStartInfo { FileName = path, UseShellExecute = true }); + + private static string FindCatalogName(string id) => + AquafirSampleCatalog.Entries.FirstOrDefault(entry => string.Equals(entry.Id, id, StringComparison.OrdinalIgnoreCase))?.Name ?? id; + + private void SetActions(bool installEnabled, bool toggleEnabled, bool removeEnabled, bool settingsEnabled, bool sourceEnabled) + { + install.Enabled = installEnabled; + toggle.Enabled = toggleEnabled; + remove.Enabled = removeEnabled; + openSettings.Enabled = settingsEnabled; + sourceLink.Enabled = sourceEnabled; + sourceLink.Visible = sourceEnabled; } private void AddColumns() { - grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModRecord.Type), HeaderText = "Type", Width = 110 }); - grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModRecord.Name), HeaderText = "Name", Width = 160 }); - grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModRecord.Author), HeaderText = "Author", Width = 110 }); - grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModRecord.Version), HeaderText = "Version", Width = 75 }); - grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModRecord.Priority), HeaderText = "Priority", Width = 65 }); - grid.Columns.Add(new DataGridViewCheckBoxColumn { Name = "Enabled", DataPropertyName = nameof(ModRecord.Enabled), HeaderText = "Enabled", Width = 65 }); - grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModRecord.CompatibilityStatus), HeaderText = "Compatibility", Width = 120 }); - grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModRecord.Description), HeaderText = "Description", AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill }); - grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModRecord.LastLoadError), HeaderText = "Last error", Width = 180 }); + grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModListItem.Status), HeaderText = "Status", Width = 122 }); + grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModListItem.Name), HeaderText = "Mod", Width = 145 }); + grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModListItem.Safety), HeaderText = "Saved-game impact", Width = 155 }); + grid.Columns.Add(new DataGridViewTextBoxColumn { DataPropertyName = nameof(ModListItem.Description), HeaderText = "What it does", AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill }); + } + + private void StyleGrid() + { + grid.EnableHeadersVisualStyles = false; + grid.ColumnHeadersDefaultCellStyle.BackColor = DeepSlate; + grid.ColumnHeadersDefaultCellStyle.ForeColor = PaleGold; + grid.ColumnHeadersDefaultCellStyle.Font = new Font(Font, FontStyle.Bold); + grid.ColumnHeadersHeight = 38; + grid.DefaultCellStyle.BackColor = Color.FromArgb(20, 34, 41); + grid.DefaultCellStyle.ForeColor = Mist; + grid.DefaultCellStyle.SelectionBackColor = Color.FromArgb(70, 80, 67); + grid.DefaultCellStyle.SelectionForeColor = Color.White; + grid.DefaultCellStyle.WrapMode = DataGridViewTriState.True; + grid.AlternatingRowsDefaultCellStyle.BackColor = Color.FromArgb(24, 40, 48); + grid.RowTemplate.Height = 66; + grid.CellFormatting += (_, args) => + { + if (args.RowIndex < 0 || grid.Rows[args.RowIndex].DataBoundItem is not ModListItem item) + return; + if (item.CompatibilityStatus is CompatibilityStatus.LoadFailed or CompatibilityStatus.Conflict) + args.CellStyle.ForeColor = Color.FromArgb(255, 174, 151); + else if (item.Installed is not null) + args.CellStyle.ForeColor = Color.FromArgb(165, 226, 188); + }; + } + + private static void StyleButton(Button button) + { + button.FlatStyle = FlatStyle.Flat; + button.FlatAppearance.BorderColor = Color.FromArgb(126, 146, 145); + button.FlatAppearance.BorderSize = 1; + button.FlatAppearance.MouseOverBackColor = Color.FromArgb(55, 77, 84); + button.FlatAppearance.MouseDownBackColor = Color.FromArgb(33, 51, 59); + button.BackColor = Night; + button.ForeColor = Mist; } } diff --git a/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs b/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs index de4fbd4aea..8e1080b640 100644 --- a/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs +++ b/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs @@ -106,10 +106,11 @@ private TabPage CreateClientPage() var page = NewPage(); var layout = NewFields(); AddPathRow(layout, "acclient.exe", clientPath, "Select acclient.exe", () => BrowseFile(clientPath, "acclient.exe|acclient.exe"), 0); - AddPathRow(layout, "DAT-file directory", datPath, "Select the folder containing the client DAT files", () => BrowseFolder(datPath), 1); + datPath.ReadOnly = true; + AddPathRow(layout, "DAT files (automatic)", datPath, "Automatically uses the DAT files beside acclient.exe", () => BrowseFolder(datPath), 1); var note = new Label { - Text = "The launcher does not download or redistribute the proprietary client. Required: client_cell_1.dat, client_portal.dat, and client_local_English.dat. client_highres.dat is optional for ACE.Server.", + Text = "Select acclient.exe from a complete, writable AC client folder. The client requires client_cell_1.dat, client_portal.dat, client_local_English.dat, and client_highres.dat beside acclient.exe. The launcher does not download or redistribute these proprietary files.", AutoSize = true, MaximumSize = new Size(650, 0) }; @@ -202,6 +203,7 @@ private TabPage CreatePlayPage() private void LoadSettings() { + SettingsPathRepairer.Repair(settings, AppContext.BaseDirectory); clientPath.Text = settings.ClientExePath; datPath.Text = settings.DatFilesDirectory; serverPath.Text = settings.ServerExePath; @@ -243,7 +245,7 @@ private LauncherSettings BuildSettings() { var result = settings; result.ClientExePath = clientPath.Text.Trim(); - result.DatFilesDirectory = datPath.Text.Trim(); + result.DatFilesDirectory = SetupValidator.DetectDatDirectory(result.ClientExePath) ?? datPath.Text.Trim(); result.ServerExePath = serverPath.Text.Trim(); result.ModsDirectory = modsPath.Text.Trim(); result.RuntimeDirectory = runtimePath.Text.Trim(); diff --git a/docs/AQUIFIR_MOD_COMPATIBILITY.md b/docs/AQUIFIR_MOD_COMPATIBILITY.md index ff8252ce56..47adc778b8 100644 --- a/docs/AQUIFIR_MOD_COMPATIBILITY.md +++ b/docs/AQUIFIR_MOD_COMPATIBILITY.md @@ -1,6 +1,12 @@ # Aquafir project compatibility with current ACE -Assessment date: 2026-07-13. Current ACE checkout: `08471633`, .NET 10. The external repositories were inspected at their default branches. They were not copied into ACE, and the real client-side projects were not executed. +Assessment date: 2026-07-14. Current ACE base: `08471633`, .NET 10. The external repositories were inspected at their default branches. Only the explicitly documented `CriticalOverride` pilot was ported into this repository; the client-side projects were not executed. + +## ACE.BaseMod sample catalog update + +The launcher now inventories all 22 folders under `aquafir/ACE.BaseMod/Samples` with curated descriptions and saved-game policies. The upstream samples target .NET 8, reference an installed ACE server, and use placeholder metadata, so they are not offered as compatible binaries merely because their source is public. + +`CriticalOverride` has been ported in-tree to .NET 10, compiled against this exact `ACE.Server`, and packaged with an identity manifest and SHA-256 checksum. It is the first one-click installable pilot. Every remaining sample stays visible as **Needs port**, **Experimental**, or **Not recommended** until it receives the same rebuild and test treatment. See `docs/MOD_LIBRARY.md` for install/removal behavior and persistent-data rules. | Project | Type | Current target/dependencies | Builds against this ACE as-is? | Without Thwarg/Decal? | Status and recommendation | |---|---|---|---|---|---| diff --git a/docs/MOD_LIBRARY.md b/docs/MOD_LIBRARY.md new file mode 100644 index 0000000000..5f81b32bea --- /dev/null +++ b/docs/MOD_LIBRARY.md @@ -0,0 +1,44 @@ +# Mod library and saved-game safety + +ACE Single Player includes a curated mod library. Open **Mods** from the launcher, select a mod, and read its description, requirements, compatibility status, and saved-game warning before changing anything. + +## Current status + +The library inventories all 22 samples in [aquafir/ACE.BaseMod](https://github.com/aquafir/ACE.BaseMod/tree/master/Samples). The upstream `Meta.json` files contain placeholder descriptions, so ACE Single Player's descriptions and safety policies are curated from the actual READMEs and source. + +`CriticalOverride` is the first sample ported to this repository's .NET 10 ACE build. Its checksum-verified package is included in the release and can be installed with one click. The other samples remain visible but are marked **Needs port**, **Experimental**, or **Not recommended** until they compile against this exact ACE version and pass load/gameplay tests. The launcher will not pretend that old .NET 8 source is a compatible installable package. + +## Install, turn off, and remove are different operations + +- **Install** validates the package identity and checksum, rejects unsafe archive paths, stages all files, and only then moves the complete mod into the ACE `Mods` directory. +- **Turn off** changes the mod's `Enabled` value. It stops the mod code after the next server restart, but it does not erase changes already saved to characters, items, or the world. +- **Remove** moves a safe mod out of ACE into `%LOCALAPPDATA%\ACESinglePlayer\Runtime\RemovedMods`. The files are retained for recovery instead of being deleted. + +The launcher assigns every curated mod one of these saved-data policies: + +- **Safe**: no persistent game data depends on the mod. It can be turned off or moved to recovery. +- **Changes remain**: the mod can be turned off, but completed actions such as item tailoring, experience awards, or character moves are not undone. +- **Backup required**: turning it off may leave unusual but loadable character/item state. Back up `%LOCALAPPDATA%\ACESinglePlayer` first. +- **Do not remove**: characters, items, custom spells, balances, or world objects may require the mod. Removal is blocked until the package provides a tested cleanup migration. + +All mod changes require the game and local server to be stopped. This prevents ACE from loading a half-copied assembly or saving data during a change. + +## Dependencies and conflicts + +Each curated package can declare required mods and incompatible mods. Before installation, the launcher checks that requirements are installed and conflicts are absent. This is a preflight check, not a guarantee that two arbitrary Harmony patches are behaviorally compatible. A curated package is only marked ready after it has been rebuilt for this ACE version and tested with the packages it declares compatible. + +Package updates will eventually add ownership information for custom IDs, database migrations, and explicit upgrade/rollback steps. Unknown manually installed mods are shown conservatively because the launcher cannot infer their saved-data behavior from a DLL. + +## New items, dungeons, towns, and landscape + +These are not all the same kind of mod: + +1. A server mod changes ACE behavior. It can reuse objects and art already known to the original client without changing client DAT files. +2. A world-content pack adds or changes weenies, encounters, quests, recipes, landblock spawns, and other database content. It needs versioned SQL/data migrations, ownership of custom ID ranges, and a database backup/rollback plan. +3. A client-content pack is required for genuinely new models, textures, icons, sounds, terrain, buildings, or landblock geometry. The client and server must use matching DAT content. These packs need checksums, a writable copied client, and an atomic way to switch the complete matched DAT set. + +A new town or dungeon can often use existing client assets with server/world changes, but new terrain or art requires matched client DAT changes. For that reason, future **World Packs** will be managed separately from ordinary DLL mods and will not be presented as a harmless on/off checkbox. + +## Backups + +Private-world characters and world state live under `%LOCALAPPDATA%\ACESinglePlayer\Database`. Until automatic per-mod snapshots are implemented, close the launcher and copy the entire `%LOCALAPPDATA%\ACESinglePlayer` folder before enabling a mod labeled **Backup required** or **Do not remove**. diff --git a/docs/SINGLE_PLAYER_FIRST_RUN.md b/docs/SINGLE_PLAYER_FIRST_RUN.md index 8ccd2a4cce..8999c6cbf5 100644 --- a/docs/SINGLE_PLAYER_FIRST_RUN.md +++ b/docs/SINGLE_PLAYER_FIRST_RUN.md @@ -9,7 +9,8 @@ ACE Single Player keeps ACE.Server as a private local process and launches the o - `client_cell_1.dat` - `client_portal.dat` - `client_local_English.dat` - - `client_highres.dat` is optional for ACE.Server, although the client installation normally includes it. + - `client_highres.dat` + Keep the complete client installation together in one writable folder outside OneDrive and `Program Files`. 3. Have MariaDB for Windows installed. Its Windows service may be running or stopped; the recommended private mode uses the installed programs to create a separate database and does not need the service's `root` password. The launcher does not bundle or download MariaDB. 4. Download the current official ACE-World release package and extract its populated `ACE-World-Database-*.sql` file. Do not select the repository's `Database\Base\WorldBase.sql`; that file defines empty tables and cannot run a world. The launcher never downloads or trusts a database package on its own. @@ -17,7 +18,7 @@ ACE Single Player keeps ACE.Server as a private local process and launches the o Double-click `ACE.SinglePlayer.exe`. -1. Select `acclient.exe`. The wizard fills the DAT directory automatically when all three required DAT files are beside it. +1. Select `acclient.exe`. The wizard fills the DAT directory automatically when all four required DAT files are beside it. Setup now stops early with a clear message if the client folder is incomplete or not writable. 2. Select the packaged `Server\ACE.Server.exe`. 3. Keep the package `Mods` directory and the default local Windows app-data `Runtime` directory unless you intentionally store them elsewhere. Runtime configuration contains short-lived local credentials and should not be placed in OneDrive. 4. Keep **Automatic private database (recommended)**. The wizard detects `mariadbd.exe`, selects a free loopback-only port, generates protected credentials, and stores MariaDB data under local Windows app data rather than OneDrive. No MariaDB username or password is requested. diff --git a/docs/SINGLE_PLAYER_INSTALL.md b/docs/SINGLE_PLAYER_INSTALL.md index cf92c8c9b3..c83122288f 100644 --- a/docs/SINGLE_PLAYER_INSTALL.md +++ b/docs/SINGLE_PLAYER_INSTALL.md @@ -11,7 +11,8 @@ ACE Single Player runs the ACE server, a private MariaDB database, and the origi - `client_cell_1.dat` - `client_portal.dat` - `client_local_English.dat` - - `client_highres.dat` is normally present and is recommended. + - `client_highres.dat` +- Keep the complete client installation in one writable folder outside OneDrive and `Program Files`, such as `C:\Games\AsheronsCall` or `C:\Turbine\Asheron's Call`. - [MariaDB Community Server for Windows](https://mariadb.org/download/). The launcher uses its database programs but creates a separate private database. The password chosen for MariaDB's normal Windows service is not used by the recommended setup. - The populated `ACE-World-Database-*.sql` file from the [official ACE World release](https://github.com/ACEmulator/ACE-World-16PY-Patches/releases/latest). - Optional for Decal mode: working Decal and ThwargLauncher installations. ACE Single Player uses ThwargLauncher's installed `injector.dll` but does not copy or redistribute it. @@ -63,7 +64,7 @@ Return to setup and choose **Automatic private database**. It does not use the e ### The client cannot open the data files -Confirm that the required DAT files are beside `acclient.exe`, that they are not read-only due to cloud synchronization, and that the game is installed outside OneDrive. The normal `C:\Turbine\Asheron's Call` location is suitable. +Confirm that all four required DAT files are beside `acclient.exe`, not merely in the separate folder selected for ACE.Server. The client folder must be writable and outside OneDrive or `Program Files`. The launcher now checks this before starting MariaDB and logs the exact executable, client working directory, and server DAT directory. ### Decal mode is unavailable diff --git a/scripts/publish-singleplayer.ps1 b/scripts/publish-singleplayer.ps1 index 4da19ad755..3a0ffeea27 100644 --- a/scripts/publish-singleplayer.ps1 +++ b/scripts/publish-singleplayer.ps1 @@ -35,6 +35,8 @@ if (-not $stage.StartsWith($tempPrefix, [StringComparison]::OrdinalIgnoreCase)) $launcherPublish = Join-Path $stage "Launcher" $serverPublish = Join-Path $stage "Server" $decalHostPublish = Join-Path $stage "DecalHost" +$criticalOverridePublish = Join-Path $stage "CriticalOverride" +$criticalOverridePackage = Join-Path $stage "CriticalOverridePackage" function Invoke-DotNet([string[]] $Arguments) { & $dotnet @Arguments @@ -48,7 +50,7 @@ foreach ($path in @($stage, $OutputDirectory)) { Remove-Item -LiteralPath $path -Recurse -Force } } -New-Item -ItemType Directory -Path $launcherPublish, $serverPublish, $decalHostPublish, $OutputDirectory | Out-Null +New-Item -ItemType Directory -Path $launcherPublish, $serverPublish, $decalHostPublish, $criticalOverridePublish, $criticalOverridePackage, $OutputDirectory | Out-Null Write-Host "Publishing ACE.Server as self-contained Windows x64..." Invoke-DotNet @("publish", (Join-Path $repoRoot "Source\ACE.Server\ACE.Server.csproj"), "-c", $Configuration, "-r", "win-x64", "--self-contained", "true", "-o", $serverPublish) @@ -59,11 +61,26 @@ Invoke-DotNet @("publish", (Join-Path $repoRoot "Source\ACE.SinglePlayer\ACE.Sin Write-Host "Publishing the optional Decal helper as a self-contained Windows x86 executable..." Invoke-DotNet @("publish", (Join-Path $repoRoot "Source\ACE.SinglePlayer.DecalHost\ACE.SinglePlayer.DecalHost.csproj"), "-c", $Configuration, "-r", "win-x86", "--self-contained", "true", "-p:PublishSingleFile=true", "-o", $decalHostPublish) +Write-Host "Building the curated CriticalOverride mod package..." +$criticalOverrideProject = Join-Path $repoRoot "Source\ACE.SinglePlayer.Mods.CriticalOverride" +Invoke-DotNet @("build", (Join-Path $criticalOverrideProject "ACE.SinglePlayer.Mods.CriticalOverride.csproj"), "-c", $Configuration, "-o", $criticalOverridePublish) + Copy-Item -Path (Join-Path $launcherPublish "*") -Destination $OutputDirectory -Recurse -Force -New-Item -ItemType Directory -Path (Join-Path $OutputDirectory "Server"), (Join-Path $OutputDirectory "Tools") | Out-Null +New-Item -ItemType Directory -Path (Join-Path $OutputDirectory "Server"), (Join-Path $OutputDirectory "Tools"), (Join-Path $OutputDirectory "Packages") | Out-Null Copy-Item -Path (Join-Path $serverPublish "*") -Destination (Join-Path $OutputDirectory "Server") -Recurse -Force Copy-Item -Path (Join-Path $decalHostPublish "ACE.SinglePlayer.DecalHost.exe") -Destination (Join-Path $OutputDirectory "Tools") -Force +$criticalOverrideModDirectory = Join-Path $criticalOverridePackage "mod" +New-Item -ItemType Directory -Path $criticalOverrideModDirectory | Out-Null +Copy-Item (Join-Path $criticalOverrideProject "ace-mod.json") $criticalOverridePackage +Copy-Item (Join-Path $criticalOverridePublish "CriticalOverride.dll") $criticalOverrideModDirectory +Copy-Item (Join-Path $criticalOverrideProject "Meta.json") $criticalOverrideModDirectory +Copy-Item (Join-Path $criticalOverrideProject "Settings.json") $criticalOverrideModDirectory +Copy-Item (Join-Path $criticalOverrideProject "README.md") $criticalOverrideModDirectory +$criticalOverrideArchive = Join-Path $OutputDirectory "Packages\aquafir.critical-override-1.0.0-sp1.zip" +Compress-Archive -Path (Join-Path $criticalOverridePackage "*") -DestinationPath $criticalOverrideArchive -CompressionLevel Optimal +(Get-FileHash -LiteralPath $criticalOverrideArchive -Algorithm SHA256).Hash | Set-Content -LiteralPath ($criticalOverrideArchive + ".sha256") -Encoding ascii + foreach ($directory in @("Runtime", "Mods", "Logs", "Client", "Docs")) { New-Item -ItemType Directory -Path (Join-Path $OutputDirectory $directory) -Force | Out-Null } @@ -71,6 +88,7 @@ Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_FIRST_RUN.md") (Join-Path $Ou Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_INSTALL.md") (Join-Path $OutputDirectory "INSTALL.md") Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_ARCHITECTURE.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "docs\AQUIFIR_MOD_COMPATIBILITY.md") (Join-Path $OutputDirectory "Docs") +Copy-Item (Join-Path $repoRoot "docs\MOD_LIBRARY.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_ROADMAP.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_BUILD_AND_TEST.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "README.md") $OutputDirectory From 059f5e170561b28a3b88bf2feea8ca8584b50112 Mon Sep 17 00:00:00 2001 From: titaniumweiner Date: Wed, 15 Jul 2026 17:41:18 -0400 Subject: [PATCH 07/15] Ship self-contained single-player release --- README.md | 17 ++- Source/ACE.SinglePlayer.DecalHost/Program.cs | 2 +- .../ClientLaunchTests.cs | 2 +- .../ConfigurationAndValidationTests.cs | 106 +++++++++++++- .../ACE.SinglePlayer/ACE.SinglePlayer.csproj | 2 +- .../DirectClientLaunchProvider.cs | 4 - .../Database/DatabaseBootstrapper.cs | 6 +- .../Database/ManagedMariaDbRuntime.cs | 2 +- .../AutomaticSetupConfigurator.cs | 66 +++++++++ .../Infrastructure/BundledDistribution.cs | 29 ++++ .../Infrastructure/ServerDatProvisioner.cs | 136 +++++++++++++++++ .../Infrastructure/SettingsPathRepairer.cs | 18 ++- .../Infrastructure/SetupValidator.cs | 66 +++++---- .../ACE.SinglePlayer/Models/LauncherState.cs | 1 + .../Orchestration/LauncherController.cs | 23 ++- Source/ACE.SinglePlayer/Program.cs | 31 +++- Source/ACE.SinglePlayer/UI/MainForm.cs | 1 + Source/ACE.SinglePlayer/UI/QuickSetupForm.cs | 104 +++++++++++++ Source/ACE.SinglePlayer/UI/SetupWizardForm.cs | 4 +- docs/SINGLE_PLAYER_ARCHITECTURE.md | 15 +- docs/SINGLE_PLAYER_BUILD_AND_TEST.md | 4 +- docs/SINGLE_PLAYER_FIRST_RUN.md | 25 ++-- docs/SINGLE_PLAYER_INSTALL.md | 29 ++-- docs/THIRD_PARTY_NOTICES.md | 30 ++++ scripts/publish-singleplayer.ps1 | 137 ++++++++++++++++-- 25 files changed, 748 insertions(+), 112 deletions(-) create mode 100644 Source/ACE.SinglePlayer/Infrastructure/AutomaticSetupConfigurator.cs create mode 100644 Source/ACE.SinglePlayer/Infrastructure/BundledDistribution.cs create mode 100644 Source/ACE.SinglePlayer/Infrastructure/ServerDatProvisioner.cs create mode 100644 Source/ACE.SinglePlayer/UI/QuickSetupForm.cs create mode 100644 docs/THIRD_PARTY_NOTICES.md diff --git a/README.md b/README.md index 95f96656f4..b3beaa3a97 100644 --- a/README.md +++ b/README.md @@ -11,17 +11,20 @@ The launcher is designed for players who want a persistent personal world withou - Persistent characters and world state - Direct Vanilla client launch, with one-click Decal support when Decal and ThwargLauncher are already installed - Self-contained Windows release; players do not need to install .NET -- Original game client, DAT files, MariaDB, and ACE World data remain user-supplied +- Pinned portable MariaDB and complete ACE World database included in the release +- Only the original game client and its four proprietary DAT files remain user-supplied ## Install The short version is: -1. Install MariaDB for Windows. -2. Have a complete Asheron's Call client in one writable folder with all four client DAT files beside `acclient.exe`. The usual client path is `C:\Turbine\Asheron's Call\acclient.exe`. -3. Download and extract the populated `ACE-World-Database-*.sql` file from the [official ACE World releases](https://github.com/ACEmulator/ACE-World-16PY-Patches/releases/latest). -4. Download the latest ACE Single Player release ZIP and extract it to a normal writable folder such as `C:\Games\ACE-SinglePlayer`. -5. Run `ACE.SinglePlayer.exe`, keep **Automatic private database**, select the client and world SQL file, save setup, and click **PLAY**. +1. Have a complete Asheron's Call client in one writable folder with `acclient.exe` and all four client DAT files. The usual path is `C:\Turbine\Asheron's Call`. +2. Download the latest ACE Single Player release ZIP and extract the entire archive to a normal writable folder such as `C:\Games\ACE-SinglePlayer`. +3. Run `ACE.SinglePlayer.exe`. If the client is not found automatically, select its folder once, then click **PLAY**. The first private-world import can take several minutes; later launches are much faster. + +On the first Play, the launcher also creates a private server copy of the four DAT files under `%LOCALAPPDATA%\ACESinglePlayer\ServerData`. This prevents ACE.Server from locking the original files needed by the client and requires roughly the same amount of free disk space as the four DATs. These local copies are never included in release ZIPs or GitHub. + +The portable release currently pins ACEmulator server build `1.77.4782` from upstream commit `650c5b75`, ACE World `v0.9.294`, and MariaDB `12.3.2 LTS`. Exact source URLs, hashes, and licenses are recorded in `BUNDLE-MANIFEST.json` and [the third-party notices](docs/THIRD_PARTY_NOTICES.md). ## Mods @@ -32,7 +35,7 @@ Turning a mod off stops its code after a server restart, but it does not undo ex See the [complete installation guide](docs/SINGLE_PLAYER_INSTALL.md) for prerequisites, expected file names, first-run instructions, troubleshooting, backups, and upgrade guidance. > [!IMPORTANT] -> This repository and its release packages do not contain Asheron's Call, proprietary DAT files, MariaDB, Decal, ThwargLauncher, or the ACE World database. Do not upload those files when sharing builds or reporting problems. +> The release does not contain Asheron's Call, `acclient.exe`, proprietary DAT files, Decal, or ThwargLauncher. It does include the redistributable open-source ACE server, ACE World database, and MariaDB runtime with their licenses and source links. Never upload your client or DAT files when sharing builds or reporting problems. ## Project status diff --git a/Source/ACE.SinglePlayer.DecalHost/Program.cs b/Source/ACE.SinglePlayer.DecalHost/Program.cs index 3c23696e34..869ea59faa 100644 --- a/Source/ACE.SinglePlayer.DecalHost/Program.cs +++ b/Source/ACE.SinglePlayer.DecalHost/Program.cs @@ -28,7 +28,7 @@ public static int Main(string[] args) var commandLine = BuildCommandLine(new[] { - client, "-a", account, "-v", password, "-h", $"{host}:{port}", "-rodat", "on" + client, "-a", account, "-v", password, "-h", $"{host}:{port}" }); var processId = LaunchWithInstalledThwargInjector( injector, diff --git a/Source/ACE.SinglePlayer.Tests/ClientLaunchTests.cs b/Source/ACE.SinglePlayer.Tests/ClientLaunchTests.cs index 2085f64581..03becc7e1f 100644 --- a/Source/ACE.SinglePlayer.Tests/ClientLaunchTests.cs +++ b/Source/ACE.SinglePlayer.Tests/ClientLaunchTests.cs @@ -37,7 +37,7 @@ public async Task DirectLaunchKeepsEveryCredentialArgumentSeparateAndExact() CollectionAssert.AreEqual(new[] { - "-a", account, "-v", password, "-h", "127.0.0.1:9000", "-rodat", "on" + "-a", account, "-v", password, "-h", "127.0.0.1:9000" }, arguments); } finally diff --git a/Source/ACE.SinglePlayer.Tests/ConfigurationAndValidationTests.cs b/Source/ACE.SinglePlayer.Tests/ConfigurationAndValidationTests.cs index 3688a9532c..d1b2d3a129 100644 --- a/Source/ACE.SinglePlayer.Tests/ConfigurationAndValidationTests.cs +++ b/Source/ACE.SinglePlayer.Tests/ConfigurationAndValidationTests.cs @@ -89,7 +89,7 @@ public void ValidatorRejectsClientWhoseDatFilesAreOnlyInASeparateServerDirectory } [TestMethod] - public void PathRepairerUsesDatsBesideClientAndCurrentPackagedServer() + public void PathRepairerUsesClientDatsOnlyUntilPrivateServerCopyExists() { var root = TestPaths.CreateTemporaryDirectory(); try @@ -121,6 +121,54 @@ public void PathRepairerUsesDatsBesideClientAndCurrentPackagedServer() Assert.AreEqual(Path.Combine(applicationDirectory, "Server", "ACE.Server.exe"), settings.ServerExePath); Assert.AreEqual(Path.Combine(applicationDirectory, "Mods"), settings.ModsDirectory); Assert.IsFalse(SettingsPathRepairer.Repair(settings, applicationDirectory)); + + var privateServerData = Path.Combine(root, "PrivateServerData"); + Directory.CreateDirectory(privateServerData); + foreach (var dat in SetupValidator.RequiredClientDatFiles) + File.WriteAllText(Path.Combine(privateServerData, dat), string.Empty); + settings.DatFilesDirectory = privateServerData; + + Assert.IsFalse(SettingsPathRepairer.Repair(settings, applicationDirectory)); + Assert.AreEqual(privateServerData, settings.DatFilesDirectory); + } + finally + { + Directory.Delete(root, true); + } + } + + [TestMethod] + public async Task ServerDatProvisionerCreatesAndRefreshesPrivateCopyWithoutChangingClientFiles() + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + var clientDirectory = Path.Combine(root, "Client"); + var targetDirectory = Path.Combine(root, "PrivateServerData"); + var logDirectory = Path.Combine(root, "Logs"); + Directory.CreateDirectory(clientDirectory); + var client = Path.Combine(clientDirectory, "acclient.exe"); + await File.WriteAllTextAsync(client, string.Empty); + foreach (var dat in SetupValidator.RequiredClientDatFiles) + await File.WriteAllTextAsync(Path.Combine(clientDirectory, dat), "original-" + dat); + + var settings = new LauncherSettings { ClientExePath = client }; + using var log = new LauncherLog(logDirectory); + var provisioner = new ServerDatProvisioner(log, targetDirectory); + + var result = await provisioner.EnsureAsync(settings, CancellationToken.None); + + Assert.AreEqual(targetDirectory, result); + Assert.IsFalse(provisioner.RequiresRefresh(settings)); + foreach (var dat in SetupValidator.RequiredClientDatFiles) + Assert.AreEqual("original-" + dat, await File.ReadAllTextAsync(Path.Combine(targetDirectory, dat))); + + var changedDat = Path.Combine(clientDirectory, SetupValidator.RequiredClientDatFiles[0]); + await File.AppendAllTextAsync(changedDat, "-changed"); + Assert.IsTrue(provisioner.RequiresRefresh(settings)); + await provisioner.EnsureAsync(settings, CancellationToken.None); + Assert.AreEqual(await File.ReadAllTextAsync(changedDat), + await File.ReadAllTextAsync(Path.Combine(targetDirectory, SetupValidator.RequiredClientDatFiles[0]))); } finally { @@ -128,6 +176,62 @@ public void PathRepairerUsesDatsBesideClientAndCurrentPackagedServer() } } + [TestMethod] + public void PortableBundleAutomaticallyConfiguresDatabaseWorldAndProtectedCredentials() + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + var applicationDirectory = Path.Combine(root, "InstalledApp"); + var clientDirectory = Path.Combine(root, "CompleteClient"); + CreatePortableBundle(applicationDirectory); + Directory.CreateDirectory(clientDirectory); + var client = Path.Combine(clientDirectory, "acclient.exe"); + File.WriteAllText(client, string.Empty); + foreach (var dat in SetupValidator.RequiredClientDatFiles) + File.WriteAllText(Path.Combine(clientDirectory, dat), string.Empty); + + var settings = LauncherSettings.CreateDefaults(applicationDirectory); + settings.ClientExePath = client; + settings.DatFilesDirectory = clientDirectory; + settings.RuntimeDirectory = Path.Combine(root, "Runtime"); + settings.PrivateDatabaseDirectoryPath = Path.Combine(root, "PrivateDatabase"); + + Assert.IsTrue(BundledDistribution.IsComplete(applicationDirectory)); + Assert.IsTrue(AutomaticSetupConfigurator.Configure(settings, applicationDirectory, new TestProtector())); + Assert.AreEqual(DatabaseMode.Private, settings.DatabaseMode); + Assert.AreEqual(BundledDistribution.MariaDbServerPath(applicationDirectory), settings.ManagedDatabaseExePath); + Assert.AreEqual(Path.Combine(applicationDirectory, "Dependencies", "World", "ACE-World-Database-v0.9.294.sql"), + settings.WorldDatabaseSqlPath); + Assert.IsFalse(string.IsNullOrWhiteSpace(settings.ProtectedAccountPassword)); + Assert.IsFalse(string.IsNullOrWhiteSpace(settings.ProtectedDatabasePassword)); + Assert.IsFalse(string.IsNullOrWhiteSpace(settings.ProtectedPrivateDatabaseAdminPassword)); + Assert.AreEqual(settings.ProtectedDatabasePassword, settings.ProtectedPrivateDatabasePassword); + Assert.IsTrue(SetupValidator.Validate(settings).IsValid, SetupValidator.Validate(settings).Message); + } + finally + { + Directory.Delete(root, true); + } + } + + private static void CreatePortableBundle(string applicationDirectory) + { + var serverDirectory = Path.Combine(applicationDirectory, "Server"); + var mariaDbDirectory = Path.Combine(applicationDirectory, "Dependencies", "MariaDB", "bin"); + var worldDirectory = Path.Combine(applicationDirectory, "Dependencies", "World"); + Directory.CreateDirectory(serverDirectory); + Directory.CreateDirectory(Path.Combine(applicationDirectory, "Mods")); + Directory.CreateDirectory(mariaDbDirectory); + Directory.CreateDirectory(worldDirectory); + File.WriteAllText(Path.Combine(serverDirectory, "ACE.Server.exe"), string.Empty); + File.WriteAllText(Path.Combine(mariaDbDirectory, "mariadbd.exe"), string.Empty); + File.WriteAllText(Path.Combine(mariaDbDirectory, "mariadb-install-db.exe"), string.Empty); + File.WriteAllText(Path.Combine(mariaDbDirectory, "mariadb.exe"), string.Empty); + File.WriteAllText(Path.Combine(worldDirectory, "ACE-World-Database-v0.9.294.sql"), + "INSERT INTO `weenie` VALUES (1, 'human');"); + } + private static LauncherSettings ValidSettings(string root) { var client = Path.Combine(root, "acclient.exe"); diff --git a/Source/ACE.SinglePlayer/ACE.SinglePlayer.csproj b/Source/ACE.SinglePlayer/ACE.SinglePlayer.csproj index 9b38044e3e..1f6166a5a2 100644 --- a/Source/ACE.SinglePlayer/ACE.SinglePlayer.csproj +++ b/Source/ACE.SinglePlayer/ACE.SinglePlayer.csproj @@ -12,7 +12,7 @@ ACE.SinglePlayer - + diff --git a/Source/ACE.SinglePlayer/ClientLaunch/DirectClientLaunchProvider.cs b/Source/ACE.SinglePlayer/ClientLaunch/DirectClientLaunchProvider.cs index fe3acaf3c8..4c6d46c3db 100644 --- a/Source/ACE.SinglePlayer/ClientLaunch/DirectClientLaunchProvider.cs +++ b/Source/ACE.SinglePlayer/ClientLaunch/DirectClientLaunchProvider.cs @@ -44,9 +44,5 @@ public static void AddAceArguments(IList arguments, string account, stri arguments.Add(password); arguments.Add("-h"); arguments.Add($"{host}:{port}"); - arguments.Add("-rodat"); - // ACE.Server keeps the client DATs open with shared-read access. The client must - // also open them read-only or Windows rejects its write request while the server runs. - arguments.Add("on"); } } diff --git a/Source/ACE.SinglePlayer/Database/DatabaseBootstrapper.cs b/Source/ACE.SinglePlayer/Database/DatabaseBootstrapper.cs index 3c5c22587b..375a33035c 100644 --- a/Source/ACE.SinglePlayer/Database/DatabaseBootstrapper.cs +++ b/Source/ACE.SinglePlayer/Database/DatabaseBootstrapper.cs @@ -52,11 +52,11 @@ private async Task PrepareWorldAsync(MySqlConnection connection, LauncherSetting if (!File.Exists(worldSqlPath)) throw new FileNotFoundException( - "Select the populated ACE-World-Database SQL package before initializing the world database.", worldSqlPath); + "The bundled populated ACE World database is missing. Extract the complete release again, or select an advanced replacement in Settings.", worldSqlPath); if (!await WorldSqlPackageInspector.ContainsRequiredWorldDataAsync(worldSqlPath, cancellationToken)) throw new InvalidDataException( - "The selected World SQL file contains empty table definitions but not the required ACE world data. " + - "Do not select Database\\Base\\WorldBase.sql. Extract and select ACE-World-Database-*.sql from the official ACE-World release package."); + "The configured World SQL file contains empty table definitions but not the required ACE world data. " + + "Re-extract the complete release or select a populated ACE-World-Database package in advanced Settings."); if (settings.DatabaseMode == DatabaseMode.Private) await ImportPrivateWorldAsync(settings, worldSqlPath, cancellationToken); diff --git a/Source/ACE.SinglePlayer/Database/ManagedMariaDbRuntime.cs b/Source/ACE.SinglePlayer/Database/ManagedMariaDbRuntime.cs index deecbc30f3..e6e86512f2 100644 --- a/Source/ACE.SinglePlayer/Database/ManagedMariaDbRuntime.cs +++ b/Source/ACE.SinglePlayer/Database/ManagedMariaDbRuntime.cs @@ -192,7 +192,7 @@ private static void ValidatePrivateSettings(LauncherSettings settings) if (settings.DatabaseMode == DatabaseMode.External) throw new InvalidOperationException("The private MariaDB runtime cannot start in external database mode."); if (!File.Exists(settings.ManagedDatabaseExePath)) - throw new FileNotFoundException("MariaDB was not found. Install MariaDB or select mariadbd.exe in Settings.", settings.ManagedDatabaseExePath); + throw new FileNotFoundException("The bundled MariaDB runtime was not found. Extract the complete release again, or select mariadbd.exe in advanced Settings.", settings.ManagedDatabaseExePath); if (MariaDbInstallationLocator.FindInitializer(settings.ManagedDatabaseExePath) is null) throw new FileNotFoundException("The MariaDB initializer was not found beside mariadbd.exe. Repair the MariaDB installation and retry."); if (!string.Equals(settings.DatabaseHost, "127.0.0.1", StringComparison.Ordinal)) diff --git a/Source/ACE.SinglePlayer/Infrastructure/AutomaticSetupConfigurator.cs b/Source/ACE.SinglePlayer/Infrastructure/AutomaticSetupConfigurator.cs new file mode 100644 index 0000000000..e385bc45a7 --- /dev/null +++ b/Source/ACE.SinglePlayer/Infrastructure/AutomaticSetupConfigurator.cs @@ -0,0 +1,66 @@ +using ACE.SinglePlayer.Database; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Infrastructure; + +public static class AutomaticSetupConfigurator +{ + public static bool Configure(LauncherSettings settings, string applicationDirectory, ISecretProtector protector) + { + var changed = SettingsPathRepairer.Repair(settings, applicationDirectory); + if (!BundledDistribution.IsComplete(applicationDirectory)) + return changed; + + changed |= SetIfDifferent(settings.DatabaseMode, DatabaseMode.Private, value => settings.DatabaseMode = value); + changed |= SetIfDifferent(settings.DatabaseHost, "127.0.0.1", value => settings.DatabaseHost = value); + changed |= SetIfDifferent(settings.DatabaseUsername, "ace_singleplayer", value => settings.DatabaseUsername = value); + + if (settings.DatabasePort == 0 || settings.DatabasePort == 3306) + { + settings.DatabasePort = PrivateDatabasePortFinder.FindAvailablePort(); + changed = true; + } + + if (string.IsNullOrWhiteSpace(settings.AccountName)) + { + settings.AccountName = "singleplayer"; + changed = true; + } + + if (string.IsNullOrWhiteSpace(settings.ProtectedAccountPassword)) + { + settings.ProtectedAccountPassword = protector.Protect(SecretProtector.GeneratePassword()); + changed = true; + } + + if (string.IsNullOrWhiteSpace(settings.ProtectedDatabasePassword)) + { + settings.ProtectedDatabasePassword = protector.Protect(SecretProtector.GeneratePassword()); + changed = true; + } + + if (!string.Equals(settings.ProtectedPrivateDatabasePassword, settings.ProtectedDatabasePassword, StringComparison.Ordinal)) + { + settings.ProtectedPrivateDatabasePassword = settings.ProtectedDatabasePassword; + changed = true; + } + + if (string.IsNullOrWhiteSpace(settings.ProtectedPrivateDatabaseAdminPassword) && + !Directory.Exists(Path.Combine(settings.PrivateDatabaseDirectory, "mysql"))) + { + settings.ProtectedPrivateDatabaseAdminPassword = protector.Protect(SecretProtector.GeneratePassword()); + changed = true; + } + + return changed; + } + + private static bool SetIfDifferent(T current, T replacement, Action setter) + { + if (EqualityComparer.Default.Equals(current, replacement)) + return false; + + setter(replacement); + return true; + } +} diff --git a/Source/ACE.SinglePlayer/Infrastructure/BundledDistribution.cs b/Source/ACE.SinglePlayer/Infrastructure/BundledDistribution.cs new file mode 100644 index 0000000000..5e40c408b4 --- /dev/null +++ b/Source/ACE.SinglePlayer/Infrastructure/BundledDistribution.cs @@ -0,0 +1,29 @@ +namespace ACE.SinglePlayer.Infrastructure; + +public static class BundledDistribution +{ + public const string MariaDbVersion = "12.3.2"; + public const string WorldVersion = "0.9.294"; + + public static string MariaDbServerPath(string applicationDirectory) => Path.GetFullPath(Path.Combine( + applicationDirectory, "Dependencies", "MariaDB", "bin", "mariadbd.exe")); + + public static string? FindWorldSqlPath(string applicationDirectory) + { + var directory = Path.GetFullPath(Path.Combine(applicationDirectory, "Dependencies", "World")); + if (!Directory.Exists(directory)) + return null; + + return Directory.EnumerateFiles(directory, "ACE-World-Database-*.sql", SearchOption.TopDirectoryOnly) + .OrderBy(path => path, StringComparer.OrdinalIgnoreCase) + .FirstOrDefault(); + } + + public static bool IsComplete(string applicationDirectory) + { + var mariaDb = MariaDbServerPath(applicationDirectory); + return File.Exists(mariaDb) && Database.MariaDbInstallationLocator.FindInitializer(mariaDb) is not null && + Database.MariaDbInstallationLocator.FindClient(mariaDb) is not null && + FindWorldSqlPath(applicationDirectory) is not null; + } +} diff --git a/Source/ACE.SinglePlayer/Infrastructure/ServerDatProvisioner.cs b/Source/ACE.SinglePlayer/Infrastructure/ServerDatProvisioner.cs new file mode 100644 index 0000000000..b935160de2 --- /dev/null +++ b/Source/ACE.SinglePlayer/Infrastructure/ServerDatProvisioner.cs @@ -0,0 +1,136 @@ +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Infrastructure; + +public sealed class ServerDatProvisioner +{ + private const long FreeSpaceSafetyMargin = 64L * 1024 * 1024; + private readonly LauncherLog log; + + public ServerDatProvisioner(LauncherLog log, string? targetDirectory = null) + { + this.log = log; + TargetDirectory = targetDirectory ?? GetDefaultDirectory(); + } + + public string TargetDirectory { get; } + + public static string GetDefaultDirectory() => Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), + "ACESinglePlayer", "ServerData"); + + public bool RequiresRefresh(LauncherSettings settings) + { + var sourceDirectory = SetupValidator.DetectDatDirectory(settings.ClientExePath); + if (sourceDirectory is null) + return true; + + return SetupValidator.RequiredClientDatFiles.Any(file => + !FilesMatch(Path.Combine(sourceDirectory, file), Path.Combine(TargetDirectory, file))); + } + + public async Task EnsureAsync(LauncherSettings settings, CancellationToken cancellationToken) + { + var sourceDirectory = SetupValidator.DetectDatDirectory(settings.ClientExePath) + ?? throw new InvalidOperationException( + "The selected Asheron's Call client is missing one or more required DAT files."); + var sourceFullPath = Path.GetFullPath(sourceDirectory); + var targetFullPath = Path.GetFullPath(TargetDirectory); + if (string.Equals(sourceFullPath.TrimEnd(Path.DirectorySeparatorChar), + targetFullPath.TrimEnd(Path.DirectorySeparatorChar), StringComparison.OrdinalIgnoreCase)) + throw new InvalidOperationException("The private server DAT directory must be separate from the game client directory."); + + Directory.CreateDirectory(targetFullPath); + FilePermissionHardener.RestrictDirectoryToCurrentUser(targetFullPath); + + var pending = SetupValidator.RequiredClientDatFiles + .Select(file => new DatCopy( + file, + Path.Combine(sourceFullPath, file), + Path.Combine(targetFullPath, file))) + .Where(copy => !FilesMatch(copy.SourcePath, copy.TargetPath)) + .ToArray(); + EnsureFreeSpace(targetFullPath, pending); + + try + { + foreach (var copy in pending) + { + cancellationToken.ThrowIfCancellationRequested(); + log.Write($"Copying {copy.FileName} into the private ACE.Server data directory. The original client file is unchanged."); + await CopyAtomicallyAsync(copy.SourcePath, copy.TargetPath, cancellationToken); + } + } + catch (Exception ex) when (ex is IOException or UnauthorizedAccessException) + { + throw new IOException( + $"ACE Single Player could not prepare its private server data files in '{targetFullPath}'. " + + "Close any running ACE.Server process and make sure the drive has enough free space. " + ex.Message, + ex); + } + + log.Write($"ACE.Server will use the private DAT copy at '{targetFullPath}'. The game client will use its original files at '{sourceFullPath}'."); + return targetFullPath; + } + + private static async Task CopyAtomicallyAsync(string sourcePath, string targetPath, CancellationToken cancellationToken) + { + var temporaryPath = targetPath + "." + Guid.NewGuid().ToString("N") + ".tmp"; + try + { + var sourceInfo = new FileInfo(sourcePath); + await using (var source = new FileStream(sourcePath, FileMode.Open, FileAccess.Read, FileShare.Read, + 1024 * 1024, FileOptions.Asynchronous | FileOptions.SequentialScan)) + await using (var target = new FileStream(temporaryPath, FileMode.CreateNew, FileAccess.Write, FileShare.None, + 1024 * 1024, FileOptions.Asynchronous | FileOptions.SequentialScan)) + { + await source.CopyToAsync(target, 1024 * 1024, cancellationToken); + await target.FlushAsync(cancellationToken); + } + + if (new FileInfo(temporaryPath).Length != sourceInfo.Length) + throw new IOException($"The private copy of {Path.GetFileName(sourcePath)} was incomplete."); + + File.SetLastWriteTimeUtc(temporaryPath, sourceInfo.LastWriteTimeUtc); + File.Move(temporaryPath, targetPath, true); + } + finally + { + if (File.Exists(temporaryPath)) + File.Delete(temporaryPath); + } + } + + private static bool FilesMatch(string sourcePath, string targetPath) + { + if (!File.Exists(sourcePath) || !File.Exists(targetPath)) + return false; + + var source = new FileInfo(sourcePath); + var target = new FileInfo(targetPath); + return source.Length == target.Length && source.LastWriteTimeUtc == target.LastWriteTimeUtc; + } + + private static void EnsureFreeSpace(string targetDirectory, IReadOnlyCollection pending) + { + if (pending.Count == 0) + return; + + var required = pending.Sum(copy => new FileInfo(copy.SourcePath).Length) + FreeSpaceSafetyMargin; + var root = Path.GetPathRoot(targetDirectory); + if (string.IsNullOrWhiteSpace(root)) + return; + + var drive = new DriveInfo(root); + if (drive.AvailableFreeSpace >= required) + return; + + throw new IOException( + $"The private ACE.Server DAT copy needs about {FormatBytes(required)} free on {drive.Name}, " + + $"but only {FormatBytes(drive.AvailableFreeSpace)} is available."); + } + + private static string FormatBytes(long bytes) => $"{bytes / 1024d / 1024d / 1024d:0.00} GB"; + + private sealed record DatCopy(string FileName, string SourcePath, string TargetPath); +} diff --git a/Source/ACE.SinglePlayer/Infrastructure/SettingsPathRepairer.cs b/Source/ACE.SinglePlayer/Infrastructure/SettingsPathRepairer.cs index f6292e8301..b0356e3d61 100644 --- a/Source/ACE.SinglePlayer/Infrastructure/SettingsPathRepairer.cs +++ b/Source/ACE.SinglePlayer/Infrastructure/SettingsPathRepairer.cs @@ -12,7 +12,8 @@ public static bool Repair(LauncherSettings settings, string applicationDirectory { var clientDirectory = SetupValidator.DetectDatDirectory(completeClient)!; changed |= SetIfDifferent(settings.ClientExePath, completeClient, value => settings.ClientExePath = value); - changed |= SetIfDifferent(settings.DatFilesDirectory, clientDirectory, value => settings.DatFilesDirectory = value); + if (!HasServerDatFiles(settings.DatFilesDirectory)) + changed |= SetIfDifferent(settings.DatFilesDirectory, clientDirectory, value => settings.DatFilesDirectory = value); } var packagedServer = Path.GetFullPath(Path.Combine(applicationDirectory, "Server", "ACE.Server.exe")); @@ -23,6 +24,16 @@ public static bool Repair(LauncherSettings settings, string applicationDirectory if (Directory.Exists(packagedMods)) changed |= SetIfDifferent(settings.ModsDirectory, packagedMods, value => settings.ModsDirectory = value); + var bundledMariaDb = BundledDistribution.MariaDbServerPath(applicationDirectory); + if (File.Exists(bundledMariaDb)) + changed |= SetIfDifferent(settings.ManagedDatabaseExePath, bundledMariaDb, + value => settings.ManagedDatabaseExePath = value); + + var bundledWorld = BundledDistribution.FindWorldSqlPath(applicationDirectory); + if (bundledWorld is not null) + changed |= SetIfDifferent(settings.WorldDatabaseSqlPath, bundledWorld, + value => settings.WorldDatabaseSqlPath = value); + return changed; } @@ -63,4 +74,9 @@ private static bool SetIfDifferent(string current, string replacement, Action + !string.IsNullOrWhiteSpace(directory) && + Directory.Exists(directory) && + SetupValidator.RequiredDatFiles.All(file => File.Exists(Path.Combine(directory, file))); } diff --git a/Source/ACE.SinglePlayer/Infrastructure/SetupValidator.cs b/Source/ACE.SinglePlayer/Infrastructure/SetupValidator.cs index e7e92dfca0..2039b82075 100644 --- a/Source/ACE.SinglePlayer/Infrastructure/SetupValidator.cs +++ b/Source/ACE.SinglePlayer/Infrastructure/SetupValidator.cs @@ -28,43 +28,21 @@ public static class SetupValidator public static ValidationResult Validate(LauncherSettings settings) { - var errors = new List(); - if (!File.Exists(settings.ClientExePath)) - errors.Add("Select a valid acclient.exe file."); - else if (!string.Equals(Path.GetFileName(settings.ClientExePath), "acclient.exe", StringComparison.OrdinalIgnoreCase)) - errors.Add("The selected client executable must be acclient.exe."); - else - { - var clientDirectory = Path.GetDirectoryName(Path.GetFullPath(settings.ClientExePath))!; - var missingClientDats = RequiredClientDatFiles - .Where(file => !File.Exists(Path.Combine(clientDirectory, file))) - .ToArray(); - if (missingClientDats.Length > 0) - { - errors.Add("The folder containing acclient.exe is missing required client data files: " + - string.Join(", ", missingClientDats) + - ". The AC client must have its DAT files in the same folder as acclient.exe. Copy the complete client installation to a writable folder such as C:\\Games\\AsheronsCall, then select that acclient.exe."); - } - else if (!CanWriteDirectory(clientDirectory)) - { - errors.Add("The folder containing acclient.exe is not writable. Copy the complete AC client installation to a normal folder such as C:\\Games\\AsheronsCall; do not run it from Program Files, OneDrive, or a read-only archive."); - } - } - + var errors = new List(ValidateClient(settings).Errors); if (!File.Exists(settings.ServerExePath)) - errors.Add("Select a published ACE.Server executable."); + errors.Add("The bundled ACE.Server executable is missing. Extract the complete ACE Single Player ZIP again."); if (!Directory.Exists(settings.DatFilesDirectory)) - errors.Add("Return to the first setup page and select acclient.exe from a complete Asheron's Call installation. The DAT folder is filled automatically."); + errors.Add("Select the folder containing acclient.exe. The DAT folder is filled automatically."); else foreach (var file in RequiredDatFiles) if (!File.Exists(Path.Combine(settings.DatFilesDirectory, file))) errors.Add($"The DAT directory is missing {file}."); if (string.IsNullOrWhiteSpace(settings.ModsDirectory)) - errors.Add("Select a Mods directory."); + errors.Add("The bundled Mods directory is missing."); if (string.IsNullOrWhiteSpace(settings.RuntimeDirectory)) - errors.Add("Select a Runtime directory."); + errors.Add("The private Runtime directory is missing."); if (!IPAddress.TryParse(settings.Host, out var host) || !IPAddress.IsLoopback(host)) errors.Add("The standard single-player host must be a loopback address (127.0.0.1)."); if (settings.Port is 0 or ushort.MaxValue) @@ -87,15 +65,43 @@ public static ValidationResult Validate(LauncherSettings settings) if (!string.Equals(settings.DatabaseUsername, "ace_singleplayer", StringComparison.Ordinal)) errors.Add("The automatic private database must use its isolated ACE account."); if (!File.Exists(settings.ManagedDatabaseExePath)) - errors.Add("MariaDB was not detected. Install MariaDB or select its mariadbd.exe file."); + errors.Add("The bundled private database runtime is missing. Extract the complete ACE Single Player ZIP again."); else if (Database.MariaDbInstallationLocator.FindInitializer(settings.ManagedDatabaseExePath) is null) - errors.Add("The MariaDB initializer is missing beside mariadbd.exe. Repair the MariaDB installation."); + errors.Add("The bundled MariaDB initializer is missing. Extract the complete ACE Single Player ZIP again."); if (string.IsNullOrWhiteSpace(settings.ProtectedDatabasePassword) || string.IsNullOrWhiteSpace(settings.ProtectedPrivateDatabaseAdminPassword)) errors.Add("The automatic private database credentials have not been generated."); if (!Directory.Exists(Path.Combine(settings.PrivateDatabaseDirectory, "mysql")) && !File.Exists(settings.WorldDatabaseSqlPath)) - errors.Add("Select an ACE world-database SQL package for the private database's first setup."); + errors.Add("The bundled ACE World database is missing. Extract the complete ACE Single Player ZIP again."); + } + + return new ValidationResult(errors.Count == 0, errors); + } + + public static ValidationResult ValidateClient(LauncherSettings settings) + { + var errors = new List(); + if (!File.Exists(settings.ClientExePath)) + errors.Add("Select the folder containing acclient.exe."); + else if (!string.Equals(Path.GetFileName(settings.ClientExePath), "acclient.exe", StringComparison.OrdinalIgnoreCase)) + errors.Add("The selected client executable must be acclient.exe."); + else + { + var clientDirectory = Path.GetDirectoryName(Path.GetFullPath(settings.ClientExePath))!; + var missingClientDats = RequiredClientDatFiles + .Where(file => !File.Exists(Path.Combine(clientDirectory, file))) + .ToArray(); + if (missingClientDats.Length > 0) + { + errors.Add("The folder containing acclient.exe is missing required client data files: " + + string.Join(", ", missingClientDats) + + ". The AC client must have its DAT files in the same folder as acclient.exe. Copy the complete client installation to a writable folder such as C:\\Games\\AsheronsCall, then select that acclient.exe."); + } + else if (!CanWriteDirectory(clientDirectory)) + { + errors.Add("The folder containing acclient.exe is not writable. Copy the complete AC client installation to a normal folder such as C:\\Games\\AsheronsCall; do not run it from Program Files, OneDrive, or a read-only archive."); + } } return new ValidationResult(errors.Count == 0, errors); diff --git a/Source/ACE.SinglePlayer/Models/LauncherState.cs b/Source/ACE.SinglePlayer/Models/LauncherState.cs index c87e86c0fe..e061c47017 100644 --- a/Source/ACE.SinglePlayer/Models/LauncherState.cs +++ b/Source/ACE.SinglePlayer/Models/LauncherState.cs @@ -3,6 +3,7 @@ namespace ACE.SinglePlayer.Models; public enum LauncherState { NotConfigured, + PreparingData, CheckingDatabase, StartingDatabase, StartingServer, diff --git a/Source/ACE.SinglePlayer/Orchestration/LauncherController.cs b/Source/ACE.SinglePlayer/Orchestration/LauncherController.cs index 9c0ed55fe4..650ea8f8ca 100644 --- a/Source/ACE.SinglePlayer/Orchestration/LauncherController.cs +++ b/Source/ACE.SinglePlayer/Orchestration/LauncherController.cs @@ -20,6 +20,7 @@ public sealed class LauncherController : IAsyncDisposable private readonly ReadyFileMonitor readyFileMonitor; private readonly ISecretProtector secretProtector; private readonly LauncherLog log; + private readonly ServerDatProvisioner serverDatProvisioner; private readonly PlayOperationGate playGate = new(); private CancellationTokenSource? runCancellation; private IDatabaseRuntime? databaseRuntime; @@ -40,6 +41,7 @@ public LauncherController(LauncherSettings settings, AceConfigurationWriter conf this.readyFileMonitor = readyFileMonitor; this.secretProtector = secretProtector; this.log = log; + serverDatProvisioner = new ServerDatProvisioner(log); State = new LauncherStateMachine(); serverManager.UnexpectedExit += exitCode => State.Set(LauncherState.Error, @@ -87,9 +89,28 @@ public async Task PlayAsync(CancellationToken cancellationToken = default) runCancellation = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken); var token = runCancellation.Token; + if (serverManager.IsRunning && serverDatProvisioner.RequiresRefresh(Settings)) + { + log.Write("Stopping the current ACE.Server process before refreshing its private DAT copy."); + await serverManager.StopAsync(token); + } + + State.Set(LauncherState.PreparingData, + "Preparing private server data files. The first run may take a few minutes..."); + var serverDatDirectory = await serverDatProvisioner.EnsureAsync(Settings, token); + if (!string.Equals(Settings.DatFilesDirectory, serverDatDirectory, StringComparison.OrdinalIgnoreCase)) + { + Settings.DatFilesDirectory = serverDatDirectory; + await settingsStore.SaveAsync(Settings, token); + } + + validation = SetupValidator.Validate(Settings); + if (!validation.IsValid) + throw new InvalidOperationException(validation.Message); + if (!serverManager.IsRunning) { - databaseRuntime = databaseRuntimeFactory.Create(Settings); + databaseRuntime ??= databaseRuntimeFactory.Create(Settings); State.Set(databaseRuntime.IsManaged ? LauncherState.StartingDatabase : LauncherState.CheckingDatabase, databaseRuntime.IsManaged ? "Preparing your private local database..." : "Checking MariaDB/MySQL and ACE databases..."); await databaseRuntime.StartAsync(Settings, token); diff --git a/Source/ACE.SinglePlayer/Program.cs b/Source/ACE.SinglePlayer/Program.cs index 30cd5b0ffc..dc4e47044d 100644 --- a/Source/ACE.SinglePlayer/Program.cs +++ b/Source/ACE.SinglePlayer/Program.cs @@ -59,18 +59,31 @@ private static void RunApplication() settings = LauncherSettings.CreateDefaults(AppContext.BaseDirectory); } - if (settings.DatabaseMode != DatabaseMode.External) + var portableBundle = BundledDistribution.IsComplete(AppContext.BaseDirectory); + var settingsChanged = SettingsPathRepairer.Repair(settings, AppContext.BaseDirectory); + if (portableBundle && settings.DatabaseMode != DatabaseMode.External) + settingsChanged |= AutomaticSetupConfigurator.Configure(settings, AppContext.BaseDirectory, protector); + else if (settings.DatabaseMode != DatabaseMode.External) settings.ManagedDatabaseExePath = MariaDbInstallationLocator.FindServerExecutable(settings.ManagedDatabaseExePath) ?? settings.ManagedDatabaseExePath; - if (SettingsPathRepairer.Repair(settings, AppContext.BaseDirectory)) + if (settingsChanged) { - log.Write("Automatically repaired the client/DAT or packaged server paths for this installation."); + log.Write("Automatically configured the bundled server, world, database, or client paths for this installation."); if (store.Exists) store.SaveAsync(settings).GetAwaiter().GetResult(); } - if (!store.Exists || !SetupValidator.Validate(settings).IsValid) + if (portableBundle && settings.DatabaseMode != DatabaseMode.External && !SetupValidator.ValidateClient(settings).IsValid) + { + using var quickSetup = new QuickSetupForm(settings); + if (quickSetup.ShowDialog() != DialogResult.OK) + return; + AutomaticSetupConfigurator.Configure(settings, AppContext.BaseDirectory, protector); + store.SaveAsync(settings).GetAwaiter().GetResult(); + } + else if ((!portableBundle || settings.DatabaseMode == DatabaseMode.External) && + (!store.Exists || !SetupValidator.Validate(settings).IsValid)) { using var wizard = new SetupWizardForm(settings, store, protector, runtimeFactory, bootstrapper); if (wizard.ShowDialog() != DialogResult.OK) @@ -78,6 +91,16 @@ private static void RunApplication() settings = wizard.SavedSettings; } + var validation = SetupValidator.Validate(settings); + if (!validation.IsValid) + { + MessageBox.Show(validation.Message, "ACE Single Player needs attention", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + + if (!store.Exists) + store.SaveAsync(settings).GetAwaiter().GetResult(); + using var serverManager = new AceServerProcessManager(log); using var clientManager = new ClientProcessManager(new IClientLaunchProvider[] { diff --git a/Source/ACE.SinglePlayer/UI/MainForm.cs b/Source/ACE.SinglePlayer/UI/MainForm.cs index 2ce323d87b..2ab593bb43 100644 --- a/Source/ACE.SinglePlayer/UI/MainForm.cs +++ b/Source/ACE.SinglePlayer/UI/MainForm.cs @@ -286,6 +286,7 @@ private async void OnFormClosing(object? sender, FormClosingEventArgs args) private static string ToDisplayName(LauncherState value) => value switch { LauncherState.NotConfigured => "Not configured", + LauncherState.PreparingData => "Preparing game data", LauncherState.CheckingDatabase => "Checking database", LauncherState.StartingDatabase => "Starting database", LauncherState.StartingServer => "Starting server", diff --git a/Source/ACE.SinglePlayer/UI/QuickSetupForm.cs b/Source/ACE.SinglePlayer/UI/QuickSetupForm.cs new file mode 100644 index 0000000000..58c16dda3a --- /dev/null +++ b/Source/ACE.SinglePlayer/UI/QuickSetupForm.cs @@ -0,0 +1,104 @@ +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.UI; + +public sealed class QuickSetupForm : Form +{ + private readonly LauncherSettings settings; + private readonly TextBox clientDirectory = new() { Dock = DockStyle.Fill }; + + public QuickSetupForm(LauncherSettings settings) + { + this.settings = settings; + Text = "ACE Single Player - Choose Asheron's Call"; + StartPosition = FormStartPosition.CenterScreen; + FormBorderStyle = FormBorderStyle.FixedDialog; + MaximizeBox = false; + MinimizeBox = false; + ClientSize = new Size(690, 260); + + var existingDirectory = Path.GetDirectoryName(settings.ClientExePath); + clientDirectory.Text = Directory.Exists(existingDirectory) ? existingDirectory : string.Empty; + + var title = new Label + { + Text = "Where is Asheron's Call installed?", + AutoSize = true, + Font = new Font(SystemFonts.MessageBoxFont!.FontFamily, 15, FontStyle.Bold), + Margin = new Padding(0, 0, 0, 12) + }; + var explanation = new Label + { + Text = "Select the folder containing acclient.exe and the four client DAT files. Everything else—the ACE server, private database, and world—is already included.", + AutoSize = true, + MaximumSize = new Size(640, 0), + Margin = new Padding(0, 0, 0, 14) + }; + var browse = new Button { Text = "Browse...", AutoSize = true, Dock = DockStyle.Fill }; + browse.Click += (_, _) => BrowseForClient(); + var pathRow = new TableLayoutPanel { Width = 640, Height = 34, ColumnCount = 2 }; + pathRow.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100)); + pathRow.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize)); + pathRow.Controls.Add(clientDirectory, 0, 0); + pathRow.Controls.Add(browse, 1, 0); + + var continueButton = new Button { Text = "Save and Continue", AutoSize = true }; + continueButton.Click += (_, _) => SaveClientFolder(); + var cancel = new Button { Text = "Cancel", AutoSize = true, DialogResult = DialogResult.Cancel }; + var buttons = new FlowLayoutPanel + { + AutoSize = true, + Dock = DockStyle.Bottom, + FlowDirection = FlowDirection.RightToLeft, + Padding = new Padding(0, 12, 0, 0) + }; + buttons.Controls.Add(continueButton); + buttons.Controls.Add(cancel); + + var content = new FlowLayoutPanel + { + Dock = DockStyle.Fill, + FlowDirection = FlowDirection.TopDown, + WrapContents = false, + Padding = new Padding(24), + AutoScroll = true + }; + content.Controls.Add(title); + content.Controls.Add(explanation); + content.Controls.Add(pathRow); + content.Controls.Add(buttons); + Controls.Add(content); + AcceptButton = continueButton; + CancelButton = cancel; + } + + private void BrowseForClient() + { + using var dialog = new FolderBrowserDialog + { + Description = "Select the folder containing acclient.exe and the Asheron's Call DAT files", + SelectedPath = clientDirectory.Text, + ShowNewFolderButton = false + }; + if (dialog.ShowDialog(this) == DialogResult.OK) + clientDirectory.Text = dialog.SelectedPath; + } + + private void SaveClientFolder() + { + var directory = clientDirectory.Text.Trim(); + settings.ClientExePath = Path.Combine(directory, "acclient.exe"); + settings.DatFilesDirectory = directory; + var validation = SetupValidator.ValidateClient(settings); + if (!validation.IsValid) + { + MessageBox.Show(this, validation.Message, "Choose the complete AC folder", MessageBoxButtons.OK, + MessageBoxIcon.Warning); + return; + } + + DialogResult = DialogResult.OK; + Close(); + } +} diff --git a/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs b/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs index 8e1080b640..86ba086559 100644 --- a/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs +++ b/Source/ACE.SinglePlayer/UI/SetupWizardForm.cs @@ -36,7 +36,7 @@ public sealed class SetupWizardForm : Form private readonly Label databaseStatus = new() { AutoSize = true, MaximumSize = new Size(620, 0) }; private readonly Label privateDatabaseNote = new() { - Text = "Recommended: the launcher creates an isolated database in your local Windows app-data folder (outside OneDrive), generates its credentials, binds it only to this PC, and leaves the Windows MariaDB service untouched. Select an extracted, populated ACE-World-Database-*.sql file; Database\\Base\\WorldBase.sql contains only empty tables.", + Text = "Recommended: the launcher uses its bundled MariaDB and ACE World files to create an isolated database in local Windows app data. Credentials are generated automatically and the database binds only to this PC.", AutoSize = true, MaximumSize = new Size(650, 0) }; @@ -160,7 +160,7 @@ private TabPage CreateDatabasePage() () => BrowseFile(managedDatabaseExe, "MariaDB server|mariadbd.exe"), 9); privateDatabaseControls.AddRange(new Control[] { mariaDbPathControls.Label, managedDatabaseExe, mariaDbPathControls.Button }); AddPathRow(layout, "World SQL package", worldSql, - "Select extracted ACE-World-Database-*.sql, not Database\\Base\\WorldBase.sql", + "Bundled automatically; browse only to use an advanced replacement world", () => BrowseFile(worldSql, "SQL files|*.sql"), 10); var actions = new FlowLayoutPanel { AutoSize = true, FlowDirection = FlowDirection.LeftToRight }; diff --git a/docs/SINGLE_PLAYER_ARCHITECTURE.md b/docs/SINGLE_PLAYER_ARCHITECTURE.md index 2e7e84d7bb..d486bd6bd7 100644 --- a/docs/SINGLE_PLAYER_ARCHITECTURE.md +++ b/docs/SINGLE_PLAYER_ARCHITECTURE.md @@ -4,7 +4,7 @@ `ACE.SinglePlayer.exe` is a WinForms orchestrator, not an offline rewrite of ACE. It owns and monitors these optional child processes: -1. A user-installed `mariadbd.exe` in automatic private-database mode. +1. The release's pinned `Dependencies\MariaDB\bin\mariadbd.exe` in automatic private-database mode. 2. The published `ACE.Server.exe`, started with `--config ` and `--ready-file `. 3. `acclient.exe`, launched directly in Vanilla mode or through the package's isolated x86 bridge to an installed ThwargLauncher injector. @@ -26,17 +26,19 @@ Process arguments are added individually. Arguments and configuration content ar ## Databases -`IDatabaseRuntime` separates an advanced external connection from the default private MariaDB. Validation checks authentication, all three schema names, core tables (`account`, `character`, and `weenie`), and the required Human world record (`weenie.class_Id = 1`). `DatabaseBootstrapper` uses the packaged ACE authentication/shard base SQL and a user-selected populated world SQL package. It rejects the schema-only `Database\Base\WorldBase.sql`. External databases remain conservative and are never rewritten when incomplete; an isolated private database with empty world tables can be repaired by streaming the selected full dump through MariaDB's local import client. +`IDatabaseRuntime` separates an advanced external connection from the default private MariaDB. Validation checks authentication, all three schema names, core tables (`account`, `character`, and `weenie`), and the required Human world record (`weenie.class_Id = 1`). `DatabaseBootstrapper` uses the packaged ACE authentication/shard base SQL and the pinned complete world SQL under `Dependencies\World`. It rejects schema-only world data. External databases remain conservative and are never rewritten when incomplete; an isolated private database with empty world tables can be repaired by streaming the bundled full dump through MariaDB's local import client. -Private mode detects or accepts a specific `mariadbd.exe` and requires the matching initializer and `mariadb.exe`/`mysql.exe` import client beside it. First initialization occurs in a unique staging directory and is promoted to `%LOCALAPPDATA%\ACESinglePlayer\Database` only after MariaDB's system tables exist. Keeping database files outside the package prevents OneDrive or other cloud-sync reparse points from breaking MariaDB schema operations. Existing `Runtime\Database` data is copied once to the local location and retained at the old path as a backup. The launcher chooses an available local port, passes `--no-defaults`, binds to `127.0.0.1`, disables remote-root creation, and never opens a firewall port. +Private mode prefers the pinned bundled `mariadbd.exe` and requires its matching initializer and import client. First initialization occurs in a unique staging directory and is promoted to `%LOCALAPPDATA%\ACESinglePlayer\Database` only after MariaDB's system tables exist. Keeping database data outside the release folder prevents cloud-sync locks and allows application upgrades without replacing characters. Existing `Runtime\Database` data is copied once to the local location and retained at the old path as a backup. The launcher chooses an available local port, passes `--no-defaults`, binds to `127.0.0.1`, disables remote-root creation, and never opens a firewall port. Two random passwords are generated: a private administrator credential used only for lifecycle/provisioning and a dedicated `ace_singleplayer` application credential granted only over the three configured ACE schemas. Both are protected by Windows DPAPI. MariaDB output is redacted against both secrets. The launcher sends MariaDB's supported `SHUTDOWN` statement before forcing only its own child after a timeout. A version-1 loopback `root` configuration migrates into the private setup flow; non-root external configurations remain external. ## Client providers -`IClientLaunchProvider` isolates client choices. `DirectClientLaunchProvider` uses `ProcessStartInfo.ArgumentList` for `-a`, `-v`, `-h`, and `-rodat on`; read-only DAT access allows ACE.Server and `acclient.exe` to use the same files concurrently. Vanilla mode has no Decal, Thwarg, Chorizite, or injection dependency. +`ServerDatProvisioner` copies the four user-supplied DAT files into `%LOCALAPPDATA%\ACESinglePlayer\ServerData` before ACE.Server starts. File size and modification time are used to refresh only changed files, and every replacement is staged before it becomes active. ACE.Server keeps its DAT streams open for performance, so this private copy prevents it from locking the original client files. The proprietary DATs remain local and are never placed in the release archive or repository. -`DecalClientLaunchProvider` detects `SOFTWARE\Decal\Agent\AgentPath` and `SOFTWARE\Thwargle Games\ThwargLauncher\Path` in 32/64-bit HKLM/HKCU views, then validates Decal's `Inject.dll` and ThwargLauncher's `injector.dll`. A separately built, self-contained x86 bridge loads the installed Thwarg native launcher and asks it to start `acclient.exe` with Decal's `DecalStartup` entry point. The account, protected password, loopback server address, and `-rodat on` setting are supplied automatically by ACE Single Player. No Decal, ThwargLauncher, ThwargFilter, or third-party injector binary is bundled or copied. +`IClientLaunchProvider` isolates client choices. `DirectClientLaunchProvider` uses `ProcessStartInfo.ArgumentList` for `-a`, `-v`, and `-h`. Vanilla mode has no Decal, Thwarg, Chorizite, or injection dependency. + +`DecalClientLaunchProvider` detects `SOFTWARE\Decal\Agent\AgentPath` and `SOFTWARE\Thwargle Games\ThwargLauncher\Path` in 32/64-bit HKLM/HKCU views, then validates Decal's `Inject.dll` and ThwargLauncher's `injector.dll`. A separately built, self-contained x86 bridge loads the installed Thwarg native launcher and asks it to start `acclient.exe` with Decal's `DecalStartup` entry point. The account, protected password, and loopback server address are supplied automatically by ACE Single Player. No Decal, ThwargLauncher, ThwargFilter, or third-party injector binary is bundled or copied. The main window exposes this choice as a **Use Decal** checkbox beside **PLAY**. Checking it persists `ClientLaunchMode.Decal`; unchecking it persists `ClientLaunchMode.Vanilla`. The checkbox is disabled while the game or server is running and when either required installation is missing. Database and path setup contain no separate client-mode dropdown. @@ -48,8 +50,7 @@ Decal registry inventory is read-only and clearly typed as client-side. Chorizit ## Known Phase-1 limitations -- A real client, DATs, installed MariaDB Windows distribution, and populated world package are user-supplied. -- MariaDB binaries are detected and reused but are not bundled or downloaded by the launcher. +- A real client and all four proprietary DAT files are user-supplied. - The client and live character-selection screen were not available for end-to-end testing here. - Decal mode requires separate working Decal and ThwargLauncher installations. Client creation through the installed Thwarg injector is verified; individual plugins remain outside this project's control. - Chorizite launch and package installation are reserved for future work. diff --git a/docs/SINGLE_PLAYER_BUILD_AND_TEST.md b/docs/SINGLE_PLAYER_BUILD_AND_TEST.md index 0063089bec..0065d90909 100644 --- a/docs/SINGLE_PLAYER_BUILD_AND_TEST.md +++ b/docs/SINGLE_PLAYER_BUILD_AND_TEST.md @@ -20,7 +20,9 @@ dotnet test .\Source\ACE.SinglePlayer.Tests\ACE.SinglePlayer.Tests.csproj -c Rel The integration test uses a unique temporary data directory and does not modify the Windows MariaDB service. Set `ACE_TEST_WORLD_SQL` to an extracted official `ACE-World-Database-*.sql` file to exercise the full populated-world import and empty-world repair path; otherwise the test uses a minimal populated fixture. -The clean package is written to `artifacts\ACE-SinglePlayer`, with a shareable `artifacts\ACE-SinglePlayer.zip` archive beside it. The packaging script stages publish output under the current user's temporary directory to avoid a .NET 10 publish-transform bug when the repository path contains an apostrophe. It removes debug symbols that can contain build-machine paths, then checks that the package contains no generated Config.js, settings, logs, database data, proprietary client/DAT files, MariaDB executable, or personal user-profile paths. +The clean package is written to `%LOCALAPPDATA%\ACE-SinglePlayer-Build\ACE-SinglePlayer`, with a shareable `ACE-SinglePlayer.zip` archive beside it. Keeping release output outside the checkout prevents cloud-sync software from locking it. `-OutputDirectory` may select another safe directory whose final name is `ACE-SinglePlayer`; that directory is replaced on every build. By default, the packaging script downloads hash-pinned official MariaDB `12.3.2` and ACE World `v0.9.294` archives into `%LOCALAPPDATA%\ACE-SinglePlayer-BuildCache`, verifies both SHA-256 hashes, and bundles their extracted runtime files. Use `-SkipBundledDependencies` only for a small developer package that is not suitable as the public ready-to-play release. + +Publishing stages final output, compiler output, and intermediate files under the current user's temporary directory. This avoids a .NET 10 publish-transform bug when the repository path contains an apostrophe and prevents OneDrive from locking build files when a developer's source checkout is cloud-synced. It removes debug symbols that can contain build-machine paths, then rejects generated Config.js, settings, logs, private database data, proprietary client/DAT files, unpinned MariaDB servers, or personal user-profile paths. `BUNDLE-MANIFEST.json`, `THIRD_PARTY_NOTICES.md`, and the `Licenses` directory record the redistributed components. The normal ACE solution remains separate and can be verified with: diff --git a/docs/SINGLE_PLAYER_FIRST_RUN.md b/docs/SINGLE_PLAYER_FIRST_RUN.md index 8999c6cbf5..dea9e2d831 100644 --- a/docs/SINGLE_PLAYER_FIRST_RUN.md +++ b/docs/SINGLE_PLAYER_FIRST_RUN.md @@ -1,6 +1,6 @@ # ACE Single Player: first run -ACE Single Player keeps ACE.Server as a private local process and launches the original client directly. It does not include or download Asheron's Call, DAT files, MariaDB, Decal, ThwargLauncher, or community mods. +ACE Single Player keeps ACE.Server and a bundled MariaDB instance as private local processes and launches the original client directly. The release includes the server, database runtime, complete world, .NET, and curated server mods. It does not include Asheron's Call, proprietary DAT files, Decal, or ThwargLauncher. ## Before opening the launcher @@ -11,24 +11,19 @@ ACE Single Player keeps ACE.Server as a private local process and launches the o - `client_local_English.dat` - `client_highres.dat` Keep the complete client installation together in one writable folder outside OneDrive and `Program Files`. -3. Have MariaDB for Windows installed. Its Windows service may be running or stopped; the recommended private mode uses the installed programs to create a separate database and does not need the service's `root` password. The launcher does not bundle or download MariaDB. -4. Download the current official ACE-World release package and extract its populated `ACE-World-Database-*.sql` file. Do not select the repository's `Database\Base\WorldBase.sql`; that file defines empty tables and cannot run a world. The launcher never downloads or trusts a database package on its own. +3. Extract the complete release. Do not move or delete its `Server` or `Dependencies` folders. -## Setup wizard +## First start Double-click `ACE.SinglePlayer.exe`. -1. Select `acclient.exe`. The wizard fills the DAT directory automatically when all four required DAT files are beside it. Setup now stops early with a clear message if the client folder is incomplete or not writable. -2. Select the packaged `Server\ACE.Server.exe`. -3. Keep the package `Mods` directory and the default local Windows app-data `Runtime` directory unless you intentionally store them elsewhere. Runtime configuration contains short-lived local credentials and should not be placed in OneDrive. -4. Keep **Automatic private database (recommended)**. The wizard detects `mariadbd.exe`, selects a free loopback-only port, generates protected credentials, and stores MariaDB data under local Windows app data rather than OneDrive. No MariaDB username or password is requested. -5. Select the extracted, populated `ACE-World-Database-*.sql` file. Click **Prepare Private Database** if you want to prepare it immediately, or continue; **Save Setup** performs the same preparation automatically. The first world import can take several minutes. Existing complete databases are never overwritten. Private databases left with empty world tables by an interrupted or older setup are repaired from the selected package; external databases are never repaired automatically. -6. Keep the account name `singleplayer` or choose one permanent name. A strong password is generated once, protected with Windows DPAPI, and reused. Do not change or delete this account if you want the same characters. -7. Keep local port `9000` unless it conflicts with another application. -8. Save setup. -9. On the main launcher, check **Use Decal** beside **PLAY** when Decal, ThwargLauncher, `Inject.dll`, and `injector.dll` are detected. Leave it unchecked for Vanilla. **PLAY** starts the entire session directly from ACE Single Player. - -The private database lives at `%LOCALAPPDATA%\ACESinglePlayer\Database`. The launcher uses the `mariadb-install-db.exe` shipped beside the detected MariaDB program, initializes into a staging directory, and moves it into place only after initialization succeeds. It creates a dedicated `ace_singleplayer` database user; generated administrator and application passwords are protected with Windows DPAPI and are not displayed or logged. The existing MariaDB service and its `root` account are not changed. +1. The launcher checks common AC locations automatically. If it cannot find a complete client, select the folder containing `acclient.exe` and all four DAT files. +2. The main launcher opens immediately. Check **Use Decal** when a separate working Decal and ThwargLauncher installation is detected; otherwise leave it unchecked. +3. Click **PLAY**. The first run creates the private database and imports the bundled world, which can take several minutes. Existing complete databases are never overwritten. Later launches skip the import. + +Before the server starts for the first time, the launcher also makes a private copy of the four DAT files under `%LOCALAPPDATA%\ACESinglePlayer\ServerData`. This needs roughly the same amount of free disk space as the four original DATs and prevents ACE.Server from locking the files used by the game client. Later launches reuse the copy unless the originals change. + +The private database lives at `%LOCALAPPDATA%\ACESinglePlayer\Database`. The launcher uses the bundled `Dependencies\MariaDB` programs, initializes into a staging directory, and moves it into place only after initialization succeeds. It creates a dedicated `ace_singleplayer` database user; generated administrator and application passwords are protected with Windows DPAPI and are not displayed or logged. Any separately installed MariaDB service and its `root` account are not changed. To use a separately administered server instead, choose **Existing MariaDB/MySQL (advanced)** and enter its host, port, username, password, and database names. Use **Test Connection** and **Initialize Missing Databases** as needed. diff --git a/docs/SINGLE_PLAYER_INSTALL.md b/docs/SINGLE_PLAYER_INSTALL.md index c83122288f..801374df2f 100644 --- a/docs/SINGLE_PLAYER_INSTALL.md +++ b/docs/SINGLE_PLAYER_INSTALL.md @@ -1,6 +1,6 @@ # Installing ACE Single Player -ACE Single Player runs the ACE server, a private MariaDB database, and the original Asheron's Call client together on one Windows computer. It does not include or download the game client, DAT files, MariaDB, Decal, ThwargLauncher, or the ACE World database. +ACE Single Player runs the ACE server, a private MariaDB database, and the original Asheron's Call client together on one Windows computer. The portable release includes ACE.Server, MariaDB, the complete ACE World database, and .NET. It does not include the proprietary game client or DAT files, Decal, or ThwargLauncher. ## What you need @@ -13,32 +13,22 @@ ACE Single Player runs the ACE server, a private MariaDB database, and the origi - `client_local_English.dat` - `client_highres.dat` - Keep the complete client installation in one writable folder outside OneDrive and `Program Files`, such as `C:\Games\AsheronsCall` or `C:\Turbine\Asheron's Call`. -- [MariaDB Community Server for Windows](https://mariadb.org/download/). The launcher uses its database programs but creates a separate private database. The password chosen for MariaDB's normal Windows service is not used by the recommended setup. -- The populated `ACE-World-Database-*.sql` file from the [official ACE World release](https://github.com/ACEmulator/ACE-World-16PY-Patches/releases/latest). - Optional for Decal mode: working Decal and ThwargLauncher installations. ACE Single Player uses ThwargLauncher's installed `injector.dll` but does not copy or redistribute it. -Do not select `Database\Base\WorldBase.sql` from the ACE source repository. That file only creates empty tables and does not contain the playable world. - ## Download and extract 1. Open this project's **Releases** page and download the latest `ACE-SinglePlayer-*.zip` file. Do not download GitHub's automatically generated **Source code** archives unless you intend to build the program yourself. 2. Create a writable folder outside OneDrive and `Program Files`, such as `C:\Games\ACE-SinglePlayer`. -3. Extract the entire ZIP into that folder. `ACE.SinglePlayer.exe` and the `Server` folder must remain together. +3. Extract the entire ZIP into that folder. `ACE.SinglePlayer.exe`, `Server`, and `Dependencies` must remain together. The release is self-contained. If Windows says that .NET must be installed, the source archive or an incomplete build was downloaded instead of the release ZIP. ## First-time setup 1. Double-click `ACE.SinglePlayer.exe`. -2. Select `acclient.exe`. When the DAT files are beside it, the launcher fills in the DAT location automatically. -3. Select `Server\ACE.Server.exe` if it was not detected automatically. -4. Keep the suggested Mods and Runtime locations. -5. Choose **Automatic private database (recommended)**. The launcher should detect MariaDB automatically. If it does not, select the installed `mariadbd.exe`, normally found under `C:\Program Files\MariaDB*\bin`. -6. Select the extracted, populated `ACE-World-Database-*.sql` file. -7. Keep the account name `singleplayer`, or choose one name that you will continue using for this world. -8. Save setup. Preparing and importing the world for the first time can take several minutes. -9. On the main launcher, check **Use Decal** beside **PLAY** when both Decal and ThwargLauncher are installed. Leave it unchecked for Vanilla. No second launcher window or repeated login is required. -10. Click **PLAY** once. The launcher starts the private database and server, waits until the world is ready, and then opens the game client. +2. If prompted, select the folder containing `acclient.exe` and all four DAT files. Standard `C:\Turbine\Asheron's Call` installations are detected automatically. +3. On the main launcher, check **Use Decal** beside **PLAY** when both Decal and ThwargLauncher are installed. Leave it unchecked for Vanilla. +4. Click **PLAY** once. The launcher generates protected credentials, initializes its bundled private MariaDB, imports the bundled world, starts ACE.Server, waits for logins to open, and launches the client. The initial import can take several minutes and is performed only once. The first successful login creates the local ACE account automatically. Closing the game normally stops the launcher-owned server and database. @@ -46,6 +36,7 @@ The first successful login creates the local ACE account automatically. Closing - Settings: `%LOCALAPPDATA%\ACESinglePlayer\settings.json` - Private database and characters: `%LOCALAPPDATA%\ACESinglePlayer\Database` +- Private server DAT copy: `%LOCALAPPDATA%\ACESinglePlayer\ServerData` - Generated runtime configuration and logs: `%LOCALAPPDATA%\ACESinglePlayer\Runtime` Passwords are generated automatically and protected for the current Windows user. The launcher does not change the MariaDB service's `root` account. @@ -56,15 +47,15 @@ Back up the entire `%LOCALAPPDATA%\ACESinglePlayer` folder before reinstalling W ### Nothing opens after clicking PLAY -Use **Open Logs** in the launcher. Confirm that MariaDB is installed, the populated world SQL file was selected, and no other program is using the configured local port. +Use **Open Logs** in the launcher. Confirm that the entire release was extracted, the `Dependencies` folder is present, and no other program is using the configured local port. ### MariaDB says access denied for root -Return to setup and choose **Automatic private database**. It does not use the existing MariaDB service's root password. +The portable release does not use an installed MariaDB service or its root password. Re-extract the complete release and use **Automatic private database** in advanced Settings. ### The client cannot open the data files -Confirm that all four required DAT files are beside `acclient.exe`, not merely in the separate folder selected for ACE.Server. The client folder must be writable and outside OneDrive or `Program Files`. The launcher now checks this before starting MariaDB and logs the exact executable, client working directory, and server DAT directory. +Confirm that all four required DAT files are beside `acclient.exe`. The client folder must be writable and outside OneDrive or `Program Files`. Current releases automatically give ACE.Server a separate copy under `%LOCALAPPDATA%\ACESinglePlayer\ServerData`; the launcher log should show different client and server DAT directories. If an older release shows the same directory for both, install the current release. ### Decal mode is unavailable @@ -72,7 +63,7 @@ Install and configure both Decal and ThwargLauncher normally, then reopen ACE Si ### The world starts and then immediately shuts down -Make sure the selected SQL file is the populated `ACE-World-Database-*.sql` release, not the empty `WorldBase.sql` schema. +Use **Open Logs** and verify that `Dependencies\World\ACE-World-Database-v0.9.294.sql` exists. Re-extract the complete release if it is missing. ## Updating diff --git a/docs/THIRD_PARTY_NOTICES.md b/docs/THIRD_PARTY_NOTICES.md new file mode 100644 index 0000000000..380476edf1 --- /dev/null +++ b/docs/THIRD_PARTY_NOTICES.md @@ -0,0 +1,30 @@ +# Third-party components in the portable release + +The ready-to-play ACE Single Player release bundles these unmodified upstream components so players do not need to install a database server or import the world manually. + +## ACEmulator ACE + +- Upstream: +- Pinned upstream commit: `650c5b75ae909957feaf58db320e46be16502653` +- Server build: `1.77.4782` +- License: GNU Affero General Public License version 3 +- Corresponding source, including the single-player modifications: + +## ACE World Database + +- Upstream: +- Release: `v0.9.294` +- Asset: `ACE-World-Database-v0.9.294.sql.zip` +- SHA-256: `aa8275a2fd8edd8c2b95092d2407ece4616ba7b8d7eab1405719bbbfa80c8f89` +- License: GNU Affero General Public License version 3 +- Source: + +## MariaDB Community Server + +- Upstream: +- Release: `12.3.2 LTS`, official Windows x64 ZIP +- SHA-256: `67347c129eb9c5923d002ea34fbfa27c60eb95d36dd73b85af2651cdeceecac5` +- License: GNU General Public License version 2 +- Source: + +The applicable license texts are included in the release's `Licenses` directory. Asheron's Call itself, `acclient.exe`, client DAT files, Decal, and ThwargLauncher are not included. diff --git a/scripts/publish-singleplayer.ps1 b/scripts/publish-singleplayer.ps1 index 3a0ffeea27..ac2212e4a2 100644 --- a/scripts/publish-singleplayer.ps1 +++ b/scripts/publish-singleplayer.ps1 @@ -1,20 +1,25 @@ param( [ValidateSet("Debug", "Release")] [string] $Configuration = "Release", - [string] $OutputDirectory + [string] $OutputDirectory, + [switch] $SkipBundledDependencies ) $ErrorActionPreference = "Stop" $repoRoot = [IO.Path]::GetFullPath((Split-Path $PSScriptRoot -Parent)) if ([string]::IsNullOrWhiteSpace($OutputDirectory)) { - $OutputDirectory = Join-Path $repoRoot "artifacts\ACE-SinglePlayer" + $localBuildRoot = if ([string]::IsNullOrWhiteSpace($env:LOCALAPPDATA)) { + Join-Path ([IO.Path]::GetTempPath()) "ACE-SinglePlayer-Build" + } else { + Join-Path $env:LOCALAPPDATA "ACE-SinglePlayer-Build" + } + $OutputDirectory = Join-Path $localBuildRoot "ACE-SinglePlayer" } $OutputDirectory = [IO.Path]::GetFullPath($OutputDirectory) $outputPrefix = $OutputDirectory.TrimEnd([IO.Path]::DirectorySeparatorChar, [IO.Path]::AltDirectorySeparatorChar) + [IO.Path]::DirectorySeparatorChar -$artifactsRoot = [IO.Path]::GetFullPath((Join-Path $repoRoot "artifacts")) -$artifactsPrefix = $artifactsRoot.TrimEnd([IO.Path]::DirectorySeparatorChar, [IO.Path]::AltDirectorySeparatorChar) + [IO.Path]::DirectorySeparatorChar -if ($OutputDirectory -ne $artifactsRoot -and -not $OutputDirectory.StartsWith($artifactsPrefix, [StringComparison]::OrdinalIgnoreCase)) { - throw "OutputDirectory must remain under $artifactsRoot" +if ((Split-Path $OutputDirectory -Leaf) -ine "ACE-SinglePlayer" -or + [string]::Equals($OutputDirectory, [IO.Path]::GetPathRoot($OutputDirectory), [StringComparison]::OrdinalIgnoreCase)) { + throw "OutputDirectory must name a non-root directory called ACE-SinglePlayer. The directory is replaced on every build." } $localDotnet = Join-Path $repoRoot ".dotnet\dotnet.exe" @@ -37,6 +42,23 @@ $serverPublish = Join-Path $stage "Server" $decalHostPublish = Join-Path $stage "DecalHost" $criticalOverridePublish = Join-Path $stage "CriticalOverride" $criticalOverridePackage = Join-Path $stage "CriticalOverridePackage" +$mariaDbExtract = Join-Path $stage "MariaDB" +$worldExtract = Join-Path $stage "World" +$buildArtifacts = Join-Path $stage "BuildArtifacts" + +$mariaDbVersion = "12.3.2" +$mariaDbArchiveName = "mariadb-$mariaDbVersion-winx64.zip" +$mariaDbUri = "https://archive.mariadb.org/mariadb-$mariaDbVersion/winx64-packages/$mariaDbArchiveName" +$mariaDbSha256 = "67347c129eb9c5923d002ea34fbfa27c60eb95d36dd73b85af2651cdeceecac5" +$worldVersion = "0.9.294" +$worldArchiveName = "ACE-World-Database-v$worldVersion.sql.zip" +$worldUri = "https://github.com/ACEmulator/ACE-World-16PY-Patches/releases/download/v$worldVersion/$worldArchiveName" +$worldSha256 = "aa8275a2fd8edd8c2b95092d2407ece4616ba7b8d7eab1405719bbbfa80c8f89" +$cacheRoot = if ([string]::IsNullOrWhiteSpace($env:LOCALAPPDATA)) { + Join-Path $tempRoot "ACE-SinglePlayer-BuildCache" +} else { + Join-Path $env:LOCALAPPDATA "ACE-SinglePlayer-BuildCache" +} function Invoke-DotNet([string[]] $Arguments) { & $dotnet @Arguments @@ -45,25 +67,44 @@ function Invoke-DotNet([string[]] $Arguments) { } } +function Get-VerifiedDownload([string] $Uri, [string] $Destination, [string] $ExpectedSha256) { + if (Test-Path -LiteralPath $Destination) { + $actual = (Get-FileHash -LiteralPath $Destination -Algorithm SHA256).Hash.ToLowerInvariant() + if ($actual -eq $ExpectedSha256.ToLowerInvariant()) { + Write-Host "Using verified dependency cache: $(Split-Path $Destination -Leaf)" + return + } + Remove-Item -LiteralPath $Destination -Force + } + + Write-Host "Downloading $(Split-Path $Destination -Leaf)..." + Invoke-WebRequest -Uri $Uri -OutFile $Destination -UseBasicParsing + $downloaded = (Get-FileHash -LiteralPath $Destination -Algorithm SHA256).Hash.ToLowerInvariant() + if ($downloaded -ne $ExpectedSha256.ToLowerInvariant()) { + Remove-Item -LiteralPath $Destination -Force + throw "SHA-256 mismatch for $Uri. Expected $ExpectedSha256 but received $downloaded." + } +} + foreach ($path in @($stage, $OutputDirectory)) { if (Test-Path -LiteralPath $path) { Remove-Item -LiteralPath $path -Recurse -Force } } -New-Item -ItemType Directory -Path $launcherPublish, $serverPublish, $decalHostPublish, $criticalOverridePublish, $criticalOverridePackage, $OutputDirectory | Out-Null +New-Item -ItemType Directory -Path $launcherPublish, $serverPublish, $decalHostPublish, $criticalOverridePublish, $criticalOverridePackage, $buildArtifacts, $OutputDirectory | Out-Null Write-Host "Publishing ACE.Server as self-contained Windows x64..." -Invoke-DotNet @("publish", (Join-Path $repoRoot "Source\ACE.Server\ACE.Server.csproj"), "-c", $Configuration, "-r", "win-x64", "--self-contained", "true", "-o", $serverPublish) +Invoke-DotNet @("publish", (Join-Path $repoRoot "Source\ACE.Server\ACE.Server.csproj"), "-c", $Configuration, "-r", "win-x64", "--self-contained", "true", "--artifacts-path", $buildArtifacts, "-o", $serverPublish) Write-Host "Publishing ACE.SinglePlayer as self-contained Windows x64..." -Invoke-DotNet @("publish", (Join-Path $repoRoot "Source\ACE.SinglePlayer\ACE.SinglePlayer.csproj"), "-c", $Configuration, "-r", "win-x64", "--self-contained", "true", "-o", $launcherPublish) +Invoke-DotNet @("publish", (Join-Path $repoRoot "Source\ACE.SinglePlayer\ACE.SinglePlayer.csproj"), "-c", $Configuration, "-r", "win-x64", "--self-contained", "true", "--artifacts-path", $buildArtifacts, "-o", $launcherPublish) Write-Host "Publishing the optional Decal helper as a self-contained Windows x86 executable..." -Invoke-DotNet @("publish", (Join-Path $repoRoot "Source\ACE.SinglePlayer.DecalHost\ACE.SinglePlayer.DecalHost.csproj"), "-c", $Configuration, "-r", "win-x86", "--self-contained", "true", "-p:PublishSingleFile=true", "-o", $decalHostPublish) +Invoke-DotNet @("publish", (Join-Path $repoRoot "Source\ACE.SinglePlayer.DecalHost\ACE.SinglePlayer.DecalHost.csproj"), "-c", $Configuration, "-r", "win-x86", "--self-contained", "true", "--artifacts-path", $buildArtifacts, "-p:PublishSingleFile=true", "-o", $decalHostPublish) Write-Host "Building the curated CriticalOverride mod package..." $criticalOverrideProject = Join-Path $repoRoot "Source\ACE.SinglePlayer.Mods.CriticalOverride" -Invoke-DotNet @("build", (Join-Path $criticalOverrideProject "ACE.SinglePlayer.Mods.CriticalOverride.csproj"), "-c", $Configuration, "-o", $criticalOverridePublish) +Invoke-DotNet @("build", (Join-Path $criticalOverrideProject "ACE.SinglePlayer.Mods.CriticalOverride.csproj"), "-c", $Configuration, "--artifacts-path", $buildArtifacts, "-o", $criticalOverridePublish) Copy-Item -Path (Join-Path $launcherPublish "*") -Destination $OutputDirectory -Recurse -Force New-Item -ItemType Directory -Path (Join-Path $OutputDirectory "Server"), (Join-Path $OutputDirectory "Tools"), (Join-Path $OutputDirectory "Packages") | Out-Null @@ -81,6 +122,69 @@ $criticalOverrideArchive = Join-Path $OutputDirectory "Packages\aquafir.critical Compress-Archive -Path (Join-Path $criticalOverridePackage "*") -DestinationPath $criticalOverrideArchive -CompressionLevel Optimal (Get-FileHash -LiteralPath $criticalOverrideArchive -Algorithm SHA256).Hash | Set-Content -LiteralPath ($criticalOverrideArchive + ".sha256") -Encoding ascii +if (-not $SkipBundledDependencies) { + New-Item -ItemType Directory -Path $cacheRoot, $mariaDbExtract, $worldExtract -Force | Out-Null + $mariaDbArchive = Join-Path $cacheRoot $mariaDbArchiveName + $worldArchive = Join-Path $cacheRoot $worldArchiveName + Get-VerifiedDownload $mariaDbUri $mariaDbArchive $mariaDbSha256 + Get-VerifiedDownload $worldUri $worldArchive $worldSha256 + + Write-Host "Extracting the pinned portable MariaDB runtime..." + Expand-Archive -LiteralPath $mariaDbArchive -DestinationPath $mariaDbExtract -Force + $mariaDbRoots = @(Get-ChildItem -LiteralPath $mariaDbExtract -Directory | Where-Object { + Test-Path -LiteralPath (Join-Path $_.FullName "bin\mariadbd.exe") + }) + if ($mariaDbRoots.Count -ne 1) { + throw "The MariaDB archive did not contain exactly one complete Windows runtime root." + } + $mariaDbOutput = Join-Path $OutputDirectory "Dependencies\MariaDB" + New-Item -ItemType Directory -Path (Split-Path $mariaDbOutput -Parent) -Force | Out-Null + Move-Item -LiteralPath $mariaDbRoots[0].FullName -Destination $mariaDbOutput + + Write-Host "Extracting the pinned complete ACE World database..." + Expand-Archive -LiteralPath $worldArchive -DestinationPath $worldExtract -Force + $worldSqlFiles = @(Get-ChildItem -LiteralPath $worldExtract -Recurse -File -Filter "ACE-World-Database-*.sql") + if ($worldSqlFiles.Count -ne 1) { + throw "The ACE World archive did not contain exactly one complete ACE-World-Database SQL file." + } + $worldOutput = Join-Path $OutputDirectory "Dependencies\World" + New-Item -ItemType Directory -Path $worldOutput -Force | Out-Null + Move-Item -LiteralPath $worldSqlFiles[0].FullName -Destination (Join-Path $worldOutput "ACE-World-Database-v$worldVersion.sql") -Force + + $licensesOutput = Join-Path $OutputDirectory "Licenses" + New-Item -ItemType Directory -Path $licensesOutput -Force | Out-Null + Copy-Item -LiteralPath (Join-Path $repoRoot "LICENSE") -Destination (Join-Path $licensesOutput "ACE-and-ACE-World-AGPL-3.0.txt") + $mariaDbLicense = Get-ChildItem -LiteralPath $mariaDbOutput -File | Where-Object { $_.Name -in @("COPYING", "COPYING.txt") } | Select-Object -First 1 + if ($null -eq $mariaDbLicense) { + throw "The MariaDB distribution license was not found in the official archive." + } + Copy-Item -LiteralPath $mariaDbLicense.FullName -Destination (Join-Path $licensesOutput "MariaDB-GPL-2.0.txt") + Copy-Item -LiteralPath (Join-Path $repoRoot "docs\THIRD_PARTY_NOTICES.md") -Destination (Join-Path $OutputDirectory "THIRD_PARTY_NOTICES.md") + + $bundleManifest = [ordered]@{ + formatVersion = 1 + aceUpstream = [ordered]@{ + repository = "https://github.com/ACEmulator/ACE" + commit = "650c5b75ae909957feaf58db320e46be16502653" + build = "1.77.4782" + license = "AGPL-3.0" + } + mariaDb = [ordered]@{ + version = $mariaDbVersion + source = $mariaDbUri + sha256 = $mariaDbSha256 + license = "GPL-2.0" + } + aceWorld = [ordered]@{ + version = $worldVersion + source = $worldUri + sha256 = $worldSha256 + license = "AGPL-3.0" + } + } + $bundleManifest | ConvertTo-Json -Depth 5 | Set-Content -LiteralPath (Join-Path $OutputDirectory "BUNDLE-MANIFEST.json") -Encoding utf8 +} + foreach ($directory in @("Runtime", "Mods", "Logs", "Client", "Docs")) { New-Item -ItemType Directory -Path (Join-Path $OutputDirectory $directory) -Force | Out-Null } @@ -104,7 +208,9 @@ $forbidden = Get-ChildItem -LiteralPath $OutputDirectory -Recurse -File | Where- } else { $_.FullName } - $_.Name -in @("Config.js", "settings.json", "acclient.exe", "mariadbd.exe", "ace-server.ready.json", "ace-server.process.json") -or + $isPinnedMariaDb = $relativePath -ieq "Dependencies\MariaDB\bin\mariadbd.exe" + $_.Name -in @("Config.js", "settings.json", "acclient.exe", "ace-server.ready.json", "ace-server.process.json") -or + ($_.Name -ieq "mariadbd.exe" -and -not $isPinnedMariaDb) -or $_.Name -like "client_*.dat" -or $_.Extension -in @(".log", ".pdb") -or $relativePath -match '^(Runtime|Logs|Client)[\\/]' } @@ -114,7 +220,12 @@ if ($forbidden) { $textExtensions = @(".bat", ".config", ".example", ".js", ".json", ".md", ".ps1", ".sh", ".sql", ".txt", ".xml", ".yml", ".yaml") $personalPathMatches = Get-ChildItem -LiteralPath $OutputDirectory -Recurse -File | Where-Object { - $_.Extension -in $textExtensions + $relativePath = if ($_.FullName.StartsWith($outputPrefix, [StringComparison]::OrdinalIgnoreCase)) { + $_.FullName.Substring($outputPrefix.Length) + } else { + $_.FullName + } + $_.Extension -in $textExtensions -and $relativePath -notmatch '^Dependencies[\\/]' } | Select-String -Pattern '(?i)(C:[\\/]Users[\\/][^\\/]+|/Users/[^/]+)' -List if ($personalPathMatches) { throw "Packaging safety check found a personal user-profile path: $($personalPathMatches.Path -join ', ')" From cf5d314a0a716d531cb75ce90cca8d537d97d1e3 Mon Sep 17 00:00:00 2001 From: titaniumweiner Date: Wed, 15 Jul 2026 17:56:12 -0400 Subject: [PATCH 08/15] Fix Mods window splitter initialization --- .../ACE.SinglePlayer.Tests/UiLayoutTests.cs | 61 +++++++++++++++++++ Source/ACE.SinglePlayer/UI/ModsForm.cs | 35 +++++++++-- 2 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 Source/ACE.SinglePlayer.Tests/UiLayoutTests.cs diff --git a/Source/ACE.SinglePlayer.Tests/UiLayoutTests.cs b/Source/ACE.SinglePlayer.Tests/UiLayoutTests.cs new file mode 100644 index 0000000000..7edbf314ce --- /dev/null +++ b/Source/ACE.SinglePlayer.Tests/UiLayoutTests.cs @@ -0,0 +1,61 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using ACE.SinglePlayer.UI; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.Tests; + +[TestClass] +public sealed class UiLayoutTests +{ + [TestMethod] + public void ModLibraryCanBeConstructedBeforeWindowsCompletesLayout() + { + Exception? failure = null; + var thread = new Thread(() => + { + try + { + var settings = new LauncherSettings + { + ModsDirectory = Path.Combine(Path.GetTempPath(), "ACE.SinglePlayer.Tests", "MissingMods"), + RuntimeDirectory = Path.Combine(Path.GetTempPath(), "ACE.SinglePlayer.Tests", "Runtime") + }; + using var form = new ModsForm(settings, () => false); + } + catch (Exception ex) + { + failure = ex; + } + }); + thread.SetApartmentState(ApartmentState.STA); + thread.Start(); + + Assert.IsTrue(thread.Join(TimeSpan.FromSeconds(10)), "The Mods window constructor did not finish."); + Assert.IsNull(failure, failure?.ToString()); + } + + [TestMethod] + public void ModLibrarySplitterUsesPreferredLayoutAfterFormIsSized() + { + var layout = ModsForm.CalculateSplitterLayout(1224, 6); + + Assert.AreEqual(730, layout.Distance); + Assert.AreEqual(540, layout.Panel1MinSize); + Assert.AreEqual(360, layout.Panel2MinSize); + } + + [TestMethod] + [DataRow(900, 6)] + [DataRow(400, 6)] + [DataRow(100, 6)] + public void ModLibrarySplitterAlwaysFitsNarrowOrScaledLayout(int width, int splitterWidth) + { + var layout = ModsForm.CalculateSplitterLayout(width, splitterWidth); + var available = Math.Max(0, width - splitterWidth); + + Assert.IsGreaterThanOrEqualTo(layout.Distance, layout.Panel1MinSize); + Assert.IsGreaterThanOrEqualTo(available - layout.Distance, layout.Panel2MinSize); + Assert.IsLessThanOrEqualTo(layout.Panel1MinSize + layout.Panel2MinSize, available); + } +} diff --git a/Source/ACE.SinglePlayer/UI/ModsForm.cs b/Source/ACE.SinglePlayer/UI/ModsForm.cs index dcb26d4876..9a55e3b29e 100644 --- a/Source/ACE.SinglePlayer/UI/ModsForm.cs +++ b/Source/ACE.SinglePlayer/UI/ModsForm.cs @@ -77,11 +77,8 @@ public ModsForm(LauncherSettings settings, Func isServerRunning) var split = new SplitContainer { Dock = DockStyle.Fill, - SplitterDistance = 730, SplitterWidth = 6, - BackColor = Night, - Panel1MinSize = 540, - Panel2MinSize = 360 + BackColor = Night }; split.Panel1.Padding = new Padding(14, 8, 6, 14); split.Panel2.Padding = new Padding(8, 8, 14, 14); @@ -91,6 +88,11 @@ public ModsForm(LauncherSettings settings, Func isServerRunning) Controls.Add(split); Controls.Add(heading); + // SplitContainer starts with a small design-time width. Setting a large + // distance or panel minimum in the initializer throws before the form has + // completed layout, especially with display scaling enabled. + Shown += (_, _) => ConfigureSplitter(split); + grid.SelectionChanged += (_, _) => UpdateDetails(); install.Click += async (_, _) => await InstallSelectedAsync(); toggle.Click += async (_, _) => await ToggleSelectedAsync(); @@ -101,6 +103,31 @@ public ModsForm(LauncherSettings settings, Func isServerRunning) RefreshCatalog(); } + private static void ConfigureSplitter(SplitContainer split) + { + var layout = CalculateSplitterLayout(split.ClientSize.Width, split.SplitterWidth); + + // Clear the defaults first so every assignment is valid even on a narrow, + // scaled display. The calculated minimums are restored after the divider. + split.Panel1MinSize = 0; + split.Panel2MinSize = 0; + split.SplitterDistance = layout.Distance; + split.Panel1MinSize = layout.Panel1MinSize; + split.Panel2MinSize = layout.Panel2MinSize; + } + + internal static SplitterLayout CalculateSplitterLayout(int controlWidth, int splitterWidth) + { + var available = Math.Max(0, controlWidth - splitterWidth); + var panel1Minimum = Math.Min(540, available); + var panel2Minimum = Math.Min(360, Math.Max(0, available - panel1Minimum)); + var maximumDistance = Math.Max(panel1Minimum, available - panel2Minimum); + var distance = Math.Clamp(730, panel1Minimum, maximumDistance); + return new SplitterLayout(distance, panel1Minimum, panel2Minimum); + } + + internal sealed record SplitterLayout(int Distance, int Panel1MinSize, int Panel2MinSize); + private ModListItem? Selected => grid.CurrentRow?.DataBoundItem as ModListItem; private Control BuildDetailsPanel() From 5d8795de50221a2f544dacb02b67c7654862564b Mon Sep 17 00:00:00 2001 From: titaniumweiner Date: Wed, 15 Jul 2026 18:03:03 -0400 Subject: [PATCH 09/15] Clean up mod library and improve contrast --- .../ACE.SinglePlayer.Tests/UiLayoutTests.cs | 10 ++++ Source/ACE.SinglePlayer/UI/MainForm.cs | 46 +++++++++++++++---- Source/ACE.SinglePlayer/UI/ModsForm.cs | 24 ++++++---- 3 files changed, 64 insertions(+), 16 deletions(-) diff --git a/Source/ACE.SinglePlayer.Tests/UiLayoutTests.cs b/Source/ACE.SinglePlayer.Tests/UiLayoutTests.cs index 7edbf314ce..b39efb0a73 100644 --- a/Source/ACE.SinglePlayer.Tests/UiLayoutTests.cs +++ b/Source/ACE.SinglePlayer.Tests/UiLayoutTests.cs @@ -2,12 +2,22 @@ using ACE.SinglePlayer.UI; using ACE.SinglePlayer.Models; +using ACE.SinglePlayer.Mods; namespace ACE.SinglePlayer.Tests; [TestClass] public sealed class UiLayoutTests { + [TestMethod] + public void ModLibraryDoesNotDisplayInstalledDecalComponents() + { + var providers = ModsForm.CreateDisplayedModProviders(Path.GetTempPath()); + + Assert.IsFalse(providers.Any(provider => provider.Type == ModType.DecalPlugin)); + Assert.IsTrue(providers.Any(provider => provider.Type == ModType.AceServer)); + } + [TestMethod] public void ModLibraryCanBeConstructedBeforeWindowsCompletesLayout() { diff --git a/Source/ACE.SinglePlayer/UI/MainForm.cs b/Source/ACE.SinglePlayer/UI/MainForm.cs index 2ab593bb43..ef7665b9aa 100644 --- a/Source/ACE.SinglePlayer/UI/MainForm.cs +++ b/Source/ACE.SinglePlayer/UI/MainForm.cs @@ -24,7 +24,19 @@ public sealed class MainForm : Form private readonly Label title = new() { Text = "A C E S I N G L E P L A Y E R", AutoSize = false, Dock = DockStyle.Fill, TextAlign = ContentAlignment.MiddleCenter }; private readonly Label state = new() { AutoSize = false, Dock = DockStyle.Fill, TextAlign = ContentAlignment.MiddleCenter }; private readonly Button play = new() { Text = "PLAY", Width = 320, Height = 96 }; - private readonly CheckBox useDecal = new() { Text = "Use Decal", AutoSize = true, Margin = new Padding(7, 7, 7, 11) }; + private readonly CheckBox useDecal = new() + { + AutoSize = true, + Margin = new Padding(3, 5, 3, 5), + AccessibleName = "Use Decal" + }; + private readonly Label useDecalLabel = new() + { + Text = "Use Decal", + AutoSize = true, + Margin = new Padding(2, 4, 4, 4), + Cursor = Cursors.Hand + }; private readonly Button stop = new() { Text = "Stop", Width = 116, Height = 36, Margin = new Padding(4, 0, 4, 4) }; private readonly TextBox diagnostics = new() { Dock = DockStyle.Fill, Multiline = true, ReadOnly = true, ScrollBars = ScrollBars.Vertical, Font = new Font(FontFamily.GenericMonospace, 9), BorderStyle = BorderStyle.None }; private readonly Panel diagnosticPanel = new() { Dock = DockStyle.Fill, Visible = false, Padding = new Padding(12), BorderStyle = BorderStyle.FixedSingle }; @@ -68,9 +80,10 @@ public MainForm(LauncherController controller, SettingsStore settingsStore, ISec play.FlatAppearance.MouseOverBackColor = Color.FromArgb(205, 126, 55); play.FlatAppearance.MouseDownBackColor = Color.FromArgb(151, 80, 37); - useDecal.ForeColor = Mist; - useDecal.BackColor = DeepSlate; - useDecal.Font = new Font(SystemFonts.MessageBoxFont!.FontFamily, 10, FontStyle.Bold); + useDecal.BackColor = Color.Transparent; + useDecalLabel.ForeColor = PaleGold; + useDecalLabel.BackColor = Color.Transparent; + useDecalLabel.Font = new Font(SystemFonts.MessageBoxFont!.FontFamily, 10, FontStyle.Bold); StyleSecondaryButton(stop); diagnostics.BackColor = Color.FromArgb(9, 17, 22); @@ -101,7 +114,17 @@ public MainForm(LauncherController controller, SettingsStore settingsStore, ISec Padding = new Padding(10), Margin = new Padding(12, 4, 0, 0) }; - playOptions.Controls.Add(useDecal); + var decalOption = new FlowLayoutPanel + { + AutoSize = true, + FlowDirection = FlowDirection.LeftToRight, + WrapContents = false, + BackColor = Color.Transparent, + Margin = new Padding(3, 3, 3, 8) + }; + decalOption.Controls.Add(useDecal); + decalOption.Controls.Add(useDecalLabel); + playOptions.Controls.Add(decalOption); playOptions.Controls.Add(stop); playPanel.Controls.Add(playOptions); playHost.Controls.Add(playPanel, 1, 0); @@ -127,10 +150,12 @@ public MainForm(LauncherController controller, SettingsStore settingsStore, ISec var decalAvailable = IsDecalAvailable(); useDecal.Checked = controller.Settings.ClientLaunchMode == ClientLaunchMode.Decal; useDecal.Enabled = decalAvailable; - useDecal.Text = decalAvailable ? "Use Decal" : "Use Decal (not detected)"; - toolTip.SetToolTip(useDecal, decalAvailable + useDecalLabel.Text = decalAvailable ? "Use Decal" : "Use Decal (not detected)"; + var decalToolTip = decalAvailable ? "Launch the game with your installed Decal and ThwargLauncher. Uncheck for Vanilla." - : "Install both Decal and ThwargLauncher to enable this option."); + : "Install both Decal and ThwargLauncher to enable this option."; + toolTip.SetToolTip(useDecal, decalToolTip); + toolTip.SetToolTip(useDecalLabel, decalToolTip); controller.State.Changed += UpdateState; log.MessageWritten += AppendDiagnostic; @@ -144,6 +169,11 @@ public MainForm(LauncherController controller, SettingsStore settingsStore, ISec }; stop.Click += async (_, _) => await controller.StopAsync(); useDecal.CheckedChanged += async (_, _) => await UpdateDecalPreferenceAsync(); + useDecalLabel.Click += (_, _) => + { + if (useDecal.Enabled) + useDecal.Checked = !useDecal.Checked; + }; settings.Click += async (_, _) => await ShowSettingsAsync(); mods.Click += (_, _) => new ModsForm(controller.Settings, () => controller.IsServerRunning).ShowDialog(this); logs.Click += (_, _) => Process.Start(new ProcessStartInfo { FileName = Path.GetDirectoryName(log.LogPath)!, UseShellExecute = true }); diff --git a/Source/ACE.SinglePlayer/UI/ModsForm.cs b/Source/ACE.SinglePlayer/UI/ModsForm.cs index 9a55e3b29e..19f3636cb1 100644 --- a/Source/ACE.SinglePlayer/UI/ModsForm.cs +++ b/Source/ACE.SinglePlayer/UI/ModsForm.cs @@ -169,13 +169,7 @@ private Control BuildDetailsPanel() private void RefreshCatalog() { - var installedCatalog = new ModCatalog(new IModProvider[] - { - new AceServerModProvider(settings.ModsDirectory), - new DecalPluginProvider(), - new ChorizitePluginProvider(), - new AceContentPackProvider() - }); + var installedCatalog = new ModCatalog(CreateDisplayedModProviders(settings.ModsDirectory)); var service = new ModCatalogService(AquafirSampleCatalog.Entries, AppContext.BaseDirectory); items = new BindingList(service.Merge(installedCatalog.Scan()).ToList()); grid.DataSource = items; @@ -184,6 +178,14 @@ private void RefreshCatalog() UpdateDetails(); } + internal static IReadOnlyList CreateDisplayedModProviders(string modsDirectory) => + new IModProvider[] + { + new AceServerModProvider(modsDirectory), + new ChorizitePluginProvider(), + new AceContentPackProvider() + }; + private void UpdateDetails() { var item = Selected; @@ -368,9 +370,13 @@ private static string FindCatalogName(string id) => private void SetActions(bool installEnabled, bool toggleEnabled, bool removeEnabled, bool settingsEnabled, bool sourceEnabled) { install.Enabled = installEnabled; + install.Visible = installEnabled; toggle.Enabled = toggleEnabled; + toggle.Visible = toggleEnabled; remove.Enabled = removeEnabled; + remove.Visible = removeEnabled; openSettings.Enabled = settingsEnabled; + openSettings.Visible = settingsEnabled; sourceLink.Enabled = sourceEnabled; sourceLink.Visible = sourceEnabled; } @@ -416,6 +422,8 @@ private static void StyleButton(Button button) button.FlatAppearance.MouseOverBackColor = Color.FromArgb(55, 77, 84); button.FlatAppearance.MouseDownBackColor = Color.FromArgb(33, 51, 59); button.BackColor = Night; - button.ForeColor = Mist; + button.ForeColor = PaleGold; + button.Font = new Font(button.Font, FontStyle.Bold); + button.UseVisualStyleBackColor = false; } } From 588a769b8d0adfd1f54b0162f6300a0e3ae0973f Mon Sep 17 00:00:00 2001 From: titaniumweiner Date: Wed, 15 Jul 2026 18:32:29 -0400 Subject: [PATCH 10/15] Add guarded mod package importer --- README.md | 2 +- Source/ACE.SinglePlayer.Tests/ModTests.cs | 21 +++++ .../Mods/ModPackageInstaller.cs | 47 ++++++++--- Source/ACE.SinglePlayer/UI/ModsForm.cs | 83 +++++++++++++++++-- docs/MOD_LIBRARY.md | 24 ++++++ 5 files changed, 157 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index b3beaa3a97..d0e74b64e9 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ The portable release currently pins ACEmulator server build `1.77.4782` from ups ## Mods -Open **Mods** in the launcher to browse the curated mod library. Every entry includes a plain-language description, compatibility result, requirements, and a saved-game safety warning. `CriticalOverride` is the first Aquafir sample rebuilt for this exact ACE version and is included as a checksum-verified one-click package; other samples remain clearly marked until they are ported and tested. +Open **Mods** in the launcher to browse the curated mod library. Every entry includes a plain-language description, compatibility result, requirements, and a saved-game safety warning. `CriticalOverride` is the first Aquafir sample rebuilt for this exact ACE version and is included as a checksum-verified one-click package; other samples remain clearly marked until they are ported and tested. **Import Mod Package...** can atomically install separately rebuilt, checksummed packages in the documented ACE Single Player ZIP format. Turning a mod off stops its code after a server restart, but it does not undo experience, items, balances, character properties, or world content already saved by that mod. The launcher blocks removal of mods whose saved data may still depend on them and moves safely removable files to a recovery folder rather than deleting them. See [Mod library and saved-game safety](docs/MOD_LIBRARY.md) for the full policy and the separate plan for world/DAT content packs. diff --git a/Source/ACE.SinglePlayer.Tests/ModTests.cs b/Source/ACE.SinglePlayer.Tests/ModTests.cs index 14d86ed18f..9fa2d8c759 100644 --- a/Source/ACE.SinglePlayer.Tests/ModTests.cs +++ b/Source/ACE.SinglePlayer.Tests/ModTests.cs @@ -65,6 +65,27 @@ public async Task ValidatedPackageInstallsAtomically() } } + [TestMethod] + public async Task ValidatedPackageCanBeInspectedBeforeImport() + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + var package = Path.Combine(root, "test.zip"); + CreatePackage(package); + var manifest = await new ModPackageInstaller().InspectAsync(package); + + Assert.AreEqual("test.mod", manifest.Id); + Assert.AreEqual("Test Mod", manifest.Name); + Assert.AreEqual("1.0.0", manifest.Version); + Assert.AreEqual("TestMod.dll", manifest.EntryAssembly); + } + finally + { + Directory.Delete(root, true); + } + } + [TestMethod] public async Task PackageTraversalIsRejected() { diff --git a/Source/ACE.SinglePlayer/Mods/ModPackageInstaller.cs b/Source/ACE.SinglePlayer/Mods/ModPackageInstaller.cs index fc1fc397ab..6a2b37b48f 100644 --- a/Source/ACE.SinglePlayer/Mods/ModPackageInstaller.cs +++ b/Source/ACE.SinglePlayer/Mods/ModPackageInstaller.cs @@ -19,6 +19,23 @@ public sealed class ModPackageInstaller private const long MaximumExpandedSize = 100L * 1024 * 1024; private const int MaximumEntries = 500; + public async Task InspectAsync( + string packagePath, + CancellationToken cancellationToken = default) + { + packagePath = Path.GetFullPath(packagePath); + if (!File.Exists(packagePath)) + throw new FileNotFoundException("The mod package is missing.", packagePath); + + await VerifyHashSidecarAsync(packagePath, cancellationToken); + using var archive = ZipFile.OpenRead(packagePath); + ValidateArchiveSize(archive); + var manifestEntry = FindManifest(archive); + var manifest = await ReadManifestAsync(manifestEntry, cancellationToken); + ValidateManifest(manifest, expectedCatalogId: null); + return manifest; + } + public async Task InstallAsync( string packagePath, string expectedCatalogId, @@ -41,14 +58,8 @@ public async Task InstallAsync( try { using var archive = ZipFile.OpenRead(packagePath); - if (archive.Entries.Count > MaximumEntries) - throw new InvalidDataException("The mod package contains too many files."); - if (archive.Entries.Sum(entry => entry.Length) > MaximumExpandedSize) - throw new InvalidDataException("The expanded mod package is larger than 100 MB."); - - var manifestEntry = archive.Entries.SingleOrDefault(entry => - string.Equals(NormalizeEntry(entry.FullName), "ace-mod.json", StringComparison.OrdinalIgnoreCase)) - ?? throw new InvalidDataException("The package has no ace-mod.json manifest."); + ValidateArchiveSize(archive); + var manifestEntry = FindManifest(archive); var manifest = await ReadManifestAsync(manifestEntry, cancellationToken); ValidateManifest(manifest, expectedCatalogId); @@ -143,11 +154,27 @@ private static async Task ReadManifestAsync(ZipArchiveEntry }, cancellationToken) ?? throw new InvalidDataException("The package manifest is empty."); } - private static void ValidateManifest(ModPackageManifest manifest, string expectedCatalogId) + private static ZipArchiveEntry FindManifest(ZipArchive archive) => + archive.Entries.SingleOrDefault(entry => + string.Equals(NormalizeEntry(entry.FullName), "ace-mod.json", StringComparison.OrdinalIgnoreCase)) + ?? throw new InvalidDataException("The package has no ace-mod.json manifest."); + + private static void ValidateArchiveSize(ZipArchive archive) + { + if (archive.Entries.Count > MaximumEntries) + throw new InvalidDataException("The mod package contains too many files."); + if (archive.Entries.Sum(entry => entry.Length) > MaximumExpandedSize) + throw new InvalidDataException("The expanded mod package is larger than 100 MB."); + } + + private static void ValidateManifest(ModPackageManifest manifest, string? expectedCatalogId) { if (manifest.FormatVersion != 1) throw new InvalidDataException("The package manifest version is not supported."); - if (!string.Equals(manifest.Id, expectedCatalogId, StringComparison.OrdinalIgnoreCase)) + if (string.IsNullOrWhiteSpace(manifest.Id)) + throw new InvalidDataException("The package identity is missing."); + if (!string.IsNullOrWhiteSpace(expectedCatalogId) && + !string.Equals(manifest.Id, expectedCatalogId, StringComparison.OrdinalIgnoreCase)) throw new InvalidDataException("The package identity does not match the selected catalog mod."); if (string.IsNullOrWhiteSpace(manifest.Name) || string.IsNullOrWhiteSpace(manifest.Version)) throw new InvalidDataException("The package name or version is missing."); diff --git a/Source/ACE.SinglePlayer/UI/ModsForm.cs b/Source/ACE.SinglePlayer/UI/ModsForm.cs index 19f3636cb1..4a784b3351 100644 --- a/Source/ACE.SinglePlayer/UI/ModsForm.cs +++ b/Source/ACE.SinglePlayer/UI/ModsForm.cs @@ -46,6 +46,7 @@ public sealed class ModsForm : Form private readonly Button toggle = new() { Text = "Turn off", AutoSize = true }; private readonly Button remove = new() { Text = "Remove", AutoSize = true }; private readonly Button openSettings = new() { Text = "Settings", AutoSize = true }; + private readonly Button importPackage = new() { Text = "Import Mod Package...", AutoSize = true }; private BindingList items = new(); public ModsForm(LauncherSettings settings, Func isServerRunning) @@ -98,6 +99,7 @@ public ModsForm(LauncherSettings settings, Func isServerRunning) toggle.Click += async (_, _) => await ToggleSelectedAsync(); remove.Click += (_, _) => RemoveSelected(); openSettings.Click += (_, _) => OpenSelectedSettings(); + importPackage.Click += async (_, _) => await ImportPackageAsync(); sourceLink.LinkClicked += (_, _) => OpenSelectedSource(); RefreshCatalog(); @@ -146,15 +148,15 @@ private Control BuildDetailsPanel() var actions = new FlowLayoutPanel { Dock = DockStyle.Bottom, - Height = 48, + Height = 84, FlowDirection = FlowDirection.LeftToRight, - WrapContents = false, + WrapContents = true, Padding = new Padding(0, 9, 0, 0), BackColor = Color.Transparent }; - foreach (var button in new[] { install, toggle, remove, openSettings }) + foreach (var button in new[] { install, toggle, remove, openSettings, importPackage }) StyleButton(button); - actions.Controls.AddRange(new Control[] { install, toggle, remove, openSettings }); + actions.Controls.AddRange(new Control[] { install, toggle, remove, openSettings, importPackage }); var sourcePanel = new Panel { Dock = DockStyle.Bottom, Height = 38, Padding = new Padding(0, 8, 0, 0) }; sourcePanel.Controls.Add(sourceLink); @@ -219,10 +221,12 @@ private void UpdateDetails() $"AUTHOR / VERSION TARGET\r\n{item.Author} | {item.Catalog.TargetFramework} | {item.Catalog.TargetAceVersion}"; var installedRecord = item.Installed; - install.Text = "Install"; + install.Text = item.CompatibilityStatus == CompatibilityStatus.Compatible + ? "Install" + : "Why unavailable?"; toggle.Text = installedRecord?.Enabled == true ? "Turn off" : "Turn on"; SetActions( - installEnabled: installedRecord is null && item.CompatibilityStatus == CompatibilityStatus.Compatible, + installEnabled: installedRecord is null, toggleEnabled: installedRecord?.CanToggle == true, removeEnabled: installedRecord?.Type == ModType.AceServer, settingsEnabled: installedRecord is not null && File.Exists(installedRecord.SettingsPath), @@ -234,13 +238,16 @@ private async Task InstallSelectedAsync() var item = Selected; if (item is null || item.Installed is not null) return; - if (!EnsureServerStopped()) - return; if (item.CompatibilityStatus != CompatibilityStatus.Compatible) { - MessageBox.Show(this, item.CompatibilityMessage, "Mod cannot be installed", MessageBoxButtons.OK, MessageBoxIcon.Information); + MessageBox.Show(this, + item.CompatibilityMessage + + "\r\n\r\nImport Mod Package can install a separately rebuilt package, but importing the original source does not port it to this ACE version.", + "Mod is not packaged for this ACE version", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } + if (!EnsureServerStopped()) + return; var answer = MessageBox.Show(this, $"Install {item.Name}?\r\n\r\n{item.Catalog.Description}\r\n\r\n{item.Catalog.SafetyNotice}\r\n\r\nThe local server must restart before the mod becomes active.", @@ -267,6 +274,64 @@ await installer.InstallAsync( } } + private async Task ImportPackageAsync() + { + if (!EnsureServerStopped()) + return; + + using var dialog = new OpenFileDialog + { + Title = "Import an ACE Single Player mod package", + Filter = "ACE mod packages (*.zip)|*.zip", + CheckFileExists = true, + Multiselect = false + }; + if (dialog.ShowDialog(this) != DialogResult.OK) + return; + + importPackage.Enabled = false; + try + { + var manifest = await installer.InspectAsync(dialog.FileName); + var catalog = AquafirSampleCatalog.Entries.FirstOrDefault(entry => + string.Equals(entry.Id, manifest.Id, StringComparison.OrdinalIgnoreCase)); + var compatibilityWarning = catalog is null + ? "This package is not in the curated catalog. The launcher can validate its checksum and file layout, but cannot prove that its code is compatible or safe for saved characters." + : catalog.Availability == ModCatalogAvailability.Ready + ? catalog.SafetyNotice + : "The bundled catalog still marks this mod as needing a source port. Only continue if this ZIP was rebuilt and tested specifically for the current ACE Single Player release."; + + var answer = MessageBox.Show(this, + $"Import {manifest.Name} {manifest.Version}?\r\n\r\nPackage ID: {manifest.Id}\r\n\r\n{compatibilityWarning}\r\n\r\n" + + "A matching .sha256 checksum file was verified. Back up %LOCALAPPDATA%\\ACESinglePlayer before importing unverified code. The server will restart when you next click Play.", + "Import mod package", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + if (answer != DialogResult.Yes) + return; + + var destination = await installer.InstallAsync( + dialog.FileName, + manifest.Id, + settings.ModsDirectory, + Path.Combine(settings.RuntimeDirectory, "ModStaging")); + RefreshCatalog(); + MessageBox.Show(this, + $"{manifest.Name} was imported to:\r\n{destination}\r\n\r\nIt will load the next time you click Play.", + "Mod imported", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + MessageBox.Show(this, + ex.Message + + "\r\n\r\nA supported package contains ace-mod.json at the ZIP root, its files under mod/, and a matching .zip.sha256 file beside the ZIP.", + "Mod was not imported", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + finally + { + importPackage.Enabled = true; + UpdateDetails(); + } + } + private async Task ToggleSelectedAsync() { var item = Selected; diff --git a/docs/MOD_LIBRARY.md b/docs/MOD_LIBRARY.md index 5f81b32bea..504fc0c115 100644 --- a/docs/MOD_LIBRARY.md +++ b/docs/MOD_LIBRARY.md @@ -8,6 +8,30 @@ The library inventories all 22 samples in [aquafir/ACE.BaseMod](https://github.c `CriticalOverride` is the first sample ported to this repository's .NET 10 ACE build. Its checksum-verified package is included in the release and can be installed with one click. The other samples remain visible but are marked **Needs port**, **Experimental**, or **Not recommended** until they compile against this exact ACE version and pass load/gameplay tests. The launcher will not pretend that old .NET 8 source is a compatible installable package. +## Importing a separately rebuilt package + +**Import Mod Package...** accepts an ACE Single Player mod ZIP after the game and server are stopped. Import is atomic and requires: + +- `ace-mod.json` at the ZIP root; +- mod files under the ZIP's `mod/` directory; +- `mod/Meta.json` and the manifest's entry DLL; +- a matching `.zip.sha256` checksum file beside the ZIP. + +The manifest format is: + +```json +{ + "formatVersion": 1, + "id": "author.mod-id", + "name": "Mod Name", + "version": "1.0.0", + "folderName": "ModAssemblyName", + "entryAssembly": "ModAssemblyName.dll" +} +``` + +Importing validates identity, checksum, archive paths, size, required files, and ACE's folder/assembly naming rule. It cannot prove that arbitrary DLL code is compatible or safe. In particular, downloading an original Aquafir .NET 8 source folder and putting it in a ZIP does **not** port it to this .NET 10 ACE build. A developer must rebuild and test that source first. The launcher gives an additional warning when a selected package corresponds to a catalog entry that still says **Needs port**. + ## Install, turn off, and remove are different operations - **Install** validates the package identity and checksum, rejects unsafe archive paths, stages all files, and only then moves the complete mod into the ACE `Mods` directory. From bfdb7b36005257f34e9edfd6f85687f27aca521f Mon Sep 17 00:00:00 2001 From: titaniumweiner Date: Wed, 15 Jul 2026 19:16:07 -0400 Subject: [PATCH 11/15] Add preview mod ports and author guide --- README.md | 4 +- .../ACE.SinglePlayer.Mods.HelloCommand.csproj | 20 +++ .../Meta.json | 14 ++ .../ACE.SinglePlayer.Mods.HelloCommand/Mod.cs | 54 ++++++ .../README.md | 11 ++ .../ace-mod.json | 8 + ....SinglePlayer.Mods.SocietyTailoring.csproj | 20 +++ .../Meta.json | 14 ++ .../Mod.cs | 19 ++ .../README.md | 13 ++ .../SocietyTailoringPatch.cs | 41 +++++ .../ace-mod.json | 8 + .../ACE.SinglePlayer.Tests.csproj | 2 + Source/ACE.SinglePlayer.Tests/ModTests.cs | 80 +++++++++ Source/ACE.SinglePlayer.slnx | 2 + .../Mods/AquafirSampleCatalog.cs | 27 ++- .../Mods/ModCatalogService.cs | 13 +- Source/ACE.SinglePlayer/Mods/ModModels.cs | 9 +- Source/ACE.SinglePlayer/UI/ModsForm.cs | 89 ++++++++-- docs/AQUIFIR_MOD_COMPATIBILITY.md | 4 +- docs/MOD_AUTHOR_GUIDE.md | 168 ++++++++++++++++++ docs/MOD_LIBRARY.md | 6 +- scripts/package-mod.ps1 | 91 ++++++++++ scripts/publish-singleplayer.ps1 | 33 ++-- 24 files changed, 696 insertions(+), 54 deletions(-) create mode 100644 Source/ACE.SinglePlayer.Mods.HelloCommand/ACE.SinglePlayer.Mods.HelloCommand.csproj create mode 100644 Source/ACE.SinglePlayer.Mods.HelloCommand/Meta.json create mode 100644 Source/ACE.SinglePlayer.Mods.HelloCommand/Mod.cs create mode 100644 Source/ACE.SinglePlayer.Mods.HelloCommand/README.md create mode 100644 Source/ACE.SinglePlayer.Mods.HelloCommand/ace-mod.json create mode 100644 Source/ACE.SinglePlayer.Mods.SocietyTailoring/ACE.SinglePlayer.Mods.SocietyTailoring.csproj create mode 100644 Source/ACE.SinglePlayer.Mods.SocietyTailoring/Meta.json create mode 100644 Source/ACE.SinglePlayer.Mods.SocietyTailoring/Mod.cs create mode 100644 Source/ACE.SinglePlayer.Mods.SocietyTailoring/README.md create mode 100644 Source/ACE.SinglePlayer.Mods.SocietyTailoring/SocietyTailoringPatch.cs create mode 100644 Source/ACE.SinglePlayer.Mods.SocietyTailoring/ace-mod.json create mode 100644 docs/MOD_AUTHOR_GUIDE.md create mode 100644 scripts/package-mod.ps1 diff --git a/README.md b/README.md index d0e74b64e9..31bbb5c4f3 100644 --- a/README.md +++ b/README.md @@ -28,9 +28,9 @@ The portable release currently pins ACEmulator server build `1.77.4782` from ups ## Mods -Open **Mods** in the launcher to browse the curated mod library. Every entry includes a plain-language description, compatibility result, requirements, and a saved-game safety warning. `CriticalOverride` is the first Aquafir sample rebuilt for this exact ACE version and is included as a checksum-verified one-click package; other samples remain clearly marked until they are ported and tested. **Import Mod Package...** can atomically install separately rebuilt, checksummed packages in the documented ACE Single Player ZIP format. +Open **Mods** in the launcher to browse the curated mod library. Every entry includes a plain-language description, compatibility result, requirements, source-code links, and a saved-game safety warning. `CriticalOverride` is curated for one-click installation. `HelloCommand` and `SocietyTailoring` are installable **Preview** ports: they pass automated build/load/package checks but are clearly marked as not thoroughly tested in game. Other samples remain listed but unavailable until they are ported and tested. **Import a Mod ZIP...** can atomically install separately rebuilt, checksummed packages in the documented ACE Single Player ZIP format. -Turning a mod off stops its code after a server restart, but it does not undo experience, items, balances, character properties, or world content already saved by that mod. The launcher blocks removal of mods whose saved data may still depend on them and moves safely removable files to a recovery folder rather than deleting them. See [Mod library and saved-game safety](docs/MOD_LIBRARY.md) for the full policy and the separate plan for world/DAT content packs. +Turning a mod off stops its code after a server restart, but it does not undo experience, items, balances, character properties, or world content already saved by that mod. The launcher blocks removal of mods whose saved data may still depend on them and moves safely removable files to a recovery folder rather than deleting them. See [Mod library and saved-game safety](docs/MOD_LIBRARY.md) for the full policy, or [How to make and import a mod](docs/MOD_AUTHOR_GUIDE.md) to build a compatible package. See the [complete installation guide](docs/SINGLE_PLAYER_INSTALL.md) for prerequisites, expected file names, first-run instructions, troubleshooting, backups, and upgrade guidance. diff --git a/Source/ACE.SinglePlayer.Mods.HelloCommand/ACE.SinglePlayer.Mods.HelloCommand.csproj b/Source/ACE.SinglePlayer.Mods.HelloCommand/ACE.SinglePlayer.Mods.HelloCommand.csproj new file mode 100644 index 0000000000..0bd7b916cc --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.HelloCommand/ACE.SinglePlayer.Mods.HelloCommand.csproj @@ -0,0 +1,20 @@ + + + net10.0 + HelloCommand + HelloCommand + x64 + enable + enable + + + + + + + + + + + + diff --git a/Source/ACE.SinglePlayer.Mods.HelloCommand/Meta.json b/Source/ACE.SinglePlayer.Mods.HelloCommand/Meta.json new file mode 100644 index 0000000000..6fa2d6b025 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.HelloCommand/Meta.json @@ -0,0 +1,14 @@ +{ + "Name": "HelloCommand", + "Author": "aquafir; ACE Single Player port", + "Description": "Adds /hello and /bye as a small server-mod command example.", + "Version": "1.0.0-sp1", + "Priority": 0, + "Enabled": true, + "HotReload": false, + "RegisterCommands": false, + "CatalogId": "aquafir.hello-command", + "TargetAceVersion": "ACE.Server 1.1 / .NET 10", + "DataImpact": "None", + "RemovalPolicy": "Safe" +} diff --git a/Source/ACE.SinglePlayer.Mods.HelloCommand/Mod.cs b/Source/ACE.SinglePlayer.Mods.HelloCommand/Mod.cs new file mode 100644 index 0000000000..cfd97bf631 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.HelloCommand/Mod.cs @@ -0,0 +1,54 @@ +using ACE.Entity.Enum; +using ACE.Server.Command; +using ACE.Server.Mods; +using ACE.Server.Network; + +namespace HelloCommand; + +public sealed class Mod : IHarmonyMod +{ + private const string HelloCommandName = "hello"; + private const string ByeCommandName = "bye"; + private bool helloRegistered; + private bool byeRegistered; + + public void Initialize() + { + helloRegistered = CommandManager.TryAddCommand( + HandleHello, + HelloCommandName, + AccessLevel.Admin, + CommandHandlerFlag.None, + "Says hello to the current character.", + "No parameters", + overrides: false); + byeRegistered = CommandManager.TryAddCommand( + HandleBye, + ByeCommandName, + AccessLevel.Player, + CommandHandlerFlag.None, + "Logs the current character out.", + "No parameters", + overrides: false); + + Console.WriteLine($"[HelloCommand] /hello: {RegistrationStatus(helloRegistered)}; /bye: {RegistrationStatus(byeRegistered)}."); + } + + public void Dispose() + { + if (helloRegistered) + CommandManager.TryRemoveCommand(HelloCommandName); + if (byeRegistered) + CommandManager.TryRemoveCommand(ByeCommandName); + } + + private static void HandleHello(Session session, string[] parameters) + { + if (session.Player is not null) + session.Player.SendMessage($"Hello, {session.Player.Name}!"); + } + + private static void HandleBye(Session session, string[] parameters) => session.LogOffPlayer(true); + + private static string RegistrationStatus(bool registered) => registered ? "registered" : "name already in use"; +} diff --git a/Source/ACE.SinglePlayer.Mods.HelloCommand/README.md b/Source/ACE.SinglePlayer.Mods.HelloCommand/README.md new file mode 100644 index 0000000000..02854e16d0 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.HelloCommand/README.md @@ -0,0 +1,11 @@ +# HelloCommand for ACE Single Player + +This is a .NET 10 port of aquafir's `ACE.BaseMod` HelloCommand sample. It adds `/hello`, which greets the current character, and `/bye`, which logs the character out. + +This is a developer example rather than a substantial gameplay mod. The port is marked **Preview** because it has passed build, registration, removal, package, and launcher tests but has not received thorough in-game testing. + +Original source: + +Modified source: + +The original and modified source are licensed under the GNU Affero General Public License v3.0, the same license included with ACE Single Player. diff --git a/Source/ACE.SinglePlayer.Mods.HelloCommand/ace-mod.json b/Source/ACE.SinglePlayer.Mods.HelloCommand/ace-mod.json new file mode 100644 index 0000000000..3726db3992 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.HelloCommand/ace-mod.json @@ -0,0 +1,8 @@ +{ + "formatVersion": 1, + "id": "aquafir.hello-command", + "name": "HelloCommand", + "version": "1.0.0-sp1", + "folderName": "HelloCommand", + "entryAssembly": "HelloCommand.dll" +} diff --git a/Source/ACE.SinglePlayer.Mods.SocietyTailoring/ACE.SinglePlayer.Mods.SocietyTailoring.csproj b/Source/ACE.SinglePlayer.Mods.SocietyTailoring/ACE.SinglePlayer.Mods.SocietyTailoring.csproj new file mode 100644 index 0000000000..e57bc31658 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.SocietyTailoring/ACE.SinglePlayer.Mods.SocietyTailoring.csproj @@ -0,0 +1,20 @@ + + + net10.0 + SocietyTailoring + SocietyTailoring + x64 + enable + enable + + + + + + + + + + + + diff --git a/Source/ACE.SinglePlayer.Mods.SocietyTailoring/Meta.json b/Source/ACE.SinglePlayer.Mods.SocietyTailoring/Meta.json new file mode 100644 index 0000000000..c1c6ac84dd --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.SocietyTailoring/Meta.json @@ -0,0 +1,14 @@ +{ + "Name": "SocietyTailoring", + "Author": "aquafir; ACE Single Player port", + "Description": "Allows Society armor to be used in tailoring while retaining ACE safety checks.", + "Version": "1.0.0-sp1", + "Priority": 0, + "Enabled": true, + "HotReload": false, + "RegisterCommands": false, + "CatalogId": "aquafir.society-tailoring", + "TargetAceVersion": "ACE.Server 1.1 / .NET 10", + "DataImpact": "CharacterData", + "RemovalPolicy": "ChangesRemain" +} diff --git a/Source/ACE.SinglePlayer.Mods.SocietyTailoring/Mod.cs b/Source/ACE.SinglePlayer.Mods.SocietyTailoring/Mod.cs new file mode 100644 index 0000000000..45dd662f71 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.SocietyTailoring/Mod.cs @@ -0,0 +1,19 @@ +using ACE.Server.Mods; + +using HarmonyLib; + +namespace SocietyTailoring; + +public sealed class Mod : IHarmonyMod +{ + private const string HarmonyId = "aquafir.SocietyTailoring.ace-single-player"; + private readonly Harmony harmony = new(HarmonyId); + + public void Initialize() + { + harmony.PatchAll(typeof(Mod).Assembly); + Console.WriteLine("[SocietyTailoring] Enabled Society armor tailoring while preserving ACE inventory and retained-item checks."); + } + + public void Dispose() => harmony.UnpatchAll(HarmonyId); +} diff --git a/Source/ACE.SinglePlayer.Mods.SocietyTailoring/README.md b/Source/ACE.SinglePlayer.Mods.SocietyTailoring/README.md new file mode 100644 index 0000000000..8335fd55a1 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.SocietyTailoring/README.md @@ -0,0 +1,13 @@ +# SocietyTailoring for ACE Single Player + +This is a .NET 10 port of aquafir's `ACE.BaseMod` SocietyTailoring sample. It allows Society armor to pass ACE's tailoring requirement check while preserving the same-object, player-inventory, and retained-item protections in the pinned ACE server build. + +Completed tailoring changes are permanent. Turning the mod off prevents future Society armor tailoring but does not undo items already tailored. + +**Preview warning:** the port has passed build, Harmony target/signature, package, and launcher tests. It has not received thorough in-game testing across every Society armor and tailoring combination. Back up `%LOCALAPPDATA%\ACESinglePlayer` before using it on a valued world. + +Original source: + +Modified source: + +The original and modified source are licensed under the GNU Affero General Public License v3.0, the same license included with ACE Single Player. diff --git a/Source/ACE.SinglePlayer.Mods.SocietyTailoring/SocietyTailoringPatch.cs b/Source/ACE.SinglePlayer.Mods.SocietyTailoring/SocietyTailoringPatch.cs new file mode 100644 index 0000000000..908c87c4f0 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.SocietyTailoring/SocietyTailoringPatch.cs @@ -0,0 +1,41 @@ +using ACE.Entity.Enum; +using ACE.Server.Entity; +using ACE.Server.Network.GameMessages.Messages; +using ACE.Server.WorldObjects; + +using HarmonyLib; + +namespace SocietyTailoring; + +[HarmonyPatch] +public static class SocietyTailoringPatch +{ + [HarmonyPrefix] + [HarmonyPatch(typeof(Tailoring), nameof(Tailoring.VerifyUseRequirements), + new[] { typeof(Player), typeof(WorldObject), typeof(WorldObject) })] + public static bool AllowSocietyArmor(Player player, WorldObject source, WorldObject target, ref WeenieError __result) + { + if (source == target || + player.FindObject(source.Guid.Full, Player.SearchLocations.MyInventory) is null || + player.FindObject(target.Guid.Full, Player.SearchLocations.MyInventory) is null) + { + __result = WeenieError.YouDoNotPassCraftingRequirements; + return false; + } + + if (target.Retained) + { + player.Session.Network.EnqueueSend(new GameMessageSystemChat( + "You must use Sandstone Salvage to remove the retained property before tailoring.", + ChatMessageType.Craft)); + __result = WeenieError.YouDoNotPassCraftingRequirements; + return false; + } + + // This intentionally omits stock ACE's IsSocietyArmor rejection. All + // other checks above mirror Tailoring.VerifyUseRequirements in the + // ACE version pinned by this launcher. + __result = WeenieError.None; + return false; + } +} diff --git a/Source/ACE.SinglePlayer.Mods.SocietyTailoring/ace-mod.json b/Source/ACE.SinglePlayer.Mods.SocietyTailoring/ace-mod.json new file mode 100644 index 0000000000..c0854383e8 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.SocietyTailoring/ace-mod.json @@ -0,0 +1,8 @@ +{ + "formatVersion": 1, + "id": "aquafir.society-tailoring", + "name": "SocietyTailoring", + "version": "1.0.0-sp1", + "folderName": "SocietyTailoring", + "entryAssembly": "SocietyTailoring.dll" +} diff --git a/Source/ACE.SinglePlayer.Tests/ACE.SinglePlayer.Tests.csproj b/Source/ACE.SinglePlayer.Tests/ACE.SinglePlayer.Tests.csproj index cfe7fe7068..9990a63cdf 100644 --- a/Source/ACE.SinglePlayer.Tests/ACE.SinglePlayer.Tests.csproj +++ b/Source/ACE.SinglePlayer.Tests/ACE.SinglePlayer.Tests.csproj @@ -15,6 +15,8 @@ + + diff --git a/Source/ACE.SinglePlayer.Tests/ModTests.cs b/Source/ACE.SinglePlayer.Tests/ModTests.cs index 9fa2d8c759..b56b1d3e5b 100644 --- a/Source/ACE.SinglePlayer.Tests/ModTests.cs +++ b/Source/ACE.SinglePlayer.Tests/ModTests.cs @@ -4,8 +4,13 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; +using ACE.Server.Command; +using ACE.Server.Entity; +using ACE.Server.WorldObjects; using ACE.SinglePlayer.Mods; +using HarmonyLib; + namespace ACE.SinglePlayer.Tests; [TestClass] @@ -23,6 +28,57 @@ public void AquafirCatalogHasUsefulDescriptionsAndSafetyPolicies() var criticalOverride = AquafirSampleCatalog.Entries.Single(entry => entry.Id == "aquafir.critical-override"); Assert.AreEqual(ModCatalogAvailability.Ready, criticalOverride.Availability); Assert.AreEqual(ModRemovalPolicy.Safe, criticalOverride.RemovalPolicy); + + foreach (var preview in AquafirSampleCatalog.Entries.Where(entry => entry.Availability == ModCatalogAvailability.Preview)) + { + Assert.IsFalse(string.IsNullOrWhiteSpace(preview.PackageRelativePath)); + Assert.IsFalse(string.IsNullOrWhiteSpace(preview.SourceUrl)); + Assert.IsFalse(string.IsNullOrWhiteSpace(preview.PortSourceUrl)); + } + Assert.AreEqual(2, AquafirSampleCatalog.Entries.Count(entry => entry.Availability == ModCatalogAvailability.Preview)); + } + + [TestMethod] + public void HelloCommandRegistersAndRemovesCurrentAceCommands() + { + var mod = new HelloCommand.Mod(); + try + { + mod.Initialize(); + Assert.AreEqual(1, CommandManager.GetCommandByName("hello").Count()); + Assert.AreEqual(1, CommandManager.GetCommandByName("bye").Count()); + } + finally + { + mod.Dispose(); + } + + Assert.AreEqual(0, CommandManager.GetCommandByName("hello").Count()); + Assert.AreEqual(0, CommandManager.GetCommandByName("bye").Count()); + } + + [TestMethod] + public void SocietyTailoringPatchTargetsCurrentAceSignature() + { + var original = AccessTools.Method(typeof(Tailoring), nameof(Tailoring.VerifyUseRequirements), + new[] { typeof(Player), typeof(WorldObject), typeof(WorldObject) }); + Assert.IsNotNull(original); + + var mod = new SocietyTailoring.Mod(); + try + { + mod.Initialize(); + var patchInfo = Harmony.GetPatchInfo(original); + Assert.IsNotNull(patchInfo); + Assert.IsTrue(patchInfo.Prefixes.Any(patch => patch.owner == "aquafir.SocietyTailoring.ace-single-player")); + } + finally + { + mod.Dispose(); + } + + var remaining = Harmony.GetPatchInfo(original); + Assert.IsTrue(remaining is null || remaining.Prefixes.All(patch => patch.owner != "aquafir.SocietyTailoring.ace-single-player")); } [TestMethod] @@ -42,6 +98,30 @@ public void CatalogBlocksMissingDependenciesBeforeInstall() Assert.IsTrue(result.CompatibilityMessage.Contains("Dependency", StringComparison.Ordinal)); } + [TestMethod] + public void PreviewPackageIsInstallableButKeepsLimitedTestingWarning() + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + File.WriteAllText(Path.Combine(root, "preview.zip"), "package placeholder"); + var preview = new ModCatalogEntry( + "preview", "Preview", "Author", "Description", "Details", "https://example.invalid/original", + ModCatalogAvailability.Preview, ModDataImpact.None, ModRemovalPolicy.Safe, "Back up first.", + PackageRelativePath: "preview.zip", PortSourceUrl: "https://example.invalid/port"); + + var item = new ModCatalogService(new[] { preview }, root).Merge(Array.Empty()).Single(); + + Assert.AreEqual(CompatibilityStatus.Compatible, item.CompatibilityStatus); + Assert.AreEqual("Preview - limited testing", item.Status); + Assert.IsTrue(item.CompatibilityMessage.Contains("not received thorough in-game testing", StringComparison.OrdinalIgnoreCase)); + } + finally + { + Directory.Delete(root, true); + } + } + [TestMethod] public async Task ValidatedPackageInstallsAtomically() { diff --git a/Source/ACE.SinglePlayer.slnx b/Source/ACE.SinglePlayer.slnx index 582ef6ce44..c60ba4c690 100644 --- a/Source/ACE.SinglePlayer.slnx +++ b/Source/ACE.SinglePlayer.slnx @@ -4,6 +4,8 @@ + + diff --git a/Source/ACE.SinglePlayer/Mods/AquafirSampleCatalog.cs b/Source/ACE.SinglePlayer/Mods/AquafirSampleCatalog.cs index 3dfce1ce41..03a5b2de4b 100644 --- a/Source/ACE.SinglePlayer/Mods/AquafirSampleCatalog.cs +++ b/Source/ACE.SinglePlayer/Mods/AquafirSampleCatalog.cs @@ -3,6 +3,7 @@ namespace ACE.SinglePlayer.Mods; public static class AquafirSampleCatalog { private const string BaseUrl = "https://github.com/aquafir/ACE.BaseMod/tree/master/Samples/"; + private const string PortBaseUrl = "https://github.com/titaniumweiner/ACE-SinglePlayer/tree/main/Source/ACE.SinglePlayer.Mods."; public static IReadOnlyList Entries { get; } = new ModCatalogEntry[] { @@ -51,7 +52,8 @@ public static class AquafirSampleCatalog "Safe to turn off. Existing combat results are not recalculated.", TargetAceVersion: "ACE.Server 1.1 / ACE Single Player", TargetFramework: ".NET 10 port", - PackageRelativePath: @"Packages\aquafir.critical-override-1.0.0-sp1.zip"), + PackageRelativePath: @"Packages\aquafir.critical-override-1.0.0-sp1.zip", + PortSourceUrl: PortBaseUrl + "CriticalOverride"), PortRequired( "aquafir.custom-spells", "CustomSpells", "Creates or edits spells and equipment-set spell tiers from Settings.json or an Excel spreadsheet.", @@ -78,13 +80,16 @@ public static class AquafirSampleCatalog "This is an experimental foundation for major gameplay overhauls. Some generated items require its runtime features to keep working as designed.", ModDataImpact.WorldData, ModRemovalPolicy.DoNotRemove, "High risk: once it has generated modified loot, removing it can leave dependent items in the saved world."), - PortRequired( - "aquafir.hello-command", "HelloCommand", + new ModCatalogEntry( + "aquafir.hello-command", "HelloCommand", "aquafir", "A small developer sample that adds /hello and /bye commands to demonstrate how ACE server-mod commands are registered.", "It is useful for mod authors but adds little to normal gameplay.", - ModDataImpact.None, ModRemovalPolicy.Safe, + BaseUrl + "HelloCommand", ModCatalogAvailability.Preview, ModDataImpact.None, ModRemovalPolicy.Safe, "Safe to turn off or remove.", - availability: ModCatalogAvailability.NotRecommended), + TargetAceVersion: "ACE.Server 1.1 / ACE Single Player", + TargetFramework: ".NET 10 preview port", + PackageRelativePath: @"Packages\aquafir.hello-command-1.0.0-sp1.zip", + PortSourceUrl: PortBaseUrl + "HelloCommand"), PortRequired( "aquafir.imgui-hud", "ImGuiHud", "An experimental server-side ImGui overlay sample with pickers, filters, textures, tables, and on-screen tools.", @@ -131,12 +136,16 @@ public static class AquafirSampleCatalog ModDataImpact.WorldData, ModRemovalPolicy.Safe, "Dangerous for normal play; the launcher will not offer one-click installation.", availability: ModCatalogAvailability.NotRecommended), - PortRequired( - "aquafir.society-tailoring", "SocietyTailoring", + new ModCatalogEntry( + "aquafir.society-tailoring", "SocietyTailoring", "aquafir", "Allows Society armor to be used in tailoring while keeping inventory and retained-item checks.", "Tailoring changes the resulting item permanently; disabling the mod stops new uses but does not reverse completed tailoring.", - ModDataImpact.CharacterData, ModRemovalPolicy.ChangesRemain, - "Existing tailored items remain after the mod is turned off."), + BaseUrl + "SocietyTailoring", ModCatalogAvailability.Preview, ModDataImpact.CharacterData, ModRemovalPolicy.ChangesRemain, + "Back up first. Existing tailored items remain after the mod is turned off.", + TargetAceVersion: "ACE.Server 1.1 / ACE Single Player", + TargetFramework: ".NET 10 preview port", + PackageRelativePath: @"Packages\aquafir.society-tailoring-1.0.0-sp1.zip", + PortSourceUrl: PortBaseUrl + "SocietyTailoring"), PortRequired( "aquafir.tinkering", "Tinkering", "Reworks tinkering requirement checks, maximum attempts, difficulty scaling, and handling of additional imbue effects.", diff --git a/Source/ACE.SinglePlayer/Mods/ModCatalogService.cs b/Source/ACE.SinglePlayer/Mods/ModCatalogService.cs index 3e281e6de6..ea4823a311 100644 --- a/Source/ACE.SinglePlayer/Mods/ModCatalogService.cs +++ b/Source/ACE.SinglePlayer/Mods/ModCatalogService.cs @@ -81,12 +81,15 @@ public IReadOnlyList Merge(IEnumerable installedRecords) { if (installed.IsMalformed) return (CompatibilityStatus.LoadFailed, installed.LastLoadError); - return (CompatibilityStatus.Compatible, installed.Enabled + var installedMessage = installed.Enabled ? "Installed and enabled. A server restart is required after changes." - : "Installed but disabled. A server restart is required after changes."); + : "Installed but disabled. A server restart is required after changes."; + if (entry.Availability == ModCatalogAvailability.Preview) + installedMessage += " Preview port: automated checks passed, but thorough in-game testing has not been completed."; + return (CompatibilityStatus.Compatible, installedMessage); } - if (entry.Availability is not ModCatalogAvailability.Ready) + if (entry.Availability is not (ModCatalogAvailability.Ready or ModCatalogAvailability.Preview)) { var message = entry.Availability switch { @@ -108,7 +111,9 @@ public IReadOnlyList Merge(IEnumerable installedRecords) if (string.IsNullOrWhiteSpace(packagePath) || !File.Exists(packagePath)) return (CompatibilityStatus.PackageMissing, "This build does not contain the validated mod package."); - return (CompatibilityStatus.Compatible, "Validated package is included and ready to install."); + return entry.Availability == ModCatalogAvailability.Preview + ? (CompatibilityStatus.Compatible, "Preview package is included. It builds and passes automated load, patch/registration, checksum, and package checks, but it has not received thorough in-game testing. Back up before use.") + : (CompatibilityStatus.Compatible, "Validated package is included and ready to install."); } private string FriendlyNames(IEnumerable ids) => string.Join(", ", ids.Select(id => diff --git a/Source/ACE.SinglePlayer/Mods/ModModels.cs b/Source/ACE.SinglePlayer/Mods/ModModels.cs index 14bf3c94b5..a0ec115337 100644 --- a/Source/ACE.SinglePlayer/Mods/ModModels.cs +++ b/Source/ACE.SinglePlayer/Mods/ModModels.cs @@ -41,6 +41,7 @@ public enum ModRemovalPolicy public enum ModCatalogAvailability { Ready, + Preview, NeedsPort, Experimental, NotRecommended @@ -84,7 +85,8 @@ public sealed record ModCatalogEntry( string TargetFramework = ".NET 8 source sample", IReadOnlyList? DependencyIds = null, IReadOnlyList? ConflictIds = null, - string PackageRelativePath = "") + string PackageRelativePath = "", + string PortSourceUrl = "") { public IReadOnlyList Dependencies { get; init; } = DependencyIds ?? Array.Empty(); public IReadOnlyList Conflicts { get; init; } = ConflictIds ?? Array.Empty(); @@ -112,7 +114,10 @@ public sealed class ModListItem }; public string Status => Installed?.IsMalformed == true ? "Install error" : Installed is not null - ? Installed.Enabled ? "Installed - on" : "Installed - off" + ? Catalog.Availability == ModCatalogAvailability.Preview + ? Installed.Enabled ? "Installed - on (preview)" : "Installed - off (preview)" + : Installed.Enabled ? "Installed - on" : "Installed - off" + : Catalog.Availability == ModCatalogAvailability.Preview ? "Preview - limited testing" : Catalog.Availability == ModCatalogAvailability.Experimental ? "Experimental" : Catalog.Availability == ModCatalogAvailability.NotRecommended ? "Not recommended" : CompatibilityStatus switch diff --git a/Source/ACE.SinglePlayer/UI/ModsForm.cs b/Source/ACE.SinglePlayer/UI/ModsForm.cs index 4a784b3351..85ef7b49c9 100644 --- a/Source/ACE.SinglePlayer/UI/ModsForm.cs +++ b/Source/ACE.SinglePlayer/UI/ModsForm.cs @@ -41,12 +41,14 @@ public sealed class ModsForm : Form ScrollBars = ScrollBars.Vertical, BorderStyle = BorderStyle.None }; - private readonly LinkLabel sourceLink = new() { Text = "View source and original documentation", AutoSize = true }; + private readonly LinkLabel sourceLink = new() { Text = "View original source code", AutoSize = true }; + private readonly LinkLabel portedSourceLink = new() { Text = "View ACE Single Player ported code", AutoSize = true }; private readonly Button install = new() { Text = "Install", AutoSize = true }; private readonly Button toggle = new() { Text = "Turn off", AutoSize = true }; private readonly Button remove = new() { Text = "Remove", AutoSize = true }; private readonly Button openSettings = new() { Text = "Settings", AutoSize = true }; - private readonly Button importPackage = new() { Text = "Import Mod Package...", AutoSize = true }; + private readonly Button importPackage = new() { Text = "Import a Mod ZIP...", AutoSize = true }; + private readonly Button authorGuide = new() { Text = "How to Make a Mod", AutoSize = true }; private BindingList items = new(); public ModsForm(LauncherSettings settings, Func isServerRunning) @@ -67,13 +69,27 @@ public ModsForm(LauncherSettings settings, Func isServerRunning) var heading = new Label { - Dock = DockStyle.Top, - Height = 72, + Dock = DockStyle.Fill, Padding = new Padding(18, 10, 18, 4), Font = new Font("Georgia", 19, FontStyle.Bold), ForeColor = PaleGold, Text = "MOD LIBRARY\r\nPick a mod to see what it changes before installing it." }; + var headerActions = new FlowLayoutPanel + { + Dock = DockStyle.Right, + Width = 330, + FlowDirection = FlowDirection.LeftToRight, + WrapContents = true, + Padding = new Padding(0, 20, 12, 0), + BackColor = Color.Transparent + }; + foreach (var button in new[] { importPackage, authorGuide }) + StyleButton(button); + headerActions.Controls.AddRange(new Control[] { importPackage, authorGuide }); + var header = new Panel { Dock = DockStyle.Top, Height = 82, BackColor = Night }; + header.Controls.Add(heading); + header.Controls.Add(headerActions); var split = new SplitContainer { @@ -87,7 +103,7 @@ public ModsForm(LauncherSettings settings, Func isServerRunning) split.Panel2.Controls.Add(BuildDetailsPanel()); Controls.Add(split); - Controls.Add(heading); + Controls.Add(header); // SplitContainer starts with a small design-time width. Setting a large // distance or panel minimum in the initializer throws before the form has @@ -100,7 +116,9 @@ public ModsForm(LauncherSettings settings, Func isServerRunning) remove.Click += (_, _) => RemoveSelected(); openSettings.Click += (_, _) => OpenSelectedSettings(); importPackage.Click += async (_, _) => await ImportPackageAsync(); + authorGuide.Click += (_, _) => OpenModAuthorGuide(); sourceLink.LinkClicked += (_, _) => OpenSelectedSource(); + portedSourceLink.LinkClicked += (_, _) => OpenSelectedPortSource(); RefreshCatalog(); } @@ -144,6 +162,8 @@ private Control BuildDetailsPanel() detailText.Font = new Font(Font.FontFamily, 10); sourceLink.LinkColor = Color.FromArgb(142, 197, 222); sourceLink.ActiveLinkColor = PaleGold; + portedSourceLink.LinkColor = Color.FromArgb(142, 197, 222); + portedSourceLink.ActiveLinkColor = PaleGold; var actions = new FlowLayoutPanel { @@ -154,12 +174,19 @@ private Control BuildDetailsPanel() Padding = new Padding(0, 9, 0, 0), BackColor = Color.Transparent }; - foreach (var button in new[] { install, toggle, remove, openSettings, importPackage }) + foreach (var button in new[] { install, toggle, remove, openSettings }) StyleButton(button); - actions.Controls.AddRange(new Control[] { install, toggle, remove, openSettings, importPackage }); + actions.Controls.AddRange(new Control[] { install, toggle, remove, openSettings }); - var sourcePanel = new Panel { Dock = DockStyle.Bottom, Height = 38, Padding = new Padding(0, 8, 0, 0) }; - sourcePanel.Controls.Add(sourceLink); + var sourcePanel = new FlowLayoutPanel + { + Dock = DockStyle.Bottom, + Height = 48, + FlowDirection = FlowDirection.LeftToRight, + WrapContents = true, + Padding = new Padding(0, 8, 0, 0) + }; + sourcePanel.Controls.AddRange(new Control[] { sourceLink, portedSourceLink }); panel.Controls.Add(detailText); panel.Controls.Add(sourcePanel); @@ -212,11 +239,17 @@ private void UpdateDetails() var dependencies = item.Catalog.Dependencies.Count == 0 ? "None declared" : string.Join(", ", item.Catalog.Dependencies.Select(FindCatalogName)); + var testingStatus = item.Catalog.Availability == ModCatalogAvailability.Preview + ? "PREVIEW - automated compatibility checks passed, but thorough in-game testing has not been completed." + : item.Catalog.Availability == ModCatalogAvailability.Ready + ? "CURATED - packaged for this ACE release." + : "NOT PORTED - source is listed for reference only."; detailText.Text = $"WHAT IT DOES\r\n{item.Catalog.Description}\r\n\r\n" + $"DETAILS\r\n{item.Catalog.Details}\r\n\r\n" + $"SAVED-GAME SAFETY\r\n{item.Catalog.SafetyNotice}\r\n\r\n" + $"COMPATIBILITY\r\n{item.CompatibilityMessage}\r\n\r\n" + + $"TESTING STATUS\r\n{testingStatus}\r\n\r\n" + $"REQUIRES\r\n{dependencies}\r\n\r\n" + $"AUTHOR / VERSION TARGET\r\n{item.Author} | {item.Catalog.TargetFramework} | {item.Catalog.TargetAceVersion}"; @@ -242,7 +275,7 @@ private async Task InstallSelectedAsync() { MessageBox.Show(this, item.CompatibilityMessage + - "\r\n\r\nImport Mod Package can install a separately rebuilt package, but importing the original source does not port it to this ACE version.", + "\r\n\r\nImport a Mod ZIP can install a separately rebuilt package, but importing the original source does not port it to this ACE version.", "Mod is not packaged for this ACE version", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } @@ -250,7 +283,11 @@ private async Task InstallSelectedAsync() return; var answer = MessageBox.Show(this, - $"Install {item.Name}?\r\n\r\n{item.Catalog.Description}\r\n\r\n{item.Catalog.SafetyNotice}\r\n\r\nThe local server must restart before the mod becomes active.", + $"Install {item.Name}?\r\n\r\n{item.Catalog.Description}\r\n\r\n{item.Catalog.SafetyNotice}" + + (item.Catalog.Availability == ModCatalogAvailability.Preview + ? "\r\n\r\nPREVIEW WARNING: automated checks passed, but this mod has not been thoroughly tested in game." + : string.Empty) + + "\r\n\r\nThe local server must restart before the mod becomes active.", "Install mod", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (answer != DialogResult.Yes) return; @@ -295,11 +332,13 @@ private async Task ImportPackageAsync() var manifest = await installer.InspectAsync(dialog.FileName); var catalog = AquafirSampleCatalog.Entries.FirstOrDefault(entry => string.Equals(entry.Id, manifest.Id, StringComparison.OrdinalIgnoreCase)); - var compatibilityWarning = catalog is null - ? "This package is not in the curated catalog. The launcher can validate its checksum and file layout, but cannot prove that its code is compatible or safe for saved characters." - : catalog.Availability == ModCatalogAvailability.Ready - ? catalog.SafetyNotice - : "The bundled catalog still marks this mod as needing a source port. Only continue if this ZIP was rebuilt and tested specifically for the current ACE Single Player release."; + var compatibilityWarning = catalog?.Availability switch + { + null => "This package is not in the curated catalog. The launcher can validate its checksum and file layout, but cannot prove that its code is compatible or safe for saved characters.", + ModCatalogAvailability.Ready => catalog.SafetyNotice, + ModCatalogAvailability.Preview => catalog.SafetyNotice + "\r\n\r\nPREVIEW WARNING: automated checks passed, but this mod has not been thoroughly tested in game.", + _ => "The bundled catalog still marks this mod as needing a source port. Only continue if this ZIP was rebuilt and tested specifically for the current ACE Single Player release." + }; var answer = MessageBox.Show(this, $"Import {manifest.Name} {manifest.Version}?\r\n\r\nPackage ID: {manifest.Id}\r\n\r\n{compatibilityWarning}\r\n\r\n" + @@ -417,6 +456,21 @@ private void OpenSelectedSource() Open(url); } + private void OpenSelectedPortSource() + { + var url = Selected?.Catalog.PortSourceUrl; + if (!string.IsNullOrWhiteSpace(url)) + Open(url); + } + + private static void OpenModAuthorGuide() + { + var localGuide = Path.Combine(AppContext.BaseDirectory, "Docs", "MOD_AUTHOR_GUIDE.md"); + Open(File.Exists(localGuide) + ? localGuide + : "https://github.com/titaniumweiner/ACE-SinglePlayer/blob/main/docs/MOD_AUTHOR_GUIDE.md"); + } + private bool EnsureServerStopped() { if (!isServerRunning()) @@ -444,6 +498,9 @@ private void SetActions(bool installEnabled, bool toggleEnabled, bool removeEnab openSettings.Visible = settingsEnabled; sourceLink.Enabled = sourceEnabled; sourceLink.Visible = sourceEnabled; + var portedSourceEnabled = sourceEnabled && !string.IsNullOrWhiteSpace(Selected?.Catalog.PortSourceUrl); + portedSourceLink.Enabled = portedSourceEnabled; + portedSourceLink.Visible = portedSourceEnabled; } private void AddColumns() diff --git a/docs/AQUIFIR_MOD_COMPATIBILITY.md b/docs/AQUIFIR_MOD_COMPATIBILITY.md index 47adc778b8..2a1ba70d38 100644 --- a/docs/AQUIFIR_MOD_COMPATIBILITY.md +++ b/docs/AQUIFIR_MOD_COMPATIBILITY.md @@ -1,12 +1,12 @@ # Aquafir project compatibility with current ACE -Assessment date: 2026-07-14. Current ACE base: `08471633`, .NET 10. The external repositories were inspected at their default branches. Only the explicitly documented `CriticalOverride` pilot was ported into this repository; the client-side projects were not executed. +Assessment updated: 2026-07-15. The portable release uses ACE.Server build `1.77.4782` from upstream commit `650c5b75` on .NET 10. The external repositories were inspected at their default branches; client-side projects were not executed as ACE server mods. ## ACE.BaseMod sample catalog update The launcher now inventories all 22 folders under `aquafir/ACE.BaseMod/Samples` with curated descriptions and saved-game policies. The upstream samples target .NET 8, reference an installed ACE server, and use placeholder metadata, so they are not offered as compatible binaries merely because their source is public. -`CriticalOverride` has been ported in-tree to .NET 10, compiled against this exact `ACE.Server`, and packaged with an identity manifest and SHA-256 checksum. It is the first one-click installable pilot. Every remaining sample stays visible as **Needs port**, **Experimental**, or **Not recommended** until it receives the same rebuild and test treatment. See `docs/MOD_LIBRARY.md` for install/removal behavior and persistent-data rules. +`CriticalOverride` is the curated one-click port. `HelloCommand` and `SocietyTailoring` are one-click **Preview** ports compiled against the same server and packaged with identity manifests and SHA-256 checksums. Automated tests cover HelloCommand command registration/removal and SocietyTailoring's current Harmony target/signature, but neither preview is represented as thoroughly gameplay-tested. Every remaining sample stays visible as **Needs port**, **Experimental**, or **Not recommended** until it receives suitable rebuild and test treatment. See `docs/MOD_LIBRARY.md` for install/removal behavior and persistent-data rules. | Project | Type | Current target/dependencies | Builds against this ACE as-is? | Without Thwarg/Decal? | Status and recommendation | |---|---|---|---|---|---| diff --git a/docs/MOD_AUTHOR_GUIDE.md b/docs/MOD_AUTHOR_GUIDE.md new file mode 100644 index 0000000000..683c4871b1 --- /dev/null +++ b/docs/MOD_AUTHOR_GUIDE.md @@ -0,0 +1,168 @@ +# How to make and import an ACE Single Player mod + +ACE Single Player currently imports **server-code mods**: .NET DLLs that use ACE's `IHarmonyMod` interface. World SQL packs and client DAT/landscape packs need a different migration system and are not supported by this ZIP importer yet. + +The easiest starting point is the small [HelloCommand port](https://github.com/titaniumweiner/ACE-SinglePlayer/tree/main/Source/ACE.SinglePlayer.Mods.HelloCommand). Copy that project, rename its assembly and namespace, and replace its command code with your own feature. + +## 1. Create the project + +Place the project beside `ACE.Server` under `Source` so it can compile against the exact server version bundled by the launcher: + +```text +Source/ + ACE.Server/ + ACE.SinglePlayer.Mods.MyMod/ + ACE.SinglePlayer.Mods.MyMod.csproj + Mod.cs + Meta.json + ace-mod.json + README.md +``` + +Use this project file, changing `MyMod` to a simple name without spaces: + +```xml + + + net10.0 + MyMod + MyMod + x64 + enable + enable + + + + + + + + + +``` + +## 2. Add the mod entry point + +ACE requires a public `Mod` class in a namespace that matches the assembly name. The class implements `IHarmonyMod`: + +```csharp +using ACE.Server.Mods; +using HarmonyLib; + +namespace MyMod; + +public sealed class Mod : IHarmonyMod +{ + private const string HarmonyId = "your-name.MyMod"; + private readonly Harmony harmony = new(HarmonyId); + + public void Initialize() + { + harmony.PatchAll(typeof(Mod).Assembly); + ModManager.Log("MyMod loaded."); + } + + public void Dispose() => harmony.UnpatchAll(HarmonyId); +} +``` + +Harmony patches must target methods that exist in this repository's current `ACE.Server` source. A DLL built for a different ACE release may compile against that release and still fail here because method names or parameters changed. + +## 3. Describe the installed mod + +Create `Meta.json`. The `Name` must match the assembly and folder name: + +```json +{ + "Name": "MyMod", + "Author": "Your name", + "Description": "A plain-language explanation of what the mod changes.", + "Version": "1.0.0", + "Priority": 0, + "Enabled": true, + "HotReload": false, + "RegisterCommands": false, + "CatalogId": "your-name.my-mod", + "TargetAceVersion": "ACE.Server 1.1 / .NET 10", + "DataImpact": "SettingsOnly", + "RemovalPolicy": "Safe" +} +``` + +Choose saved-data labels honestly: + +- `None`: no saved data changes. +- `SettingsOnly`: runtime behavior changes, but saves do not depend on the mod. +- `CharacterData`: characters or items can be changed permanently. +- `WorldData`: database/world content can depend on the mod. +- `ClientData`: matching client files are required. + +Use `Safe`, `ChangesRemain`, `BackupRequired`, or `DoNotRemove` for `RemovalPolicy`. The launcher treats unknown imported code conservatively even when these fields are present. + +## 4. Add the package manifest + +Create `ace-mod.json`: + +```json +{ + "formatVersion": 1, + "id": "your-name.my-mod", + "name": "MyMod", + "version": "1.0.0", + "folderName": "MyMod", + "entryAssembly": "MyMod.dll" +} +``` + +The package ID should be stable across updates. The name, folder, DLL, and `Meta.json` name must agree. + +## 5. Build a checksummed import ZIP + +From the repository root, run: + +```powershell +powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\package-mod.ps1 -ProjectDirectory .\Source\ACE.SinglePlayer.Mods.MyMod +``` + +The helper builds against the repository's ACE version and creates two files under `artifacts\Mods`: + +```text +your-name.my-mod-1.0.0.zip +your-name.my-mod-1.0.0.zip.sha256 +``` + +Internally, the ZIP has the format the launcher requires: + +```text +ace-mod.json +mod/ + MyMod.dll + Meta.json + README.md + LICENSE.txt +``` + +`Settings.json` is included automatically when the project has one. Keep the `.zip` and `.zip.sha256` files together when sharing the mod. + +## 6. Import it + +1. Stop the game and local server. +2. Open **Mods** in ACE Single Player. +3. Click **Import a Mod ZIP...** at the top. +4. Choose the `.zip`; the launcher finds and verifies the adjacent `.zip.sha256` file. +5. Read the warning and confirm. +6. Click **Play** to start ACE with the mod. + +The importer checks the checksum, manifest, required files, naming rules, archive paths, size limits, and atomic installation. It **cannot prove arbitrary DLL code is safe** and it cannot discover every conflict between two Harmony patches. + +## Testing checklist before sharing + +- Build using the exact ACE Single Player branch you name as supported. +- Start the private server with only this mod enabled and inspect the server log for load errors. +- Exercise the changed behavior in game, including failure and boundary cases. +- Test a clean install, disable/re-enable, server restart, and removal when removal is claimed safe. +- Test with every declared dependency and likely patch conflict. +- Back up `%LOCALAPPDATA%\ACESinglePlayer` before tests that change characters, items, or the world. +- Link to the complete source and license. Clearly label a package **Preview / not thoroughly tested** until real gameplay coverage exists. + +Do not put Asheron's Call client files or DAT files in a mod ZIP. They are proprietary and the server-mod importer is not designed to switch client data safely. diff --git a/docs/MOD_LIBRARY.md b/docs/MOD_LIBRARY.md index 504fc0c115..f6df4c1ede 100644 --- a/docs/MOD_LIBRARY.md +++ b/docs/MOD_LIBRARY.md @@ -6,11 +6,11 @@ ACE Single Player includes a curated mod library. Open **Mods** from the launche The library inventories all 22 samples in [aquafir/ACE.BaseMod](https://github.com/aquafir/ACE.BaseMod/tree/master/Samples). The upstream `Meta.json` files contain placeholder descriptions, so ACE Single Player's descriptions and safety policies are curated from the actual READMEs and source. -`CriticalOverride` is the first sample ported to this repository's .NET 10 ACE build. Its checksum-verified package is included in the release and can be installed with one click. The other samples remain visible but are marked **Needs port**, **Experimental**, or **Not recommended** until they compile against this exact ACE version and pass load/gameplay tests. The launcher will not pretend that old .NET 8 source is a compatible installable package. +`CriticalOverride` is curated for this repository's .NET 10 ACE build. `HelloCommand` and `SocietyTailoring` are installable **Preview** ports. Their checksum-verified packages build and pass automated registration/Harmony-target, packaging, and launcher tests, but they have not received thorough in-game testing. The launcher repeats that warning before installation. The other samples remain visible but are marked **Needs port**, **Experimental**, or **Not recommended** until they compile against this exact ACE version and pass suitable tests. The launcher will not pretend that old .NET 8 source is a compatible installable package. ## Importing a separately rebuilt package -**Import Mod Package...** accepts an ACE Single Player mod ZIP after the game and server are stopped. Import is atomic and requires: +**Import a Mod ZIP...** at the top of the Mods window accepts an ACE Single Player mod ZIP after the game and server are stopped. Import is atomic and requires: - `ace-mod.json` at the ZIP root; - mod files under the ZIP's `mod/` directory; @@ -32,6 +32,8 @@ The manifest format is: Importing validates identity, checksum, archive paths, size, required files, and ACE's folder/assembly naming rule. It cannot prove that arbitrary DLL code is compatible or safe. In particular, downloading an original Aquafir .NET 8 source folder and putting it in a ZIP does **not** port it to this .NET 10 ACE build. A developer must rebuild and test that source first. The launcher gives an additional warning when a selected package corresponds to a catalog entry that still says **Needs port**. +See [How to make and import an ACE Single Player mod](MOD_AUTHOR_GUIDE.md) for a working project skeleton, metadata examples, the package helper, testing checklist, and import steps. + ## Install, turn off, and remove are different operations - **Install** validates the package identity and checksum, rejects unsafe archive paths, stages all files, and only then moves the complete mod into the ACE `Mods` directory. diff --git a/scripts/package-mod.ps1 b/scripts/package-mod.ps1 new file mode 100644 index 0000000000..950ac7dc84 --- /dev/null +++ b/scripts/package-mod.ps1 @@ -0,0 +1,91 @@ +param( + [Parameter(Mandatory = $true)] + [string] $ProjectDirectory, + [string] $OutputDirectory, + [ValidateSet("Debug", "Release")] + [string] $Configuration = "Release" +) + +$ErrorActionPreference = "Stop" +$repoRoot = [IO.Path]::GetFullPath((Split-Path $PSScriptRoot -Parent)) +$ProjectDirectory = (Resolve-Path -LiteralPath $ProjectDirectory).Path +if ([string]::IsNullOrWhiteSpace($OutputDirectory)) { + $OutputDirectory = Join-Path $repoRoot "artifacts\Mods" +} +$OutputDirectory = [IO.Path]::GetFullPath($OutputDirectory) + +$projects = @(Get-ChildItem -LiteralPath $ProjectDirectory -File -Filter "*.csproj") +if ($projects.Count -ne 1) { + throw "The mod directory must contain exactly one .csproj file." +} + +$manifestPath = Join-Path $ProjectDirectory "ace-mod.json" +$metadataPath = Join-Path $ProjectDirectory "Meta.json" +if (-not (Test-Path -LiteralPath $manifestPath) -or -not (Test-Path -LiteralPath $metadataPath)) { + throw "The mod directory must contain ace-mod.json and Meta.json." +} +$manifest = Get-Content -LiteralPath $manifestPath -Raw | ConvertFrom-Json +if ($manifest.formatVersion -ne 1) { + throw "Only ace-mod.json formatVersion 1 is supported." +} +foreach ($field in @("id", "name", "version", "folderName", "entryAssembly")) { + if ([string]::IsNullOrWhiteSpace($manifest.$field)) { + throw "ace-mod.json is missing $field." + } +} +if ($manifest.folderName -match '[\\/:*?"<>|]' -or $manifest.entryAssembly -match '[\\/:*?"<>|]' -or + -not $manifest.entryAssembly.EndsWith(".dll", [StringComparison]::OrdinalIgnoreCase) -or + -not [string]::Equals([IO.Path]::GetFileNameWithoutExtension($manifest.entryAssembly), $manifest.folderName, [StringComparison]::OrdinalIgnoreCase)) { + throw "The folderName and entryAssembly are invalid or do not match." +} + +$localDotnet = Join-Path $repoRoot ".dotnet\dotnet.exe" +$dotnet = if (Test-Path -LiteralPath $localDotnet) { $localDotnet } else { (Get-Command dotnet -ErrorAction Stop).Source } +$tempRoot = [IO.Path]::GetFullPath([IO.Path]::GetTempPath()) +$stage = Join-Path $tempRoot "ACE-Mod-Package-$PID-$($manifest.folderName)" +$build = Join-Path $stage "Build" +$artifacts = Join-Path $stage "Artifacts" +$package = Join-Path $stage "Package" +$modDirectory = Join-Path $package "mod" + +try { + if (Test-Path -LiteralPath $stage) { + Remove-Item -LiteralPath $stage -Recurse -Force + } + New-Item -ItemType Directory -Force -Path $build, $artifacts, $modDirectory, $OutputDirectory | Out-Null + + & $dotnet build $projects[0].FullName -c $Configuration --artifacts-path $artifacts -o $build + if ($LASTEXITCODE -ne 0) { + throw "The mod did not build successfully." + } + + $entryAssembly = Join-Path $build $manifest.entryAssembly + if (-not (Test-Path -LiteralPath $entryAssembly)) { + throw "The build did not produce $($manifest.entryAssembly)." + } + + Copy-Item -LiteralPath $manifestPath -Destination $package + Copy-Item -LiteralPath $entryAssembly, $metadataPath -Destination $modDirectory + foreach ($optionalName in @("Settings.json", "README.md")) { + $optionalPath = Join-Path $ProjectDirectory $optionalName + if (Test-Path -LiteralPath $optionalPath) { + Copy-Item -LiteralPath $optionalPath -Destination $modDirectory + } + } + Copy-Item -LiteralPath (Join-Path $repoRoot "LICENSE") -Destination (Join-Path $modDirectory "LICENSE.txt") + + $archive = Join-Path $OutputDirectory "$($manifest.id)-$($manifest.version).zip" + if (Test-Path -LiteralPath $archive) { + Remove-Item -LiteralPath $archive -Force + } + Compress-Archive -Path (Join-Path $package "*") -DestinationPath $archive -CompressionLevel Optimal + (Get-FileHash -LiteralPath $archive -Algorithm SHA256).Hash | Set-Content -LiteralPath ($archive + ".sha256") -Encoding ascii + + Write-Host "Mod package: $archive" + Write-Host "Checksum: $archive.sha256" +} +finally { + if (Test-Path -LiteralPath $stage) { + Remove-Item -LiteralPath $stage -Recurse -Force + } +} diff --git a/scripts/publish-singleplayer.ps1 b/scripts/publish-singleplayer.ps1 index ac2212e4a2..abd1c68349 100644 --- a/scripts/publish-singleplayer.ps1 +++ b/scripts/publish-singleplayer.ps1 @@ -40,8 +40,6 @@ if (-not $stage.StartsWith($tempPrefix, [StringComparison]::OrdinalIgnoreCase)) $launcherPublish = Join-Path $stage "Launcher" $serverPublish = Join-Path $stage "Server" $decalHostPublish = Join-Path $stage "DecalHost" -$criticalOverridePublish = Join-Path $stage "CriticalOverride" -$criticalOverridePackage = Join-Path $stage "CriticalOverridePackage" $mariaDbExtract = Join-Path $stage "MariaDB" $worldExtract = Join-Path $stage "World" $buildArtifacts = Join-Path $stage "BuildArtifacts" @@ -91,7 +89,7 @@ foreach ($path in @($stage, $OutputDirectory)) { Remove-Item -LiteralPath $path -Recurse -Force } } -New-Item -ItemType Directory -Path $launcherPublish, $serverPublish, $decalHostPublish, $criticalOverridePublish, $criticalOverridePackage, $buildArtifacts, $OutputDirectory | Out-Null +New-Item -ItemType Directory -Path $launcherPublish, $serverPublish, $decalHostPublish, $buildArtifacts, $OutputDirectory | Out-Null Write-Host "Publishing ACE.Server as self-contained Windows x64..." Invoke-DotNet @("publish", (Join-Path $repoRoot "Source\ACE.Server\ACE.Server.csproj"), "-c", $Configuration, "-r", "win-x64", "--self-contained", "true", "--artifacts-path", $buildArtifacts, "-o", $serverPublish) @@ -102,25 +100,25 @@ Invoke-DotNet @("publish", (Join-Path $repoRoot "Source\ACE.SinglePlayer\ACE.Sin Write-Host "Publishing the optional Decal helper as a self-contained Windows x86 executable..." Invoke-DotNet @("publish", (Join-Path $repoRoot "Source\ACE.SinglePlayer.DecalHost\ACE.SinglePlayer.DecalHost.csproj"), "-c", $Configuration, "-r", "win-x86", "--self-contained", "true", "--artifacts-path", $buildArtifacts, "-p:PublishSingleFile=true", "-o", $decalHostPublish) -Write-Host "Building the curated CriticalOverride mod package..." -$criticalOverrideProject = Join-Path $repoRoot "Source\ACE.SinglePlayer.Mods.CriticalOverride" -Invoke-DotNet @("build", (Join-Path $criticalOverrideProject "ACE.SinglePlayer.Mods.CriticalOverride.csproj"), "-c", $Configuration, "--artifacts-path", $buildArtifacts, "-o", $criticalOverridePublish) - Copy-Item -Path (Join-Path $launcherPublish "*") -Destination $OutputDirectory -Recurse -Force New-Item -ItemType Directory -Path (Join-Path $OutputDirectory "Server"), (Join-Path $OutputDirectory "Tools"), (Join-Path $OutputDirectory "Packages") | Out-Null Copy-Item -Path (Join-Path $serverPublish "*") -Destination (Join-Path $OutputDirectory "Server") -Recurse -Force Copy-Item -Path (Join-Path $decalHostPublish "ACE.SinglePlayer.DecalHost.exe") -Destination (Join-Path $OutputDirectory "Tools") -Force -$criticalOverrideModDirectory = Join-Path $criticalOverridePackage "mod" -New-Item -ItemType Directory -Path $criticalOverrideModDirectory | Out-Null -Copy-Item (Join-Path $criticalOverrideProject "ace-mod.json") $criticalOverridePackage -Copy-Item (Join-Path $criticalOverridePublish "CriticalOverride.dll") $criticalOverrideModDirectory -Copy-Item (Join-Path $criticalOverrideProject "Meta.json") $criticalOverrideModDirectory -Copy-Item (Join-Path $criticalOverrideProject "Settings.json") $criticalOverrideModDirectory -Copy-Item (Join-Path $criticalOverrideProject "README.md") $criticalOverrideModDirectory -$criticalOverrideArchive = Join-Path $OutputDirectory "Packages\aquafir.critical-override-1.0.0-sp1.zip" -Compress-Archive -Path (Join-Path $criticalOverridePackage "*") -DestinationPath $criticalOverrideArchive -CompressionLevel Optimal -(Get-FileHash -LiteralPath $criticalOverrideArchive -Algorithm SHA256).Hash | Set-Content -LiteralPath ($criticalOverrideArchive + ".sha256") -Encoding ascii +Write-Host "Building the curated mod packages..." +foreach ($modProject in @( + "ACE.SinglePlayer.Mods.CriticalOverride", + "ACE.SinglePlayer.Mods.HelloCommand", + "ACE.SinglePlayer.Mods.SocietyTailoring" +)) { + & (Join-Path $repoRoot "scripts\package-mod.ps1") ` + -ProjectDirectory (Join-Path $repoRoot "Source\$modProject") ` + -OutputDirectory (Join-Path $OutputDirectory "Packages") ` + -Configuration $Configuration + if ($LASTEXITCODE -ne 0) { + throw "Packaging $modProject failed with exit code $LASTEXITCODE" + } +} if (-not $SkipBundledDependencies) { New-Item -ItemType Directory -Path $cacheRoot, $mariaDbExtract, $worldExtract -Force | Out-Null @@ -193,6 +191,7 @@ Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_INSTALL.md") (Join-Path $Outp Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_ARCHITECTURE.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "docs\AQUIFIR_MOD_COMPATIBILITY.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "docs\MOD_LIBRARY.md") (Join-Path $OutputDirectory "Docs") +Copy-Item (Join-Path $repoRoot "docs\MOD_AUTHOR_GUIDE.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_ROADMAP.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_BUILD_AND_TEST.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "README.md") $OutputDirectory From 17787602df62a27aa8522d03e8daf0c695f79153 Mon Sep 17 00:00:00 2001 From: titaniumweiner Date: Wed, 15 Jul 2026 21:37:55 -0400 Subject: [PATCH 12/15] Add CustomClothingBase preview package --- README.md | 2 +- Source/ACE.SinglePlayer.Tests/ModTests.cs | 14 ++++++ .../Mods/CuratedModCatalog.cs | 24 ++++++++++ .../Mods/ModCatalogService.cs | 9 +++- Source/ACE.SinglePlayer/Mods/ModModels.cs | 3 +- Source/ACE.SinglePlayer/UI/ModsForm.cs | 10 ++-- docs/MOD_LIBRARY.md | 8 +++- docs/THIRD_PARTY_NOTICES.md | 11 ++++- packaging/CustomClothingBase/Meta.json | 14 ++++++ packaging/CustomClothingBase/README.md | 22 +++++++++ packaging/CustomClothingBase/ace-mod.json | 8 ++++ packaging/CustomClothingBase/json/README.txt | 7 +++ scripts/publish-singleplayer.ps1 | 46 +++++++++++++++++++ 13 files changed, 168 insertions(+), 10 deletions(-) create mode 100644 Source/ACE.SinglePlayer/Mods/CuratedModCatalog.cs create mode 100644 packaging/CustomClothingBase/Meta.json create mode 100644 packaging/CustomClothingBase/README.md create mode 100644 packaging/CustomClothingBase/ace-mod.json create mode 100644 packaging/CustomClothingBase/json/README.txt diff --git a/README.md b/README.md index 31bbb5c4f3..b191cb1052 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ The portable release currently pins ACEmulator server build `1.77.4782` from ups ## Mods -Open **Mods** in the launcher to browse the curated mod library. Every entry includes a plain-language description, compatibility result, requirements, source-code links, and a saved-game safety warning. `CriticalOverride` is curated for one-click installation. `HelloCommand` and `SocietyTailoring` are installable **Preview** ports: they pass automated build/load/package checks but are clearly marked as not thoroughly tested in game. Other samples remain listed but unavailable until they are ported and tested. **Import a Mod ZIP...** can atomically install separately rebuilt, checksummed packages in the documented ACE Single Player ZIP format. +Open **Mods** in the launcher to browse the curated mod library. Every entry includes a plain-language description, compatibility result, requirements, source-code links, and a saved-game safety warning. `CriticalOverride` is curated for one-click installation. `HelloCommand` and `SocietyTailoring` are installable **Preview** ports. OptimShi's `CustomClothingBase` v1.11 is also an installable Preview using the author's checksum-pinned, unmodified official DLLs after a successful current-ACE loader test. Preview mods are clearly marked as not thoroughly tested in game. Other samples remain listed but unavailable until they are ported and tested. **Import a Mod ZIP...** can atomically install separately rebuilt, checksummed packages in the documented ACE Single Player ZIP format. Turning a mod off stops its code after a server restart, but it does not undo experience, items, balances, character properties, or world content already saved by that mod. The launcher blocks removal of mods whose saved data may still depend on them and moves safely removable files to a recovery folder rather than deleting them. See [Mod library and saved-game safety](docs/MOD_LIBRARY.md) for the full policy, or [How to make and import a mod](docs/MOD_AUTHOR_GUIDE.md) to build a compatible package. diff --git a/Source/ACE.SinglePlayer.Tests/ModTests.cs b/Source/ACE.SinglePlayer.Tests/ModTests.cs index b56b1d3e5b..327fa02a0a 100644 --- a/Source/ACE.SinglePlayer.Tests/ModTests.cs +++ b/Source/ACE.SinglePlayer.Tests/ModTests.cs @@ -38,6 +38,20 @@ public void AquafirCatalogHasUsefulDescriptionsAndSafetyPolicies() Assert.AreEqual(2, AquafirSampleCatalog.Entries.Count(entry => entry.Availability == ModCatalogAvailability.Preview)); } + [TestMethod] + public void CuratedCatalogIncludesCustomClothingBaseAsWarnedPreview() + { + Assert.AreEqual(23, CuratedModCatalog.Entries.Count); + var entry = CuratedModCatalog.Entries.Single(item => item.Id == "optimshi.custom-clothing-base"); + Assert.AreEqual("OptimShi", entry.Author); + Assert.AreEqual(ModCatalogAvailability.Preview, entry.Availability); + Assert.AreEqual(ModDataImpact.WorldData, entry.DataImpact); + Assert.AreEqual(ModRemovalPolicy.DoNotRemove, entry.RemovalPolicy); + Assert.IsTrue(entry.SourceUrl.Contains("OptimShi/CustomClothingBase", StringComparison.Ordinal)); + Assert.IsTrue(entry.PreviewNotice.Contains("not been thoroughly tested", StringComparison.OrdinalIgnoreCase)); + Assert.IsTrue(entry.PackageRelativePath.EndsWith(".zip", StringComparison.OrdinalIgnoreCase)); + } + [TestMethod] public void HelloCommandRegistersAndRemovesCurrentAceCommands() { diff --git a/Source/ACE.SinglePlayer/Mods/CuratedModCatalog.cs b/Source/ACE.SinglePlayer/Mods/CuratedModCatalog.cs new file mode 100644 index 0000000000..0282bb5afe --- /dev/null +++ b/Source/ACE.SinglePlayer/Mods/CuratedModCatalog.cs @@ -0,0 +1,24 @@ +namespace ACE.SinglePlayer.Mods; + +public static class CuratedModCatalog +{ + public static IReadOnlyList Entries { get; } = + AquafirSampleCatalog.Entries.Concat(new[] + { + new ModCatalogEntry( + "optimshi.custom-clothing-base", + "CustomClothingBase", + "OptimShi", + "Loads custom server-side ClothingTable entries from JSON files, enabling new clothing colors and appearance combinations without client DAT updates.", + "The official v1.11 package can merge or replace ClothingTable entries, export entries with @clothingbase-export, and reload its cache with @clear-clothing-cache. Place custom JSON files in the installed mod's json folder. The upstream repository currently has no LICENSE file; redistribution is based on OptimShi's permission reported by the ACE Single Player project maintainer.", + "https://github.com/OptimShi/CustomClothingBase", + ModCatalogAvailability.Preview, + ModDataImpact.WorldData, + ModRemovalPolicy.DoNotRemove, + "Back up first. Do not disable or remove this mod while saved items or world content refer to custom ClothingBase IDs.", + TargetAceVersion: "Official v1.11 binary load-tested with ACE.Server 1.1 / .NET 10", + TargetFramework: ".NET 8 upstream binary hosted by .NET 10", + PackageRelativePath: @"Packages\optimshi.custom-clothing-base-1.11-upstream.zip", + PreviewNotice: "OptimShi's unmodified official v1.11 package passed an isolated load test with the bundled ACE server. Clothing behavior, custom JSON content, cache reloads, and saved-world compatibility have not been thoroughly tested in game.") + }).ToArray(); +} diff --git a/Source/ACE.SinglePlayer/Mods/ModCatalogService.cs b/Source/ACE.SinglePlayer/Mods/ModCatalogService.cs index ea4823a311..8802a00ed7 100644 --- a/Source/ACE.SinglePlayer/Mods/ModCatalogService.cs +++ b/Source/ACE.SinglePlayer/Mods/ModCatalogService.cs @@ -85,7 +85,7 @@ public IReadOnlyList Merge(IEnumerable installedRecords) ? "Installed and enabled. A server restart is required after changes." : "Installed but disabled. A server restart is required after changes."; if (entry.Availability == ModCatalogAvailability.Preview) - installedMessage += " Preview port: automated checks passed, but thorough in-game testing has not been completed."; + installedMessage += " " + GetPreviewNotice(entry); return (CompatibilityStatus.Compatible, installedMessage); } @@ -112,10 +112,15 @@ public IReadOnlyList Merge(IEnumerable installedRecords) return (CompatibilityStatus.PackageMissing, "This build does not contain the validated mod package."); return entry.Availability == ModCatalogAvailability.Preview - ? (CompatibilityStatus.Compatible, "Preview package is included. It builds and passes automated load, patch/registration, checksum, and package checks, but it has not received thorough in-game testing. Back up before use.") + ? (CompatibilityStatus.Compatible, GetPreviewNotice(entry)) : (CompatibilityStatus.Compatible, "Validated package is included and ready to install."); } + private static string GetPreviewNotice(ModCatalogEntry entry) => + string.IsNullOrWhiteSpace(entry.PreviewNotice) + ? "Preview package is included. It builds and passes automated load, patch/registration, checksum, and package checks, but it has not received thorough in-game testing. Back up before use." + : entry.PreviewNotice; + private string FriendlyNames(IEnumerable ids) => string.Join(", ", ids.Select(id => catalog.FirstOrDefault(entry => string.Equals(entry.Id, id, StringComparison.OrdinalIgnoreCase))?.Name ?? id)); diff --git a/Source/ACE.SinglePlayer/Mods/ModModels.cs b/Source/ACE.SinglePlayer/Mods/ModModels.cs index a0ec115337..19ecfe285d 100644 --- a/Source/ACE.SinglePlayer/Mods/ModModels.cs +++ b/Source/ACE.SinglePlayer/Mods/ModModels.cs @@ -86,7 +86,8 @@ public sealed record ModCatalogEntry( IReadOnlyList? DependencyIds = null, IReadOnlyList? ConflictIds = null, string PackageRelativePath = "", - string PortSourceUrl = "") + string PortSourceUrl = "", + string PreviewNotice = "") { public IReadOnlyList Dependencies { get; init; } = DependencyIds ?? Array.Empty(); public IReadOnlyList Conflicts { get; init; } = ConflictIds ?? Array.Empty(); diff --git a/Source/ACE.SinglePlayer/UI/ModsForm.cs b/Source/ACE.SinglePlayer/UI/ModsForm.cs index 85ef7b49c9..eb7ffc322f 100644 --- a/Source/ACE.SinglePlayer/UI/ModsForm.cs +++ b/Source/ACE.SinglePlayer/UI/ModsForm.cs @@ -199,7 +199,7 @@ private Control BuildDetailsPanel() private void RefreshCatalog() { var installedCatalog = new ModCatalog(CreateDisplayedModProviders(settings.ModsDirectory)); - var service = new ModCatalogService(AquafirSampleCatalog.Entries, AppContext.BaseDirectory); + var service = new ModCatalogService(CuratedModCatalog.Entries, AppContext.BaseDirectory); items = new BindingList(service.Merge(installedCatalog.Scan()).ToList()); grid.DataSource = items; if (grid.Rows.Count > 0) @@ -240,7 +240,9 @@ private void UpdateDetails() ? "None declared" : string.Join(", ", item.Catalog.Dependencies.Select(FindCatalogName)); var testingStatus = item.Catalog.Availability == ModCatalogAvailability.Preview - ? "PREVIEW - automated compatibility checks passed, but thorough in-game testing has not been completed." + ? "PREVIEW - " + (string.IsNullOrWhiteSpace(item.Catalog.PreviewNotice) + ? "automated compatibility checks passed, but thorough in-game testing has not been completed." + : item.Catalog.PreviewNotice) : item.Catalog.Availability == ModCatalogAvailability.Ready ? "CURATED - packaged for this ACE release." : "NOT PORTED - source is listed for reference only."; @@ -330,7 +332,7 @@ private async Task ImportPackageAsync() try { var manifest = await installer.InspectAsync(dialog.FileName); - var catalog = AquafirSampleCatalog.Entries.FirstOrDefault(entry => + var catalog = CuratedModCatalog.Entries.FirstOrDefault(entry => string.Equals(entry.Id, manifest.Id, StringComparison.OrdinalIgnoreCase)); var compatibilityWarning = catalog?.Availability switch { @@ -484,7 +486,7 @@ private static void Open(string path) => Process.Start(new ProcessStartInfo { FileName = path, UseShellExecute = true }); private static string FindCatalogName(string id) => - AquafirSampleCatalog.Entries.FirstOrDefault(entry => string.Equals(entry.Id, id, StringComparison.OrdinalIgnoreCase))?.Name ?? id; + CuratedModCatalog.Entries.FirstOrDefault(entry => string.Equals(entry.Id, id, StringComparison.OrdinalIgnoreCase))?.Name ?? id; private void SetActions(bool installEnabled, bool toggleEnabled, bool removeEnabled, bool settingsEnabled, bool sourceEnabled) { diff --git a/docs/MOD_LIBRARY.md b/docs/MOD_LIBRARY.md index f6df4c1ede..0217448c48 100644 --- a/docs/MOD_LIBRARY.md +++ b/docs/MOD_LIBRARY.md @@ -6,7 +6,13 @@ ACE Single Player includes a curated mod library. Open **Mods** from the launche The library inventories all 22 samples in [aquafir/ACE.BaseMod](https://github.com/aquafir/ACE.BaseMod/tree/master/Samples). The upstream `Meta.json` files contain placeholder descriptions, so ACE Single Player's descriptions and safety policies are curated from the actual READMEs and source. -`CriticalOverride` is curated for this repository's .NET 10 ACE build. `HelloCommand` and `SocietyTailoring` are installable **Preview** ports. Their checksum-verified packages build and pass automated registration/Harmony-target, packaging, and launcher tests, but they have not received thorough in-game testing. The launcher repeats that warning before installation. The other samples remain visible but are marked **Needs port**, **Experimental**, or **Not recommended** until they compile against this exact ACE version and pass suitable tests. The launcher will not pretend that old .NET 8 source is a compatible installable package. +`CriticalOverride` is curated for this repository's .NET 10 ACE build. `HelloCommand` and `SocietyTailoring` are installable **Preview** ports. Their checksum-verified packages build and pass automated registration/Harmony-target, packaging, and launcher tests, but they have not received thorough in-game testing. OptimShi's `CustomClothingBase` v1.11 is also an installable Preview. Its unmodified official .NET 8 package is pinned by SHA-256 and passed an isolated load test in the exact .NET 10 ACE mod container, but custom clothing behavior and saved-world compatibility are not thoroughly tested. The launcher repeats those warnings before installation. The other samples remain visible but are marked **Needs port**, **Experimental**, or **Not recommended** until they compile against this exact ACE version and pass suitable tests. + +### CustomClothingBase + +`CustomClothingBase` loads custom ClothingTable entries from JSON without requiring client DAT updates. After installation, place custom `*.json` definitions directly in its `json` folder under the private ACE Mods directory. It can export entries with `@clothingbase-export` and reload with `@clear-clothing-cache`. Custom ClothingBase IDs can become dependencies of saved items or world content, so the launcher blocks removal and recommends a full backup before use. The [original source and examples](https://github.com/OptimShi/CustomClothingBase) remain the authoritative documentation. + +The upstream repository currently has no `LICENSE` file. The official v1.11 binaries are included unchanged based on OptimShi's permission reported by the ACE Single Player project maintainer, with attribution and links preserved in the package and release notices. ## Importing a separately rebuilt package diff --git a/docs/THIRD_PARTY_NOTICES.md b/docs/THIRD_PARTY_NOTICES.md index 380476edf1..927a44ad60 100644 --- a/docs/THIRD_PARTY_NOTICES.md +++ b/docs/THIRD_PARTY_NOTICES.md @@ -27,4 +27,13 @@ The ready-to-play ACE Single Player release bundles these unmodified upstream co - License: GNU General Public License version 2 - Source: -The applicable license texts are included in the release's `Licenses` directory. Asheron's Call itself, `acclient.exe`, client DAT files, Decal, and ThwargLauncher are not included. +## CustomClothingBase + +- Author: OptimShi +- Upstream and source: +- Official release: `v1.11` +- Official asset SHA-256: `505dcb951bdba9ec7788b2f947f3b8d6a7638e06c43000bd38beb129689873a6` +- Packaging: upstream DLLs are unmodified; ACE Single Player adds only its install manifest, metadata, and instructions +- License notice: the upstream repository currently contains no `LICENSE` file. Redistribution is included based on OptimShi's permission reported by the ACE Single Player project maintainer. OptimShi retains ownership of the upstream mod. + +The applicable published license texts are included in the release's `Licenses` directory. Asheron's Call itself, `acclient.exe`, client DAT files, Decal, and ThwargLauncher are not included. diff --git a/packaging/CustomClothingBase/Meta.json b/packaging/CustomClothingBase/Meta.json new file mode 100644 index 0000000000..86876b862a --- /dev/null +++ b/packaging/CustomClothingBase/Meta.json @@ -0,0 +1,14 @@ +{ + "Name": "CustomClothingBase", + "Author": "OptimShi", + "Description": "Loads custom server-side ClothingTable entries from JSON files.", + "Version": "1.11-upstream", + "Priority": 0, + "Enabled": true, + "HotReload": true, + "RegisterCommands": true, + "CatalogId": "optimshi.custom-clothing-base", + "TargetAceVersion": "Official v1.11 binary load-tested with ACE.Server 1.1 / .NET 10", + "DataImpact": "WorldData", + "RemovalPolicy": "DoNotRemove" +} diff --git a/packaging/CustomClothingBase/README.md b/packaging/CustomClothingBase/README.md new file mode 100644 index 0000000000..d794148f17 --- /dev/null +++ b/packaging/CustomClothingBase/README.md @@ -0,0 +1,22 @@ +# CustomClothingBase v1.11 for ACE Single Player + +CustomClothingBase is authored by OptimShi. It loads custom ClothingTable definitions from JSON, allowing server-side clothing colors and appearance combinations without requiring players to install client DAT updates. + +This package contains OptimShi's **unmodified official v1.11 DLLs** plus ACE Single Player packaging metadata and instructions. The official release was SHA-256 verified and passed an isolated load test using the exact ACE.Server bundled with ACE Single Player. + +## Use + +Place custom `*.json` clothing definitions directly in this installed mod's `json` folder. With `WatchContent` enabled in `Settings.json`, saving a JSON file clears the clothing cache automatically. You can also use: + +- `@clothingbase-export ` to export an existing entry; +- `@clear-clothing-cache` to force a reload while testing. + +OptimShi's source and examples: + +Official v1.11 release: + +## Preview and saved-world warning + +The mod loads successfully, but it has not been thoroughly tested in ACE Single Player with every JSON shape, clothing combination, cache-reload path, or saved world. Back up `%LOCALAPPDATA%\ACESinglePlayer` before using it. Do not disable or remove it while world content or saved items refer to custom ClothingBase IDs. + +The upstream repository currently has no `LICENSE` file. This redistribution is included based on permission from OptimShi reported by the ACE Single Player project maintainer. OptimShi retains ownership of the upstream mod. diff --git a/packaging/CustomClothingBase/ace-mod.json b/packaging/CustomClothingBase/ace-mod.json new file mode 100644 index 0000000000..c66dbf4253 --- /dev/null +++ b/packaging/CustomClothingBase/ace-mod.json @@ -0,0 +1,8 @@ +{ + "formatVersion": 1, + "id": "optimshi.custom-clothing-base", + "name": "CustomClothingBase", + "version": "1.11-upstream", + "folderName": "CustomClothingBase", + "entryAssembly": "CustomClothingBase.dll" +} diff --git a/packaging/CustomClothingBase/json/README.txt b/packaging/CustomClothingBase/json/README.txt new file mode 100644 index 0000000000..f4d1ba3a6f --- /dev/null +++ b/packaging/CustomClothingBase/json/README.txt @@ -0,0 +1,7 @@ +Place custom ClothingTable *.json files directly in this folder. + +Source, documentation, and examples: +https://github.com/OptimShi/CustomClothingBase + +Back up your ACE Single Player world before testing custom IDs. Do not remove +the mod while saved items or world content still refer to those IDs. diff --git a/scripts/publish-singleplayer.ps1 b/scripts/publish-singleplayer.ps1 index abd1c68349..14dba3c8d4 100644 --- a/scripts/publish-singleplayer.ps1 +++ b/scripts/publish-singleplayer.ps1 @@ -40,6 +40,8 @@ if (-not $stage.StartsWith($tempPrefix, [StringComparison]::OrdinalIgnoreCase)) $launcherPublish = Join-Path $stage "Launcher" $serverPublish = Join-Path $stage "Server" $decalHostPublish = Join-Path $stage "DecalHost" +$customClothingExtract = Join-Path $stage "CustomClothingBaseExtract" +$customClothingPackage = Join-Path $stage "CustomClothingBasePackage" $mariaDbExtract = Join-Path $stage "MariaDB" $worldExtract = Join-Path $stage "World" $buildArtifacts = Join-Path $stage "BuildArtifacts" @@ -52,6 +54,10 @@ $worldVersion = "0.9.294" $worldArchiveName = "ACE-World-Database-v$worldVersion.sql.zip" $worldUri = "https://github.com/ACEmulator/ACE-World-16PY-Patches/releases/download/v$worldVersion/$worldArchiveName" $worldSha256 = "aa8275a2fd8edd8c2b95092d2407ece4616ba7b8d7eab1405719bbbfa80c8f89" +$customClothingVersion = "1.11" +$customClothingArchiveName = "CustomClothingBase-v$customClothingVersion.zip" +$customClothingUri = "https://github.com/OptimShi/CustomClothingBase/releases/download/v$customClothingVersion/CustomClothingBase.zip" +$customClothingSha256 = "505dcb951bdba9ec7788b2f947f3b8d6a7638e06c43000bd38beb129689873a6" $cacheRoot = if ([string]::IsNullOrWhiteSpace($env:LOCALAPPDATA)) { Join-Path $tempRoot "ACE-SinglePlayer-BuildCache" } else { @@ -120,6 +126,38 @@ foreach ($modProject in @( } } +Write-Host "Packaging OptimShi's checksum-pinned official CustomClothingBase v$customClothingVersion release..." +New-Item -ItemType Directory -Force -Path $cacheRoot, $customClothingExtract, $customClothingPackage | Out-Null +$customClothingArchive = Join-Path $cacheRoot $customClothingArchiveName +Get-VerifiedDownload $customClothingUri $customClothingArchive $customClothingSha256 +Expand-Archive -LiteralPath $customClothingArchive -DestinationPath $customClothingExtract -Force +$customClothingUpstreamFiles = @( + "ACE.Shared.dll", + "CustomClothingBase.dll", + "JsonNet.ContractResolvers.dll", + "Newtonsoft.Json.dll", + "Settings.json" +) +foreach ($fileName in $customClothingUpstreamFiles) { + if (-not (Test-Path -LiteralPath (Join-Path $customClothingExtract $fileName))) { + throw "The official CustomClothingBase archive is missing $fileName." + } +} +$customClothingModDirectory = Join-Path $customClothingPackage "mod" +$customClothingJsonDirectory = Join-Path $customClothingModDirectory "json" +New-Item -ItemType Directory -Force -Path $customClothingModDirectory, $customClothingJsonDirectory | Out-Null +Copy-Item -LiteralPath (Join-Path $repoRoot "packaging\CustomClothingBase\ace-mod.json") -Destination $customClothingPackage +foreach ($fileName in $customClothingUpstreamFiles) { + Copy-Item -LiteralPath (Join-Path $customClothingExtract $fileName) -Destination $customClothingModDirectory +} +Copy-Item -LiteralPath (Join-Path $repoRoot "packaging\CustomClothingBase\Meta.json") -Destination $customClothingModDirectory +Copy-Item -LiteralPath (Join-Path $repoRoot "packaging\CustomClothingBase\README.md") -Destination $customClothingModDirectory +Copy-Item -LiteralPath (Join-Path $repoRoot "packaging\CustomClothingBase\json\README.txt") -Destination $customClothingJsonDirectory +$customClothingOutputArchive = Join-Path $OutputDirectory "Packages\optimshi.custom-clothing-base-1.11-upstream.zip" +Compress-Archive -Path (Join-Path $customClothingPackage "*") -DestinationPath $customClothingOutputArchive -CompressionLevel Optimal +$customClothingPackageSha256 = (Get-FileHash -LiteralPath $customClothingOutputArchive -Algorithm SHA256).Hash.ToLowerInvariant() +$customClothingPackageSha256 | Set-Content -LiteralPath ($customClothingOutputArchive + ".sha256") -Encoding ascii + if (-not $SkipBundledDependencies) { New-Item -ItemType Directory -Path $cacheRoot, $mariaDbExtract, $worldExtract -Force | Out-Null $mariaDbArchive = Join-Path $cacheRoot $mariaDbArchiveName @@ -179,6 +217,14 @@ if (-not $SkipBundledDependencies) { sha256 = $worldSha256 license = "AGPL-3.0" } + customClothingBase = [ordered]@{ + repository = "https://github.com/OptimShi/CustomClothingBase" + version = $customClothingVersion + source = $customClothingUri + upstreamSha256 = $customClothingSha256 + packagedSha256 = $customClothingPackageSha256 + license = "No LICENSE file in upstream repository; redistributed with author permission reported by the project maintainer" + } } $bundleManifest | ConvertTo-Json -Depth 5 | Set-Content -LiteralPath (Join-Path $OutputDirectory "BUNDLE-MANIFEST.json") -Encoding utf8 } From 740c9380c92b0ce2198a19acb91fa10b4363c5bf Mon Sep 17 00:00:00 2001 From: titaniumweiner Date: Thu, 16 Jul 2026 22:02:14 -0400 Subject: [PATCH 13/15] Add guarded AceForge weenie imports --- README.md | 9 +- .../CustomWeenieTests.cs | 139 +++++ Source/ACE.SinglePlayer.Tests/ModTests.cs | 28 + .../ACE.SinglePlayer.Tests/UiLayoutTests.cs | 37 ++ .../CustomWeenieImportService.cs | 141 +++++ .../CustomContent/CustomWeenieSqlInspector.cs | 575 ++++++++++++++++++ .../MariaDbWorldBackupService.cs | 154 +++++ .../Mods/ModCatalogService.cs | 9 +- .../ACE.SinglePlayer/UI/CustomWeeniesForm.cs | 337 ++++++++++ Source/ACE.SinglePlayer/UI/MainForm.cs | 9 +- docs/CUSTOM_WEENIES.md | 45 ++ docs/MOD_AUTHOR_GUIDE.md | 4 +- scripts/publish-singleplayer.ps1 | 1 + 13 files changed, 1482 insertions(+), 6 deletions(-) create mode 100644 Source/ACE.SinglePlayer.Tests/CustomWeenieTests.cs create mode 100644 Source/ACE.SinglePlayer/CustomContent/CustomWeenieImportService.cs create mode 100644 Source/ACE.SinglePlayer/CustomContent/CustomWeenieSqlInspector.cs create mode 100644 Source/ACE.SinglePlayer/CustomContent/MariaDbWorldBackupService.cs create mode 100644 Source/ACE.SinglePlayer/UI/CustomWeeniesForm.cs create mode 100644 docs/CUSTOM_WEENIES.md diff --git a/README.md b/README.md index b191cb1052..8ba72f7c79 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,7 @@ The launcher is designed for players who want a persistent personal world withou - Automatic database credentials protected for the current Windows user - Persistent characters and world state - Direct Vanilla client launch, with one-click Decal support when Decal and ThwargLauncher are already installed +- Curated server-mod library plus guarded AceForge Custom Weenie SQL imports - Self-contained Windows release; players do not need to install .NET - Pinned portable MariaDB and complete ACE World database included in the release - Only the original game client and its four proprietary DAT files remain user-supplied @@ -28,10 +29,16 @@ The portable release currently pins ACEmulator server build `1.77.4782` from ups ## Mods -Open **Mods** in the launcher to browse the curated mod library. Every entry includes a plain-language description, compatibility result, requirements, source-code links, and a saved-game safety warning. `CriticalOverride` is curated for one-click installation. `HelloCommand` and `SocietyTailoring` are installable **Preview** ports. OptimShi's `CustomClothingBase` v1.11 is also an installable Preview using the author's checksum-pinned, unmodified official DLLs after a successful current-ACE loader test. Preview mods are clearly marked as not thoroughly tested in game. Other samples remain listed but unavailable until they are ported and tested. **Import a Mod ZIP...** can atomically install separately rebuilt, checksummed packages in the documented ACE Single Player ZIP format. +Open **Server Mods** in the launcher to browse the curated mod library. Installed and ready-to-install entries are listed before unavailable ports. Every entry includes a plain-language description, compatibility result, requirements, source-code links, and a saved-game safety warning. `CriticalOverride` is curated for one-click installation. `HelloCommand` and `SocietyTailoring` are installable **Preview** ports. OptimShi's `CustomClothingBase` v1.11 is also an installable Preview using the author's checksum-pinned, unmodified official DLLs after a successful current-ACE loader test. Preview mods are clearly marked as not thoroughly tested in game. Other samples remain listed but unavailable until they are ported and tested. **Import a Mod ZIP...** can atomically install separately rebuilt, checksummed packages in the documented ACE Single Player ZIP format. Turning a mod off stops its code after a server restart, but it does not undo experience, items, balances, character properties, or world content already saved by that mod. The launcher blocks removal of mods whose saved data may still depend on them and moves safely removable files to a recovery folder rather than deleting them. See [Mod library and saved-game safety](docs/MOD_LIBRARY.md) for the full policy, or [How to make and import a mod](docs/MOD_AUTHOR_GUIDE.md) to build a compatible package. +## Custom Weenies and AceForge + +Open **Custom Weenies** to import per-weenie `.sql` files created by [AceForge](https://github.com/shemtar-90/AceForge/releases/tag/v0.3.36). Choose an AceForge output folder or individual SQL files; the launcher previews each WCID, validates a strict list of ACE weenie-property operations, skips unsupported content, checks whether WCIDs already exist, and creates a complete `ace_world` backup before applying the import in one database transaction. Automatic imports require the launcher's Private Database mode. + +Custom weenies become part of the saved world and do not have a one-click uninstaller. Quest, recipe, event, treasure, landscape, and client-DAT changes are not imported by this screen. See [Importing AceForge custom weenies](docs/CUSTOM_WEENIES.md) for the exact workflow and safety limits. + See the [complete installation guide](docs/SINGLE_PLAYER_INSTALL.md) for prerequisites, expected file names, first-run instructions, troubleshooting, backups, and upgrade guidance. > [!IMPORTANT] diff --git a/Source/ACE.SinglePlayer.Tests/CustomWeenieTests.cs b/Source/ACE.SinglePlayer.Tests/CustomWeenieTests.cs new file mode 100644 index 0000000000..fa6909dc9b --- /dev/null +++ b/Source/ACE.SinglePlayer.Tests/CustomWeenieTests.cs @@ -0,0 +1,139 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +using ACE.SinglePlayer.CustomContent; + +namespace ACE.SinglePlayer.Tests; + +[TestClass] +public sealed class CustomWeenieTests +{ + private const string ValidAceForgeSql = """ + /* ===== FILE: 850001 Test Keeper.sql ===== */ + DELETE FROM `weenie` WHERE `class_Id` = 850001; + + INSERT INTO `weenie` (`class_Id`, `class_Name`, `type`, `last_Modified`) + VALUES (850001, 'Test Keeper; Sir ''Semicolon''', 10, '2026-07-16 00:00:00') /* Creature */; + + INSERT INTO `weenie_properties_int` (`object_Id`, `type`, `value`) + VALUES (850001, 1, 16) + , (850001, 5, 10); + """; + + [TestMethod] + public void AceForgeWeenieSqlIsPreviewedWithWcidNameAndType() + { + var result = new CustomWeenieSqlInspector().Inspect("850001 Test Keeper.sql", ValidAceForgeSql); + + Assert.AreEqual(1, result.Definitions.Count); + Assert.AreEqual(0, result.Issues.Count); + Assert.AreEqual((uint)850001, result.Definitions[0].ClassId); + Assert.AreEqual("Test Keeper; Sir 'Semicolon'", result.Definitions[0].ClassName); + Assert.AreEqual("Creature", result.Definitions[0].TypeName); + Assert.AreEqual(64, result.Definitions[0].Sha256.Length); + } + + [TestMethod] + public void AceForgeEmoteParentPatternIsAllowed() + { + var sql = ValidAceForgeSql + """ + + INSERT INTO `weenie_properties_emote` (`object_Id`, `category`, `probability`) + VALUES (850001, 10, 1); + SET @parent_id = LAST_INSERT_ID(); + INSERT INTO `weenie_properties_emote_action` (`emote_Id`, `order`, `type`) + VALUES (@parent_id, 0, 10); + """; + + var result = new CustomWeenieSqlInspector().Inspect("emote.sql", sql); + + Assert.AreEqual(1, result.Definitions.Count); + Assert.AreEqual(0, result.Issues.Count); + } + + [TestMethod] + public void ImportRejectsStatementsOutsideTheWeenieAllowlist() + { + var sql = ValidAceForgeSql + "\r\nDROP TABLE `weenie`;"; + + var result = new CustomWeenieSqlInspector().Inspect("unsafe.sql", sql); + + Assert.AreEqual(0, result.Definitions.Count); + Assert.AreEqual(1, result.Issues.Count); + StringAssert.Contains(result.Issues[0].Message, "Only DELETE"); + } + + [TestMethod] + public void ImportRejectsPropertyRowsForAnotherWcid() + { + var sql = ValidAceForgeSql.Replace("(850001, 5, 10)", "(850002, 5, 10)", StringComparison.Ordinal); + + var result = new CustomWeenieSqlInspector().Inspect("wrong-owner.sql", sql); + + Assert.AreEqual(0, result.Definitions.Count); + StringAssert.Contains(result.Issues[0].Message, "different WCID"); + } + + [TestMethod] + public void ImportRejectsExecutableMysqlComments() + { + var sql = ValidAceForgeSql + "\r\n/*!50000 DROP TABLE weenie */;"; + + var result = new CustomWeenieSqlInspector().Inspect("conditional.sql", sql); + + Assert.AreEqual(0, result.Definitions.Count); + StringAssert.Contains(result.Issues[0].Message, "Executable SQL comments"); + } + + [TestMethod] + public void QuestOnlyAceForgeExportIsReportedAsUnsupported() + { + const string sql = "DELETE FROM quest WHERE name = 'Test'; INSERT INTO quest (id, name) VALUES (1, 'Test');"; + + var result = new CustomWeenieSqlInspector().Inspect("quest.sql", sql); + + Assert.AreEqual(0, result.Definitions.Count); + StringAssert.Contains(result.Issues[0].Message, "quest, event, recipe"); + } + + [TestMethod] + public void DuplicateWcidsInASelectionAreSkipped() + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + var first = Path.Combine(root, "first.sql"); + var second = Path.Combine(root, "second.sql"); + File.WriteAllText(first, ValidAceForgeSql); + File.WriteAllText(second, ValidAceForgeSql); + + var result = new CustomWeenieSqlInspector().InspectFiles(new[] { first, second }); + + Assert.AreEqual(0, result.Definitions.Count); + Assert.AreEqual(2, result.Issues.Count); + Assert.IsTrue(result.Issues.All(issue => issue.Message.Contains("also defined", StringComparison.Ordinal))); + } + finally + { + Directory.Delete(root, true); + } + } + + [TestMethod] + public void BackupProgramIsFoundBesideMariaDbServer() + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + var server = Path.Combine(root, "mariadbd.exe"); + var dump = Path.Combine(root, "mariadb-dump.exe"); + File.WriteAllText(server, string.Empty); + File.WriteAllText(dump, string.Empty); + + Assert.AreEqual(dump, MariaDbWorldBackupService.FindDumpExecutable(server)); + } + finally + { + Directory.Delete(root, true); + } + } +} diff --git a/Source/ACE.SinglePlayer.Tests/ModTests.cs b/Source/ACE.SinglePlayer.Tests/ModTests.cs index 327fa02a0a..777e67aca6 100644 --- a/Source/ACE.SinglePlayer.Tests/ModTests.cs +++ b/Source/ACE.SinglePlayer.Tests/ModTests.cs @@ -136,6 +136,34 @@ public void PreviewPackageIsInstallableButKeepsLimitedTestingWarning() } } + [TestMethod] + public void CatalogListsInstalledAndReadyToInstallModsBeforeUnavailableMods() + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + File.WriteAllText(Path.Combine(root, "ready.zip"), "package placeholder"); + var unavailable = new ModCatalogEntry( + "unavailable", "A Needs Port", "Author", "Description", "Details", "", + ModCatalogAvailability.NeedsPort, ModDataImpact.None, ModRemovalPolicy.Safe, "Safe"); + var ready = new ModCatalogEntry( + "ready", "Z Ready", "Author", "Description", "Details", "", + ModCatalogAvailability.Ready, ModDataImpact.None, ModRemovalPolicy.Safe, "Safe", + PackageRelativePath: "ready.zip"); + var installed = new ModRecord { Name = "Installed", Type = ModType.AceServer, Enabled = true }; + + var result = new ModCatalogService(new[] { unavailable, ready }, root).Merge(new[] { installed }); + + Assert.AreEqual("Installed", result[0].Name); + Assert.AreEqual("Z Ready", result[1].Name); + Assert.AreEqual("A Needs Port", result[2].Name); + } + finally + { + Directory.Delete(root, true); + } + } + [TestMethod] public async Task ValidatedPackageInstallsAtomically() { diff --git a/Source/ACE.SinglePlayer.Tests/UiLayoutTests.cs b/Source/ACE.SinglePlayer.Tests/UiLayoutTests.cs index b39efb0a73..cf48e39ecc 100644 --- a/Source/ACE.SinglePlayer.Tests/UiLayoutTests.cs +++ b/Source/ACE.SinglePlayer.Tests/UiLayoutTests.cs @@ -3,6 +3,8 @@ using ACE.SinglePlayer.UI; using ACE.SinglePlayer.Models; using ACE.SinglePlayer.Mods; +using ACE.SinglePlayer.Database; +using ACE.SinglePlayer.Infrastructure; namespace ACE.SinglePlayer.Tests; @@ -45,6 +47,41 @@ public void ModLibraryCanBeConstructedBeforeWindowsCompletesLayout() Assert.IsNull(failure, failure?.ToString()); } + [TestMethod] + public void CustomWeeniesScreenCanBeConstructedBeforeWindowsCompletesLayout() + { + Exception? failure = null; + var thread = new Thread(() => + { + var root = TestPaths.CreateTemporaryDirectory(); + try + { + using var log = new LauncherLog(Path.Combine(root, "Logs")); + var connectionFactory = new DatabaseConnectionFactory(new SecretProtector()); + var runtimeFactory = new DatabaseRuntimeFactory(connectionFactory, log); + var settings = new LauncherSettings + { + RuntimeDirectory = Path.Combine(root, "Runtime"), + PrivateDatabaseDirectoryPath = Path.Combine(root, "Database") + }; + using var form = new CustomWeeniesForm(settings, () => false, runtimeFactory, connectionFactory, log); + } + catch (Exception ex) + { + failure = ex; + } + finally + { + Directory.Delete(root, true); + } + }); + thread.SetApartmentState(ApartmentState.STA); + thread.Start(); + + Assert.IsTrue(thread.Join(TimeSpan.FromSeconds(10)), "The Custom Weenies window constructor did not finish."); + Assert.IsNull(failure, failure?.ToString()); + } + [TestMethod] public void ModLibrarySplitterUsesPreferredLayoutAfterFormIsSized() { diff --git a/Source/ACE.SinglePlayer/CustomContent/CustomWeenieImportService.cs b/Source/ACE.SinglePlayer/CustomContent/CustomWeenieImportService.cs new file mode 100644 index 0000000000..b944902c4b --- /dev/null +++ b/Source/ACE.SinglePlayer/CustomContent/CustomWeenieImportService.cs @@ -0,0 +1,141 @@ +using System.Text.Json; + +using MySqlConnector; + +using ACE.SinglePlayer.Database; +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.CustomContent; + +internal sealed record ExistingWeenie(uint ClassId, string ClassName); + +internal sealed record CustomWeenieImportResult(bool Imported, string BackupPath) +{ + public static CustomWeenieImportResult Canceled { get; } = new(false, string.Empty); +} + +internal sealed class CustomWeenieImportService +{ + private readonly DatabaseRuntimeFactory runtimeFactory; + private readonly DatabaseConnectionFactory connectionFactory; + private readonly MariaDbWorldBackupService backupService; + private readonly LauncherLog log; + + public CustomWeenieImportService(DatabaseRuntimeFactory runtimeFactory, + DatabaseConnectionFactory connectionFactory, LauncherLog log) + { + this.runtimeFactory = runtimeFactory; + this.connectionFactory = connectionFactory; + this.log = log; + backupService = new MariaDbWorldBackupService(connectionFactory, log); + } + + public async Task ImportAsync( + LauncherSettings settings, + IReadOnlyList definitions, + Func, bool> confirmReplacement, + IProgress? progress, + CancellationToken cancellationToken) + { + if (settings.DatabaseMode != DatabaseMode.Private) + throw new InvalidOperationException( + "Automatic Custom Weenie imports currently require the launcher's Private Database mode so a verified backup can be created first."); + if (definitions.Count == 0) + throw new InvalidOperationException("No valid custom weenies were selected."); + var duplicate = definitions.GroupBy(item => item.ClassId).FirstOrDefault(group => group.Count() > 1); + if (duplicate is not null) + throw new InvalidOperationException($"WCID {duplicate.Key} appears more than once in this import."); + + progress?.Report("Starting the private database..."); + await using var runtime = runtimeFactory.Create(settings); + await runtime.StartAsync(settings, cancellationToken); + + await using var connection = connectionFactory.Create(settings, settings.WorldDatabaseName); + await connection.OpenAsync(cancellationToken); + var existing = await FindExistingAsync(connection, definitions, cancellationToken); + if (existing.Count > 0 && !confirmReplacement(existing)) + return CustomWeenieImportResult.Canceled; + + progress?.Report("Creating a complete ace_world safety backup..."); + var backupPath = await backupService.CreateAsync(settings, cancellationToken); + + progress?.Report($"Importing {definitions.Count} custom weenie{(definitions.Count == 1 ? string.Empty : "s")}..."); + await using var transaction = await connection.BeginTransactionAsync(cancellationToken); + try + { + foreach (var definition in definitions) + { + cancellationToken.ThrowIfCancellationRequested(); + await using var command = new MySqlCommand(definition.Sql, connection, transaction) + { + CommandTimeout = 120 + }; + await command.ExecuteNonQueryAsync(cancellationToken); + } + await transaction.CommitAsync(cancellationToken); + } + catch + { + try + { + await transaction.RollbackAsync(CancellationToken.None); + } + catch (MySqlException rollbackError) + { + log.Write("Custom weenie import rollback reported an error: " + rollbackError.Message); + } + throw; + } + + log.Write($"Imported {definitions.Count} custom weenie(s): {string.Join(", ", definitions.Select(item => item.ClassId))}."); + await WriteManifestBestEffortAsync(backupPath, definitions); + progress?.Report("Import complete. The new content will be available the next time the server starts."); + return new CustomWeenieImportResult(true, backupPath); + } + + private static async Task> FindExistingAsync(MySqlConnection connection, + IReadOnlyList definitions, CancellationToken cancellationToken) + { + var parameterNames = definitions.Select((_, index) => "@id" + index).ToArray(); + await using var command = new MySqlCommand( + $"SELECT `class_Id`, `class_Name` FROM `weenie` WHERE `class_Id` IN ({string.Join(",", parameterNames)}) ORDER BY `class_Id`", + connection); + for (var index = 0; index < definitions.Count; index++) + command.Parameters.AddWithValue(parameterNames[index], definitions[index].ClassId); + + var result = new List(); + await using var reader = await command.ExecuteReaderAsync(cancellationToken); + while (await reader.ReadAsync(cancellationToken)) + result.Add(new ExistingWeenie(reader.GetUInt32(0), reader.GetString(1))); + return result; + } + + private async Task WriteManifestBestEffortAsync(string backupPath, + IReadOnlyList definitions) + { + try + { + var manifestPath = Path.ChangeExtension(backupPath, ".import.json"); + var manifest = new + { + importedAt = DateTimeOffset.Now, + safetyBackup = backupPath, + weenies = definitions.Select(item => new + { + wcid = item.ClassId, + name = item.ClassName, + type = item.WeenieType, + sourceFile = item.FilePath, + sha256 = item.Sha256 + }).ToArray() + }; + await File.WriteAllTextAsync(manifestPath, + JsonSerializer.Serialize(manifest, new JsonSerializerOptions { WriteIndented = true })); + } + catch (Exception ex) when (ex is IOException or UnauthorizedAccessException) + { + log.Write("The custom weenie import succeeded, but its history manifest could not be written: " + ex.Message); + } + } +} diff --git a/Source/ACE.SinglePlayer/CustomContent/CustomWeenieSqlInspector.cs b/Source/ACE.SinglePlayer/CustomContent/CustomWeenieSqlInspector.cs new file mode 100644 index 0000000000..7a9ee613ec --- /dev/null +++ b/Source/ACE.SinglePlayer/CustomContent/CustomWeenieSqlInspector.cs @@ -0,0 +1,575 @@ +using System.Globalization; +using System.Security.Cryptography; +using System.Text; +using System.Text.RegularExpressions; + +namespace ACE.SinglePlayer.CustomContent; + +internal sealed record CustomWeenieDefinition( + string FilePath, + uint ClassId, + string ClassName, + int WeenieType, + string Sql, + string Sha256) +{ + public string FileName => Path.GetFileName(FilePath); + + public string TypeName => WeenieType switch + { + 2 => "Container", + 6 => "Generic", + 7 => "Food", + 9 => "Gem", + 10 => "Creature", + 12 => "Vendor", + 16 => "Melee weapon", + 17 => "Missile weapon", + 18 => "Caster", + 19 => "Clothing", + 20 => "Armor", + 21 => "Scroll", + 22 or 51 => "Stackable", + 35 => "Generator", + _ => $"Type {WeenieType}" + }; +} + +internal sealed record CustomWeenieIssue(string FilePath, string Message); + +internal sealed record CustomWeenieInspectionResult( + IReadOnlyList Definitions, + IReadOnlyList Issues); + +internal sealed class CustomWeenieSqlInspector +{ + internal const int MaximumFiles = 200; + internal const long MaximumFileBytes = 5 * 1024 * 1024; + internal const long MaximumTotalBytes = 25 * 1024 * 1024; + + private static readonly Regex InsertPrefix = new( + @"\AINSERT\s+INTO\s+`?(?[a-z0-9_]+)`?\s*\((?[^)]*)\)\s*VALUES\s*(?[\s\S]+)\z", + RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); + private static readonly Regex DeleteWeenie = new( + @"\ADELETE\s+FROM\s+`?weenie`?\s+WHERE\s+`?class_Id`?\s*=\s*(?\d+)\s*\z", + RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); + private static readonly Regex SetParentId = new( + @"\ASET\s+@parent_id\s*=\s*LAST_INSERT_ID\s*\(\s*\)\s*\z", + RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); + private static readonly Regex UnsupportedAceForgeContent = new( + @"\b(?:DELETE\s+FROM|INSERT\s+INTO)\s+`?(?:quest|event|recipe|cook_book|treasure_death)\b", + RegexOptions.IgnoreCase | RegexOptions.CultureInvariant); + private static readonly Regex ExecutableComment = new(@"/\*(?:!\d*|\+)", + RegexOptions.CultureInvariant); + + private static readonly HashSet AllowedPropertyTables = new(StringComparer.OrdinalIgnoreCase) + { + "weenie_properties_anim_part", + "weenie_properties_attribute", + "weenie_properties_attribute_2nd", + "weenie_properties_body_part", + "weenie_properties_book", + "weenie_properties_book_page_data", + "weenie_properties_bool", + "weenie_properties_create_list", + "weenie_properties_d_i_d", + "weenie_properties_emote", + "weenie_properties_emote_action", + "weenie_properties_event_filter", + "weenie_properties_float", + "weenie_properties_generator", + "weenie_properties_i_i_d", + "weenie_properties_int", + "weenie_properties_int64", + "weenie_properties_palette", + "weenie_properties_position", + "weenie_properties_skill", + "weenie_properties_spell_book", + "weenie_properties_string", + "weenie_properties_texture_map" + }; + + public CustomWeenieInspectionResult InspectFiles(IEnumerable filePaths) + { + var paths = filePaths + .Where(path => !string.IsNullOrWhiteSpace(path)) + .Select(Path.GetFullPath) + .Distinct(StringComparer.OrdinalIgnoreCase) + .OrderBy(path => path, StringComparer.OrdinalIgnoreCase) + .ToArray(); + if (paths.Length > MaximumFiles) + { + return new CustomWeenieInspectionResult(Array.Empty(), + new[] { new CustomWeenieIssue(string.Empty, $"Select no more than {MaximumFiles} SQL files at once.") }); + } + + var definitions = new List(); + var issues = new List(); + long totalBytes = 0; + foreach (var path in paths) + { + try + { + var file = new FileInfo(path); + if (!file.Exists) + throw new FileNotFoundException("The SQL file no longer exists.", path); + if (!string.Equals(file.Extension, ".sql", StringComparison.OrdinalIgnoreCase)) + throw new InvalidDataException("Only .sql files can be imported here."); + if (file.Length > MaximumFileBytes) + throw new InvalidDataException($"The file is larger than {MaximumFileBytes / 1024 / 1024} MB."); + totalBytes += file.Length; + if (totalBytes > MaximumTotalBytes) + throw new InvalidDataException($"The selected files exceed the {MaximumTotalBytes / 1024 / 1024} MB import limit."); + + var sql = File.ReadAllText(path); + var inspected = Inspect(path, sql); + if (inspected.Definitions.Count == 1) + definitions.Add(inspected.Definitions[0]); + issues.AddRange(inspected.Issues); + } + catch (Exception ex) when (ex is IOException or UnauthorizedAccessException or InvalidDataException) + { + issues.Add(new CustomWeenieIssue(path, ex.Message)); + } + } + + var duplicateIds = definitions + .GroupBy(item => item.ClassId) + .Where(group => group.Count() > 1) + .ToArray(); + foreach (var duplicate in duplicateIds) + { + foreach (var definition in duplicate) + issues.Add(new CustomWeenieIssue(definition.FilePath, + $"WCID {duplicate.Key} is also defined by another selected file; both copies were skipped.")); + } + if (duplicateIds.Length > 0) + { + var duplicateSet = duplicateIds.Select(group => group.Key).ToHashSet(); + definitions.RemoveAll(item => duplicateSet.Contains(item.ClassId)); + } + + return new CustomWeenieInspectionResult(definitions, issues); + } + + internal CustomWeenieInspectionResult Inspect(string filePath, string sql) + { + try + { + if (string.IsNullOrWhiteSpace(sql)) + throw new InvalidDataException("The SQL file is empty."); + if (ExecutableComment.IsMatch(sql)) + throw new InvalidDataException("Executable SQL comments are not allowed."); + + var cleaned = StripComments(sql); + var statements = SplitStatements(cleaned); + if (statements.Count == 0) + throw new InvalidDataException("The SQL file does not contain any statements."); + + var inserts = new List(); + foreach (var statement in statements.Where(statement => + statement.StartsWith("INSERT", StringComparison.OrdinalIgnoreCase))) + { + if (!TryParseInsert(statement, out var parsed, out var error)) + throw new InvalidDataException(error); + inserts.Add(parsed!); + } + + var rootInserts = inserts.Where(insert => + string.Equals(insert.Table, "weenie", StringComparison.OrdinalIgnoreCase)).ToArray(); + if (rootInserts.Length != 1) + { + if (rootInserts.Length == 0 && UnsupportedAceForgeContent.IsMatch(cleaned)) + throw new InvalidDataException("This is an AceForge quest, event, recipe, or treasure script. The Custom Weenies section currently imports weenie SQL only."); + throw new InvalidDataException("Each file must define exactly one weenie record."); + } + + var root = rootInserts[0]; + if (root.Rows.Count != 1) + throw new InvalidDataException("The weenie INSERT must contain exactly one row."); + var classId = ReadUIntColumn(root, root.Rows[0], "class_Id"); + if (classId == 0) + throw new InvalidDataException("WCID 0 is not valid."); + var className = ReadStringColumn(root, root.Rows[0], "class_Name"); + var weenieType = ReadIntColumn(root, root.Rows[0], "type"); + + var deleteCount = 0; + var rootInsertIndex = statements.FindIndex(statement => string.Equals(statement, root.Statement, StringComparison.Ordinal)); + var lastParentSetIndex = -1; + for (var index = 0; index < statements.Count; index++) + { + var statement = statements[index]; + var delete = DeleteWeenie.Match(statement); + if (delete.Success) + { + deleteCount++; + if (!uint.TryParse(delete.Groups["id"].Value, NumberStyles.None, CultureInfo.InvariantCulture, out var deletedId) || + deletedId != classId) + throw new InvalidDataException($"The DELETE statement must target WCID {classId}."); + if (index > rootInsertIndex) + throw new InvalidDataException("The weenie DELETE must appear before its INSERT."); + continue; + } + + if (SetParentId.IsMatch(statement)) + { + lastParentSetIndex = index; + continue; + } + + if (!statement.StartsWith("INSERT", StringComparison.OrdinalIgnoreCase)) + throw new InvalidDataException("Only DELETE FROM weenie, INSERT INTO weenie property tables, and AceForge's SET @parent_id statement are allowed."); + if (!TryParseInsert(statement, out var insert, out var parseError)) + throw new InvalidDataException(parseError); + ValidateInsert(insert!, classId, index, lastParentSetIndex); + } + + if (deleteCount != 1) + throw new InvalidDataException("Each file must contain exactly one DELETE FROM weenie statement."); + + var hash = Convert.ToHexString(SHA256.HashData(Encoding.UTF8.GetBytes(sql))).ToLowerInvariant(); + var definition = new CustomWeenieDefinition(filePath, classId, className, weenieType, sql, hash); + return new CustomWeenieInspectionResult(new[] { definition }, Array.Empty()); + } + catch (InvalidDataException ex) + { + return new CustomWeenieInspectionResult(Array.Empty(), + new[] { new CustomWeenieIssue(filePath, ex.Message) }); + } + } + + private static void ValidateInsert(ParsedInsert insert, uint classId, int statementIndex, int lastParentSetIndex) + { + if (string.Equals(insert.Table, "weenie", StringComparison.OrdinalIgnoreCase)) + { + if (insert.Rows.Count != 1 || ReadUIntColumn(insert, insert.Rows[0], "class_Id") != classId) + throw new InvalidDataException("The weenie INSERT contains an unexpected WCID."); + return; + } + + if (!AllowedPropertyTables.Contains(insert.Table)) + throw new InvalidDataException($"Table '{insert.Table}' is not allowed in a Custom Weenie import."); + if (insert.Rows.Count == 0) + throw new InvalidDataException($"The INSERT into '{insert.Table}' contains no rows."); + + if (string.Equals(insert.Table, "weenie_properties_emote_action", StringComparison.OrdinalIgnoreCase)) + { + var emoteIndex = FindColumn(insert.Columns, "emote_Id"); + if (emoteIndex < 0 || insert.Rows.Any(row => row.Count <= emoteIndex || + !string.Equals(row[emoteIndex].Trim(), "@parent_id", StringComparison.OrdinalIgnoreCase))) + throw new InvalidDataException("Emote actions must be linked through AceForge's @parent_id value."); + if (lastParentSetIndex < 0 || lastParentSetIndex > statementIndex) + throw new InvalidDataException("An emote action is missing its preceding SET @parent_id statement."); + return; + } + + var objectIndex = FindColumn(insert.Columns, "object_Id"); + if (objectIndex < 0) + throw new InvalidDataException($"The INSERT into '{insert.Table}' does not identify its owning weenie."); + foreach (var row in insert.Rows) + { + if (row.Count <= objectIndex || + !uint.TryParse(row[objectIndex].Trim(), NumberStyles.None, CultureInfo.InvariantCulture, out var objectId) || + objectId != classId) + throw new InvalidDataException($"The INSERT into '{insert.Table}' attempts to change a different WCID."); + } + } + + private static uint ReadUIntColumn(ParsedInsert insert, IReadOnlyList row, string column) + { + var index = FindColumn(insert.Columns, column); + if (index < 0 || row.Count <= index || + !uint.TryParse(row[index].Trim(), NumberStyles.None, CultureInfo.InvariantCulture, out var value)) + throw new InvalidDataException($"The weenie INSERT has an invalid {column} value."); + return value; + } + + private static int ReadIntColumn(ParsedInsert insert, IReadOnlyList row, string column) + { + var index = FindColumn(insert.Columns, column); + if (index < 0 || row.Count <= index || + !int.TryParse(row[index].Trim(), NumberStyles.Integer, CultureInfo.InvariantCulture, out var value)) + throw new InvalidDataException($"The weenie INSERT has an invalid {column} value."); + return value; + } + + private static string ReadStringColumn(ParsedInsert insert, IReadOnlyList row, string column) + { + var index = FindColumn(insert.Columns, column); + if (index < 0 || row.Count <= index || !TryUnquote(row[index].Trim(), out var value) || string.IsNullOrWhiteSpace(value)) + throw new InvalidDataException($"The weenie INSERT has an invalid {column} value."); + return value; + } + + private static int FindColumn(IReadOnlyList columns, string name) + { + for (var index = 0; index < columns.Count; index++) + { + if (string.Equals(NormalizeIdentifier(columns[index]), name, StringComparison.OrdinalIgnoreCase)) + return index; + } + return -1; + } + + private static string NormalizeIdentifier(string value) => value.Trim().Trim('`'); + + private static bool TryUnquote(string value, out string result) + { + result = string.Empty; + if (value.Length < 2 || value[0] is not ('\'' or '"') || value[^1] != value[0]) + return false; + var quote = value[0]; + var content = value[1..^1]; + content = content.Replace(new string(quote, 2), quote.ToString(), StringComparison.Ordinal) + .Replace("\\'", "'", StringComparison.Ordinal) + .Replace("\\\"", "\"", StringComparison.Ordinal) + .Replace("\\\\", "\\", StringComparison.Ordinal); + result = content; + return true; + } + + private static bool TryParseInsert(string statement, out ParsedInsert? insert, out string error) + { + insert = null; + error = "The INSERT statement is not in the supported AceForge format."; + var match = InsertPrefix.Match(statement); + if (!match.Success) + return false; + + try + { + var columns = SplitCommaSeparated(match.Groups["columns"].Value); + var rows = ParseValueRows(match.Groups["values"].Value); + if (columns.Count == 0 || rows.Any(row => row.Count != columns.Count)) + { + error = "An INSERT row does not match its declared columns."; + return false; + } + insert = new ParsedInsert(statement, match.Groups["table"].Value, columns, rows); + return true; + } + catch (InvalidDataException ex) + { + error = ex.Message; + return false; + } + } + + private static IReadOnlyList> ParseValueRows(string valueText) + { + var rows = new List>(); + var index = 0; + while (index < valueText.Length) + { + SkipWhitespace(valueText, ref index); + if (index >= valueText.Length || valueText[index] != '(') + throw new InvalidDataException("INSERT VALUES must be a comma-separated list of rows."); + var start = ++index; + var depth = 1; + var quote = '\0'; + while (index < valueText.Length && depth > 0) + { + var character = valueText[index]; + if (quote != '\0') + { + if (character == '\\' && index + 1 < valueText.Length) + index += 2; + else if (character == quote) + { + if (index + 1 < valueText.Length && valueText[index + 1] == quote && quote != '`') + index += 2; + else + { + quote = '\0'; + index++; + } + } + else + index++; + continue; + } + + if (character is '\'' or '"' or '`') + { + quote = character; + index++; + } + else if (character == '(') + { + depth++; + index++; + } + else if (character == ')') + { + depth--; + if (depth == 0) + break; + index++; + } + else + index++; + } + if (depth != 0) + throw new InvalidDataException("An INSERT row has an unmatched parenthesis or quote."); + rows.Add(SplitCommaSeparated(valueText[start..index])); + index++; + SkipWhitespace(valueText, ref index); + if (index >= valueText.Length) + break; + if (valueText[index] != ',') + throw new InvalidDataException("Unsupported text appears after an INSERT row."); + index++; + } + return rows; + } + + private static IReadOnlyList SplitCommaSeparated(string value) + { + var result = new List(); + var start = 0; + var depth = 0; + var quote = '\0'; + for (var index = 0; index < value.Length; index++) + { + var character = value[index]; + if (quote != '\0') + { + if (character == '\\' && index + 1 < value.Length) + index++; + else if (character == quote) + { + if (index + 1 < value.Length && value[index + 1] == quote && quote != '`') + index++; + else + quote = '\0'; + } + continue; + } + if (character is '\'' or '"' or '`') + quote = character; + else if (character == '(') + depth++; + else if (character == ')') + depth--; + else if (character == ',' && depth == 0) + { + result.Add(value[start..index].Trim()); + start = index + 1; + } + } + if (quote != '\0' || depth != 0) + throw new InvalidDataException("A SQL value has an unmatched quote or parenthesis."); + result.Add(value[start..].Trim()); + return result; + } + + private static List SplitStatements(string sql) + { + var statements = new List(); + var start = 0; + var quote = '\0'; + for (var index = 0; index < sql.Length; index++) + { + var character = sql[index]; + if (quote != '\0') + { + if (character == '\\' && index + 1 < sql.Length) + index++; + else if (character == quote) + { + if (index + 1 < sql.Length && sql[index + 1] == quote && quote != '`') + index++; + else + quote = '\0'; + } + continue; + } + if (character is '\'' or '"' or '`') + quote = character; + else if (character == ';') + { + var statement = sql[start..index].Trim(); + if (statement.Length > 0) + statements.Add(statement); + start = index + 1; + } + } + if (quote != '\0') + throw new InvalidDataException("The SQL contains an unmatched quote."); + var tail = sql[start..].Trim(); + if (tail.Length > 0) + statements.Add(tail); + return statements; + } + + private static string StripComments(string sql) + { + var output = new StringBuilder(sql.Length); + var quote = '\0'; + for (var index = 0; index < sql.Length; index++) + { + var character = sql[index]; + if (quote != '\0') + { + output.Append(character); + if (character == '\\' && index + 1 < sql.Length) + output.Append(sql[++index]); + else if (character == quote) + { + if (index + 1 < sql.Length && sql[index + 1] == quote && quote != '`') + output.Append(sql[++index]); + else + quote = '\0'; + } + continue; + } + + if (character is '\'' or '"' or '`') + { + quote = character; + output.Append(character); + continue; + } + if (character == '/' && index + 1 < sql.Length && sql[index + 1] == '*') + { + index += 2; + while (index + 1 < sql.Length && !(sql[index] == '*' && sql[index + 1] == '/')) + { + if (sql[index] is '\r' or '\n') + output.Append(sql[index]); + index++; + } + if (index + 1 >= sql.Length) + throw new InvalidDataException("The SQL contains an unterminated block comment."); + index++; + output.Append(' '); + continue; + } + if (character == '#' || (character == '-' && index + 1 < sql.Length && sql[index + 1] == '-' && + (index + 2 >= sql.Length || char.IsWhiteSpace(sql[index + 2])))) + { + while (index < sql.Length && sql[index] is not ('\r' or '\n')) + index++; + if (index < sql.Length) + output.Append(sql[index]); + continue; + } + output.Append(character); + } + if (quote != '\0') + throw new InvalidDataException("The SQL contains an unmatched quote."); + return output.ToString(); + } + + private static void SkipWhitespace(string value, ref int index) + { + while (index < value.Length && char.IsWhiteSpace(value[index])) + index++; + } + + private sealed record ParsedInsert( + string Statement, + string Table, + IReadOnlyList Columns, + IReadOnlyList> Rows); +} diff --git a/Source/ACE.SinglePlayer/CustomContent/MariaDbWorldBackupService.cs b/Source/ACE.SinglePlayer/CustomContent/MariaDbWorldBackupService.cs new file mode 100644 index 0000000000..c7e213ae8a --- /dev/null +++ b/Source/ACE.SinglePlayer/CustomContent/MariaDbWorldBackupService.cs @@ -0,0 +1,154 @@ +using System.Diagnostics; +using System.Text; + +using MySqlConnector; + +using ACE.SinglePlayer.Database; +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.CustomContent; + +internal sealed class MariaDbWorldBackupService +{ + private readonly DatabaseConnectionFactory connectionFactory; + private readonly LauncherLog log; + + public MariaDbWorldBackupService(DatabaseConnectionFactory connectionFactory, LauncherLog log) + { + this.connectionFactory = connectionFactory; + this.log = log; + } + + public async Task CreateAsync(LauncherSettings settings, CancellationToken cancellationToken) + { + var dumpExecutable = FindDumpExecutable(settings.ManagedDatabaseExePath) + ?? throw new FileNotFoundException( + "The bundled MariaDB backup program was not found. Extract the complete ACE Single Player release again before importing custom content."); + var privateRoot = Path.GetDirectoryName(settings.PrivateDatabaseDirectory) + ?? throw new InvalidOperationException("The private database folder has no parent directory."); + var backupDirectory = GetBackupDirectory(settings); + Directory.CreateDirectory(backupDirectory); + var stamp = DateTimeOffset.Now.ToString("yyyyMMdd-HHmmss"); + var backupPath = Path.Combine(backupDirectory, + $"ace_world-before-custom-weenies-{stamp}-{Guid.NewGuid():N}.sql"); + var optionsPath = Path.Combine(privateRoot, "DatabaseBackup-" + Guid.NewGuid().ToString("N") + ".cnf"); + + using var databaseConnection = connectionFactory.Create(settings, settings.WorldDatabaseName); + var connection = new MySqlConnectionStringBuilder(databaseConnection.ConnectionString); + var options = $"[client]{Environment.NewLine}" + + $"host={connection.Server}{Environment.NewLine}" + + $"port={connection.Port}{Environment.NewLine}" + + $"user={connection.UserID}{Environment.NewLine}" + + $"password={connection.Password}{Environment.NewLine}" + + $"protocol=tcp{Environment.NewLine}"; + + try + { + await File.WriteAllTextAsync(optionsPath, options, + new UTF8Encoding(encoderShouldEmitUTF8Identifier: false), cancellationToken); + FilePermissionHardener.RestrictToCurrentUser(optionsPath); + + var startInfo = new ProcessStartInfo + { + FileName = dumpExecutable, + WorkingDirectory = Path.GetDirectoryName(dumpExecutable)!, + UseShellExecute = false, + RedirectStandardOutput = true, + RedirectStandardError = true, + CreateNoWindow = true + }; + // MariaDB requires the defaults-file argument to be first. + startInfo.ArgumentList.Add($"--defaults-extra-file={optionsPath}"); + startInfo.ArgumentList.Add("--single-transaction"); + startInfo.ArgumentList.Add("--quick"); + startInfo.ArgumentList.Add("--skip-lock-tables"); + startInfo.ArgumentList.Add("--no-tablespaces"); + startInfo.ArgumentList.Add("--hex-blob"); + startInfo.ArgumentList.Add("--default-character-set=utf8mb4"); + startInfo.ArgumentList.Add($"--result-file={backupPath}"); + startInfo.ArgumentList.Add(settings.WorldDatabaseName); + + using var process = new Process { StartInfo = startInfo }; + log.Write("Creating a complete ace_world backup before importing custom weenies."); + if (!process.Start()) + throw new InvalidOperationException("The MariaDB backup program did not start."); + + var standardOutput = process.StandardOutput.ReadToEndAsync(cancellationToken); + var standardError = process.StandardError.ReadToEndAsync(cancellationToken); + try + { + await process.WaitForExitAsync(cancellationToken); + } + catch + { + if (!process.HasExited) + process.Kill(entireProcessTree: true); + throw; + } + + var output = await standardOutput; + var error = await standardError; + if (process.ExitCode != 0) + throw new InvalidOperationException( + $"MariaDB could not create the safety backup (exit code {process.ExitCode}). {Condense(error)}"); + if (!File.Exists(backupPath) || new FileInfo(backupPath).Length == 0) + throw new InvalidOperationException("MariaDB reported success, but the safety backup is empty."); + if (!string.IsNullOrWhiteSpace(output)) + log.Write("[MariaDB backup] " + Condense(output)); + log.Write($"Custom-content safety backup created at '{backupPath}'."); + return backupPath; + } + catch + { + TryDelete(backupPath); + throw; + } + finally + { + TryDelete(optionsPath); + } + } + + internal static string? FindDumpExecutable(string serverExecutable) + { + if (string.IsNullOrWhiteSpace(serverExecutable)) + return null; + var directory = Path.GetDirectoryName(Path.GetFullPath(serverExecutable)); + if (directory is null) + return null; + return new[] { "mariadb-dump.exe", "mysqldump.exe" } + .Select(name => Path.Combine(directory, name)) + .FirstOrDefault(File.Exists); + } + + internal static string GetBackupDirectory(LauncherSettings settings) + { + var root = Path.GetDirectoryName(settings.PrivateDatabaseDirectory) + ?? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "ACESinglePlayer"); + return Path.Combine(root, "Backups", "CustomWeenies"); + } + + private static string Condense(string value) + { + var condensed = string.Join(" ", value.Split((char[]?)null, StringSplitOptions.RemoveEmptyEntries)); + return condensed.Length <= 800 ? condensed : condensed[..800] + "..."; + } + + private static void TryDelete(string path) + { + try + { + if (File.Exists(path)) + File.Delete(path); + } + catch (IOException) + { + // A transient cleanup failure must not hide the original result. + } + catch (UnauthorizedAccessException) + { + // A transient cleanup failure must not hide the original result. + } + } +} diff --git a/Source/ACE.SinglePlayer/Mods/ModCatalogService.cs b/Source/ACE.SinglePlayer/Mods/ModCatalogService.cs index 8802a00ed7..f2aacca167 100644 --- a/Source/ACE.SinglePlayer/Mods/ModCatalogService.cs +++ b/Source/ACE.SinglePlayer/Mods/ModCatalogService.cs @@ -66,11 +66,18 @@ public IReadOnlyList Merge(IEnumerable installedRecords) } return result - .OrderByDescending(item => item.Installed is not null) + .OrderBy(GetDisplayRank) .ThenBy(item => item.Name, StringComparer.OrdinalIgnoreCase) .ToArray(); } + private static int GetDisplayRank(ModListItem item) => item switch + { + { Installed: not null } => 0, + { CompatibilityStatus: CompatibilityStatus.Compatible } => 1, + _ => 2 + }; + private (CompatibilityStatus Status, string Message) Evaluate( ModCatalogEntry entry, ModRecord? installed, diff --git a/Source/ACE.SinglePlayer/UI/CustomWeeniesForm.cs b/Source/ACE.SinglePlayer/UI/CustomWeeniesForm.cs new file mode 100644 index 0000000000..7f9b072184 --- /dev/null +++ b/Source/ACE.SinglePlayer/UI/CustomWeeniesForm.cs @@ -0,0 +1,337 @@ +using System.ComponentModel; +using System.Diagnostics; + +using ACE.SinglePlayer.CustomContent; +using ACE.SinglePlayer.Database; +using ACE.SinglePlayer.Infrastructure; +using ACE.SinglePlayer.Models; + +namespace ACE.SinglePlayer.UI; + +public sealed class CustomWeeniesForm : Form +{ + private const string AceForgeReleaseUrl = "https://github.com/shemtar-90/AceForge/releases/tag/v0.3.36"; + private static readonly Color Night = Color.FromArgb(14, 25, 32); + private static readonly Color DeepSlate = Color.FromArgb(26, 43, 52); + private static readonly Color PaleGold = Color.FromArgb(241, 220, 170); + private static readonly Color Mist = Color.FromArgb(222, 231, 226); + + private readonly LauncherSettings settings; + private readonly Func isServerRunning; + private readonly CustomWeenieSqlInspector inspector = new(); + private readonly CustomWeenieImportService importer; + private readonly DataGridView grid = new() + { + Dock = DockStyle.Fill, + AutoGenerateColumns = false, + ReadOnly = true, + AllowUserToAddRows = false, + AllowUserToDeleteRows = false, + AllowUserToResizeRows = false, + MultiSelect = false, + RowHeadersVisible = false, + SelectionMode = DataGridViewSelectionMode.FullRowSelect, + BackgroundColor = Night, + BorderStyle = BorderStyle.None + }; + private readonly TextBox issues = new() + { + Dock = DockStyle.Fill, + Multiline = true, + ReadOnly = true, + ScrollBars = ScrollBars.Vertical, + BorderStyle = BorderStyle.None + }; + private readonly Label status = new() + { + Dock = DockStyle.Fill, + TextAlign = ContentAlignment.MiddleLeft, + AutoEllipsis = true + }; + private readonly Button chooseFolder = new() { Text = "Choose AceForge Folder...", AutoSize = true }; + private readonly Button chooseFiles = new() { Text = "Choose SQL Files...", AutoSize = true }; + private readonly Button openAceForge = new() { Text = "Open AceForge v0.3.36", AutoSize = true }; + private readonly Button openBackups = new() { Text = "Open Backups", AutoSize = true }; + private readonly Button import = new() { Text = "IMPORT VALID WEENIES", AutoSize = true, Enabled = false }; + private IReadOnlyList selected = Array.Empty(); + + public CustomWeeniesForm(LauncherSettings settings, Func isServerRunning, + DatabaseRuntimeFactory runtimeFactory, DatabaseConnectionFactory connectionFactory, LauncherLog log) + { + this.settings = settings; + this.isServerRunning = isServerRunning; + importer = new CustomWeenieImportService(runtimeFactory, connectionFactory, log); + + Text = "ACE Single Player - Custom Weenies"; + StartPosition = FormStartPosition.CenterParent; + MinimumSize = new Size(940, 680); + Size = new Size(1120, 780); + BackColor = Night; + ForeColor = Mist; + Font = new Font(SystemFonts.MessageBoxFont!.FontFamily, 9.5f); + + ConfigureGrid(); + issues.BackColor = Color.FromArgb(20, 34, 41); + issues.ForeColor = Mist; + status.ForeColor = PaleGold; + status.Font = new Font(Font, FontStyle.Bold); + foreach (var button in new[] { chooseFolder, chooseFiles, openAceForge, openBackups, import }) + StyleButton(button); + import.BackColor = Color.FromArgb(133, 76, 38); + + var root = new TableLayoutPanel + { + Dock = DockStyle.Fill, + RowCount = 5, + ColumnCount = 1, + Padding = new Padding(16), + BackColor = Night + }; + root.RowStyles.Add(new RowStyle(SizeType.Absolute, 72)); + root.RowStyles.Add(new RowStyle(SizeType.Absolute, 92)); + root.RowStyles.Add(new RowStyle(SizeType.Absolute, 58)); + root.RowStyles.Add(new RowStyle(SizeType.Percent, 100)); + root.RowStyles.Add(new RowStyle(SizeType.Absolute, 56)); + + var heading = new Label + { + Dock = DockStyle.Fill, + Font = new Font("Georgia", 19, FontStyle.Bold), + ForeColor = PaleGold, + Text = "CUSTOM WEENIES\r\nImport custom ACE World objects without hand-editing the database." + }; + var explanation = new Label + { + Dock = DockStyle.Fill, + ForeColor = Mist, + Padding = new Padding(0, 8, 0, 4), + Text = "Select the folder where AceForge saved its .sql files, or choose individual files. " + + "The launcher validates every statement, previews each WCID, checks for collisions, and creates a complete ace_world backup before importing. " + + "Quest, recipe, event, and treasure scripts are reported but are not executed by this section." + }; + var actions = new FlowLayoutPanel + { + Dock = DockStyle.Fill, + FlowDirection = FlowDirection.LeftToRight, + WrapContents = true, + Padding = new Padding(0, 7, 0, 0), + BackColor = Color.Transparent + }; + actions.Controls.AddRange(new Control[] { chooseFolder, chooseFiles, openAceForge, openBackups }); + + var content = new TableLayoutPanel + { + Dock = DockStyle.Fill, + RowCount = 2, + ColumnCount = 1, + BackColor = DeepSlate, + Padding = new Padding(10) + }; + content.RowStyles.Add(new RowStyle(SizeType.Percent, 70)); + content.RowStyles.Add(new RowStyle(SizeType.Percent, 30)); + content.Controls.Add(grid, 0, 0); + var issueGroup = new GroupBox + { + Dock = DockStyle.Fill, + Text = "Validation notes and skipped files", + ForeColor = PaleGold, + Padding = new Padding(8) + }; + issueGroup.Controls.Add(issues); + content.Controls.Add(issueGroup, 0, 1); + + var footer = new TableLayoutPanel + { + Dock = DockStyle.Fill, + ColumnCount = 2, + RowCount = 1, + BackColor = Color.Transparent, + Padding = new Padding(0, 8, 0, 0) + }; + footer.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100)); + footer.ColumnStyles.Add(new ColumnStyle(SizeType.AutoSize)); + footer.Controls.Add(status, 0, 0); + footer.Controls.Add(import, 1, 0); + + root.Controls.Add(heading, 0, 0); + root.Controls.Add(explanation, 0, 1); + root.Controls.Add(actions, 0, 2); + root.Controls.Add(content, 0, 3); + root.Controls.Add(footer, 0, 4); + Controls.Add(root); + + chooseFolder.Click += (_, _) => ChooseFolder(); + chooseFiles.Click += (_, _) => ChooseFiles(); + openAceForge.Click += (_, _) => Open(AceForgeReleaseUrl); + openBackups.Click += (_, _) => OpenBackupFolder(); + import.Click += async (_, _) => await ImportAsync(); + status.Text = "Choose AceForge weenie SQL files to begin."; + issues.Text = "No files selected."; + } + + private void ChooseFolder() + { + using var dialog = new FolderBrowserDialog + { + Description = "Choose the AceForge output folder containing custom weenie SQL files", + UseDescriptionForTitle = true, + ShowNewFolderButton = false + }; + if (dialog.ShowDialog(this) != DialogResult.OK) + return; + try + { + LoadFiles(Directory.EnumerateFiles(dialog.SelectedPath, "*.sql", SearchOption.AllDirectories)); + } + catch (Exception ex) when (ex is IOException or UnauthorizedAccessException) + { + MessageBox.Show(this, ex.Message, "Could not read the folder", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ChooseFiles() + { + using var dialog = new OpenFileDialog + { + Title = "Choose AceForge custom weenie SQL files", + Filter = "SQL files (*.sql)|*.sql", + Multiselect = true, + CheckFileExists = true + }; + if (dialog.ShowDialog(this) == DialogResult.OK) + LoadFiles(dialog.FileNames); + } + + private void LoadFiles(IEnumerable filePaths) + { + var result = inspector.InspectFiles(filePaths); + selected = result.Definitions; + grid.DataSource = new BindingList(selected.ToList()); + issues.Text = result.Issues.Count == 0 + ? "All selected files passed the Custom Weenie safety checks." + : string.Join(Environment.NewLine + Environment.NewLine, result.Issues.Select(issue => + $"{(string.IsNullOrWhiteSpace(issue.FilePath) ? "Selection" : Path.GetFileName(issue.FilePath))}: {issue.Message}")); + import.Enabled = selected.Count > 0; + status.Text = selected.Count == 0 + ? $"No importable weenies found. {result.Issues.Count} file(s) or selection issue(s) reported." + : $"Ready: {selected.Count} valid weenie{(selected.Count == 1 ? string.Empty : "s")}" + + (result.Issues.Count == 0 ? "." : $"; {result.Issues.Count} file(s) skipped."); + } + + private async Task ImportAsync() + { + if (settings.DatabaseMode != DatabaseMode.Private) + { + MessageBox.Show(this, + "Safe automatic imports currently require Private Database mode. The launcher will not modify an external MariaDB installation automatically.", + "Private Database required", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + if (isServerRunning()) + { + MessageBox.Show(this, "Stop the game and local server before importing custom weenies.", + "Server is running", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + if (selected.Count == 0) + return; + + var answer = MessageBox.Show(this, + $"Import {selected.Count} custom weenie{(selected.Count == 1 ? string.Empty : "s")} into your saved world?\r\n\r\n" + + "A complete ace_world backup will be created first. Imported world data does not have a one-click uninstaller.", + "Confirm Custom Weenie import", MessageBoxButtons.YesNo, MessageBoxIcon.Warning); + if (answer != DialogResult.Yes) + return; + + SetBusy(true); + try + { + var progress = new Progress(message => status.Text = message); + var result = await importer.ImportAsync(settings, selected, ConfirmReplacement, progress, CancellationToken.None); + if (!result.Imported) + { + status.Text = "Import canceled. No database changes were made."; + return; + } + + status.Text = $"Imported {selected.Count} custom weenie{(selected.Count == 1 ? string.Empty : "s")}. Start the game to use them."; + MessageBox.Show(this, + $"The custom weenies were imported successfully.\r\n\r\nSafety backup:\r\n{result.BackupPath}", + "Import complete", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + status.Text = "Import failed. The launcher did not complete the database transaction."; + MessageBox.Show(this, ex.Message, "Custom Weenie import failed", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + finally + { + SetBusy(false); + } + } + + private bool ConfirmReplacement(IReadOnlyList existing) + { + var list = string.Join("\r\n", existing.Take(12).Select(item => $"WCID {item.ClassId}: {item.ClassName}")); + if (existing.Count > 12) + list += $"\r\n...and {existing.Count - 12} more"; + return MessageBox.Show(this, + $"{existing.Count} selected WCID{(existing.Count == 1 ? string.Empty : "s")} already exist in this world:\r\n\r\n" + + list + "\r\n\r\nContinuing will replace those records and may affect saved characters or objects. Replace them?", + "Existing WCIDs found", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes; + } + + private void SetBusy(bool busy) + { + chooseFolder.Enabled = !busy; + chooseFiles.Enabled = !busy; + import.Enabled = !busy && selected.Count > 0; + UseWaitCursor = busy; + } + + private void OpenBackupFolder() + { + var path = MariaDbWorldBackupService.GetBackupDirectory(settings); + Directory.CreateDirectory(path); + Open(path); + } + + private void ConfigureGrid() + { + grid.Columns.Add(new DataGridViewTextBoxColumn + { DataPropertyName = nameof(CustomWeenieDefinition.ClassId), HeaderText = "WCID", Width = 95 }); + grid.Columns.Add(new DataGridViewTextBoxColumn + { DataPropertyName = nameof(CustomWeenieDefinition.ClassName), HeaderText = "Name", Width = 230 }); + grid.Columns.Add(new DataGridViewTextBoxColumn + { DataPropertyName = nameof(CustomWeenieDefinition.TypeName), HeaderText = "Type", Width = 135 }); + grid.Columns.Add(new DataGridViewTextBoxColumn + { DataPropertyName = nameof(CustomWeenieDefinition.FileName), HeaderText = "AceForge SQL file", AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill }); + grid.EnableHeadersVisualStyles = false; + grid.ColumnHeadersDefaultCellStyle.BackColor = DeepSlate; + grid.ColumnHeadersDefaultCellStyle.ForeColor = PaleGold; + grid.ColumnHeadersDefaultCellStyle.Font = new Font(Font, FontStyle.Bold); + grid.ColumnHeadersHeight = 38; + grid.DefaultCellStyle.BackColor = Color.FromArgb(20, 34, 41); + grid.DefaultCellStyle.ForeColor = Mist; + grid.DefaultCellStyle.SelectionBackColor = Color.FromArgb(70, 80, 67); + grid.DefaultCellStyle.SelectionForeColor = Color.White; + grid.AlternatingRowsDefaultCellStyle.BackColor = Color.FromArgb(24, 40, 48); + grid.RowTemplate.Height = 34; + } + + private static void StyleButton(Button button) + { + button.FlatStyle = FlatStyle.Flat; + button.FlatAppearance.BorderColor = Color.FromArgb(126, 146, 145); + button.FlatAppearance.BorderSize = 1; + button.FlatAppearance.MouseOverBackColor = Color.FromArgb(55, 77, 84); + button.FlatAppearance.MouseDownBackColor = Color.FromArgb(33, 51, 59); + button.BackColor = Night; + button.ForeColor = PaleGold; + button.Font = new Font(button.Font, FontStyle.Bold); + button.UseVisualStyleBackColor = false; + } + + private static void Open(string path) => + Process.Start(new ProcessStartInfo { FileName = path, UseShellExecute = true }); +} diff --git a/Source/ACE.SinglePlayer/UI/MainForm.cs b/Source/ACE.SinglePlayer/UI/MainForm.cs index ef7665b9aa..6c2c6a37d0 100644 --- a/Source/ACE.SinglePlayer/UI/MainForm.cs +++ b/Source/ACE.SinglePlayer/UI/MainForm.cs @@ -132,15 +132,17 @@ public MainForm(LauncherController controller, SettingsStore settingsStore, ISec var actions = new FlowLayoutPanel { Dock = DockStyle.Fill, FlowDirection = FlowDirection.LeftToRight, WrapContents = false, BackColor = Color.FromArgb(216, Night), Padding = new Padding(12, 9, 0, 0) }; var settings = new Button { Text = "Settings", AutoSize = true }; - var mods = new Button { Text = "Mods", AutoSize = true }; + var mods = new Button { Text = "Server Mods", AutoSize = true }; + var customWeenies = new Button { Text = "Custom Weenies", AutoSize = true }; var logs = new Button { Text = "Open Logs", AutoSize = true }; var showDiagnostics = new CheckBox { Text = "Show diagnostics", AutoSize = true, Padding = new Padding(10, 7, 0, 0) }; StyleSecondaryButton(settings); StyleSecondaryButton(mods); + StyleSecondaryButton(customWeenies); StyleSecondaryButton(logs); showDiagnostics.ForeColor = Mist; showDiagnostics.BackColor = Color.Transparent; - actions.Controls.AddRange(new Control[] { settings, mods, logs, showDiagnostics }); + actions.Controls.AddRange(new Control[] { settings, mods, customWeenies, logs, showDiagnostics }); main.Controls.Add(actions, 0, 3); diagnosticPanel.Controls.Add(diagnostics); @@ -176,6 +178,9 @@ public MainForm(LauncherController controller, SettingsStore settingsStore, ISec }; settings.Click += async (_, _) => await ShowSettingsAsync(); mods.Click += (_, _) => new ModsForm(controller.Settings, () => controller.IsServerRunning).ShowDialog(this); + customWeenies.Click += (_, _) => new CustomWeeniesForm(controller.Settings, + () => controller.IsServerRunning, databaseRuntimeFactory, + new DatabaseConnectionFactory(secretProtector), log).ShowDialog(this); logs.Click += (_, _) => Process.Start(new ProcessStartInfo { FileName = Path.GetDirectoryName(log.LogPath)!, UseShellExecute = true }); showDiagnostics.CheckedChanged += (_, _) => diagnosticPanel.Visible = showDiagnostics.Checked; FormClosing += OnFormClosing; diff --git a/docs/CUSTOM_WEENIES.md b/docs/CUSTOM_WEENIES.md new file mode 100644 index 0000000000..b0a54b4b64 --- /dev/null +++ b/docs/CUSTOM_WEENIES.md @@ -0,0 +1,45 @@ +# Importing AceForge custom weenies + +ACE Single Player can import custom ACE World objects saved as per-weenie SQL files by [AceForge](https://github.com/shemtar-90/AceForge/releases/tag/v0.3.36). This is intentionally separate from server DLL mods: a server mod changes code while a custom weenie becomes persistent data in `ace_world`. + +## Import workflow + +1. Create or edit the object in AceForge and save its SQL. AceForge normally writes files named like `850001 Example Item.sql` in its configured output folder. +2. Exit the game and stop the local server. +3. Open **Custom Weenies** in ACE Single Player. +4. Click **Choose AceForge Folder...** to scan a complete output folder recursively, or **Choose SQL Files...** for individual files. +5. Review the WCID, name, type, and validation notes. Invalid and unsupported files are skipped rather than executed. +6. Click **IMPORT VALID WEENIES**. If a WCID already exists, the launcher shows the existing records and requires a second confirmation before replacing them. +7. The launcher starts the private database, creates a complete `ace_world` SQL backup, and applies all accepted files together in a transaction. Start the game after the success message. + +Backups and import-history manifests are stored under: + +```text +%LOCALAPPDATA%\ACESinglePlayer\Backups\CustomWeenies +``` + +The **Open Backups** button opens the actual configured location. + +## Accepted SQL + +The importer accepts one weenie per file in ACE's normal idempotent form: + +```sql +DELETE FROM `weenie` WHERE `class_Id` = 850001; +INSERT INTO `weenie` (`class_Id`, `class_Name`, `type`, `last_Modified`) +VALUES (850001, 'Example Item', 6, '2026-07-16 00:00:00'); +``` + +It also accepts inserts into the current ACE `weenie_properties_*` tables when every row belongs to the same WCID. AceForge's `SET @parent_id = LAST_INSERT_ID()` emote pattern is supported. Other statements, other tables, executable comments, property rows targeting a different WCID, multi-weenie files, duplicate selected WCIDs, oversized files, and malformed SQL are rejected. + +This strict format is a safety boundary, not a promise that the content behaves correctly in game. The launcher cannot prove that a DID, spell, generator target, emote, or client-facing asset is valid. + +## Current limits + +- Automatic import requires **Private Database** mode. The launcher does not modify an external MariaDB installation automatically. +- This screen imports weenies only. AceForge quest, recipe, event, treasure, landscape, and client-DAT output is reported as unsupported. +- Imported data has no one-click uninstaller. Re-importing the same WCID replaces it; otherwise, removal or rollback requires a deliberate database migration or restoration from the pre-import backup. +- WCIDs must be chosen for this exact world. Do not overwrite an existing WCID unless replacing that object is intentional. +- Test new content on a disposable save before relying on it in a long-lived world. + +AceForge v0.3.36 is an independent MIT-licensed project. It is linked for convenience and is not bundled with ACE Single Player. diff --git a/docs/MOD_AUTHOR_GUIDE.md b/docs/MOD_AUTHOR_GUIDE.md index 683c4871b1..a2455ab3d1 100644 --- a/docs/MOD_AUTHOR_GUIDE.md +++ b/docs/MOD_AUTHOR_GUIDE.md @@ -1,6 +1,6 @@ # How to make and import an ACE Single Player mod -ACE Single Player currently imports **server-code mods**: .NET DLLs that use ACE's `IHarmonyMod` interface. World SQL packs and client DAT/landscape packs need a different migration system and are not supported by this ZIP importer yet. +ACE Single Player's Mod ZIP importer handles **server-code mods**: .NET DLLs that use ACE's `IHarmonyMod` interface. Per-weenie AceForge SQL uses the separate **Custom Weenies** screen described in [the Custom Weenies guide](CUSTOM_WEENIES.md). General world SQL packs and client DAT/landscape packs still need a different migration system and are not supported by the Mod ZIP importer. The easiest starting point is the small [HelloCommand port](https://github.com/titaniumweiner/ACE-SinglePlayer/tree/main/Source/ACE.SinglePlayer.Mods.HelloCommand). Copy that project, rename its assembly and namespace, and replace its command code with your own feature. @@ -147,7 +147,7 @@ mod/ ## 6. Import it 1. Stop the game and local server. -2. Open **Mods** in ACE Single Player. +2. Open **Server Mods** in ACE Single Player. 3. Click **Import a Mod ZIP...** at the top. 4. Choose the `.zip`; the launcher finds and verifies the adjacent `.zip.sha256` file. 5. Read the warning and confirm. diff --git a/scripts/publish-singleplayer.ps1 b/scripts/publish-singleplayer.ps1 index 14dba3c8d4..d52761d57d 100644 --- a/scripts/publish-singleplayer.ps1 +++ b/scripts/publish-singleplayer.ps1 @@ -238,6 +238,7 @@ Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_ARCHITECTURE.md") (Join-Path Copy-Item (Join-Path $repoRoot "docs\AQUIFIR_MOD_COMPATIBILITY.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "docs\MOD_LIBRARY.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "docs\MOD_AUTHOR_GUIDE.md") (Join-Path $OutputDirectory "Docs") +Copy-Item (Join-Path $repoRoot "docs\CUSTOM_WEENIES.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_ROADMAP.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "docs\SINGLE_PLAYER_BUILD_AND_TEST.md") (Join-Path $OutputDirectory "Docs") Copy-Item (Join-Path $repoRoot "README.md") $OutputDirectory From de7cb548d94ebce39c632cd7c9de2bcaab798814 Mon Sep 17 00:00:00 2001 From: titaniumweiner Date: Thu, 16 Jul 2026 22:23:39 -0400 Subject: [PATCH 14/15] Add ACEUniqueWeenies proc mod --- README.md | 2 +- ...glePlayer.Mods.ACEUniqueWeeniesProc.csproj | 20 +++++++ .../ACEUniqueWeeniesProcPatch.cs | 50 ++++++++++++++++ .../Meta.json | 14 +++++ .../Mod.cs | 19 ++++++ .../README.md | 13 +++++ .../ace-mod.json | 8 +++ .../ACE.SinglePlayer.Tests.csproj | 1 + Source/ACE.SinglePlayer.Tests/ModTests.cs | 58 ++++++++++++++++++- Source/ACE.SinglePlayer.slnx | 1 + .../Mods/CuratedModCatalog.cs | 16 +++++ docs/MOD_LIBRARY.md | 10 +++- scripts/publish-singleplayer.ps1 | 1 + 13 files changed, 209 insertions(+), 4 deletions(-) create mode 100644 Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc.csproj create mode 100644 Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ACEUniqueWeeniesProcPatch.cs create mode 100644 Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Meta.json create mode 100644 Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Mod.cs create mode 100644 Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/README.md create mode 100644 Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ace-mod.json diff --git a/README.md b/README.md index 8ba72f7c79..3b28f6bf1d 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ The portable release currently pins ACEmulator server build `1.77.4782` from ups ## Mods -Open **Server Mods** in the launcher to browse the curated mod library. Installed and ready-to-install entries are listed before unavailable ports. Every entry includes a plain-language description, compatibility result, requirements, source-code links, and a saved-game safety warning. `CriticalOverride` is curated for one-click installation. `HelloCommand` and `SocietyTailoring` are installable **Preview** ports. OptimShi's `CustomClothingBase` v1.11 is also an installable Preview using the author's checksum-pinned, unmodified official DLLs after a successful current-ACE loader test. Preview mods are clearly marked as not thoroughly tested in game. Other samples remain listed but unavailable until they are ported and tested. **Import a Mod ZIP...** can atomically install separately rebuilt, checksummed packages in the documented ACE Single Player ZIP format. +Open **Server Mods** in the launcher to browse the curated mod library. Installed and ready-to-install entries are listed before unavailable ports. Every entry includes a plain-language description, compatibility result, requirements, source-code links, and a saved-game safety warning. `CriticalOverride` is curated for one-click installation. `HelloCommand`, `SocietyTailoring`, and `ACEUniqueWeeniesProc` are installable **Preview** ports. The last one enables the non-Aetheria equipped-item procs documented by [ACEUniqueWeenies](https://github.com/titaniumweiner/ACEUniqueWeenies); its custom item SQL remains a separate Custom Weenies import. OptimShi's `CustomClothingBase` v1.11 is also an installable Preview using the author's checksum-pinned, unmodified official DLLs after a successful current-ACE loader test. Preview mods are clearly marked as not thoroughly tested in game. Other samples remain listed but unavailable until they are ported and tested. **Import a Mod ZIP...** can atomically install separately rebuilt, checksummed packages in the documented ACE Single Player ZIP format. Turning a mod off stops its code after a server restart, but it does not undo experience, items, balances, character properties, or world content already saved by that mod. The launcher blocks removal of mods whose saved data may still depend on them and moves safely removable files to a recovery folder rather than deleting them. See [Mod library and saved-game safety](docs/MOD_LIBRARY.md) for the full policy, or [How to make and import a mod](docs/MOD_AUTHOR_GUIDE.md) to build a compatible package. diff --git a/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc.csproj b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc.csproj new file mode 100644 index 0000000000..ffd3ce07b7 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc.csproj @@ -0,0 +1,20 @@ + + + net10.0 + ACEUniqueWeeniesProc + ACEUniqueWeeniesProc + x64 + enable + enable + + + + + + + + + + + + diff --git a/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ACEUniqueWeeniesProcPatch.cs b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ACEUniqueWeeniesProcPatch.cs new file mode 100644 index 0000000000..02c528b604 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ACEUniqueWeeniesProcPatch.cs @@ -0,0 +1,50 @@ +using System.Linq; + +using ACE.Server.WorldObjects; + +using HarmonyLib; + +namespace ACEUniqueWeeniesProc; + +[HarmonyPatch] +public static class ACEUniqueWeeniesProcPatch +{ + [HarmonyPrefix] + [HarmonyPriority(Priority.First)] + [HarmonyPatch(typeof(WorldObject), nameof(WorldObject.TryProcEquippedItems), + new[] { typeof(WorldObject), typeof(Creature), typeof(bool), typeof(WorldObject) })] + public static bool UseUniqueEquipmentProcFilter(WorldObject __instance, WorldObject attacker, + Creature target, bool selfTarget, WorldObject? weapon) + { + // Preserve stock ACE handling for a proc directly on the object, the + // active weapon, and monster missile projectiles. + if (__instance.HasProc && __instance.ProcSpellSelfTargeted == selfTarget) + __instance.TryProcItem(attacker, target, selfTarget); + + if (weapon is { HasProc: true } && weapon.ProcSpellSelfTargeted == selfTarget) + weapon.TryProcItem(attacker, target, selfTarget); + + if (attacker != __instance && attacker.HasProc && attacker.ProcSpellSelfTargeted == selfTarget) + attacker.TryProcItem(attacker, target, selfTarget); + + // ACE normally limits this equipped-item pass to Aetheria. The + // ACEUniqueWeenies content expects procs on jewelry, armor, and other + // equipped objects. Cloak weave proc type 1 remains excluded exactly + // as documented by the content repository. + if (attacker is Creature wielder) + { + var equippedProcItems = wielder.EquippedObjects.Values.Where(item => + IsEligibleEquippedProc(item.HasProc, item.CloakWeaveProc, + item.ProcSpellSelfTargeted, selfTarget)); + + foreach (var item in equippedProcItems) + item.TryProcItem(attacker, target, selfTarget); + } + + return false; + } + + public static bool IsEligibleEquippedProc(bool hasProc, int? cloakWeaveProc, + bool procSpellSelfTargeted, bool selfTarget) => + hasProc && cloakWeaveProc != 1 && procSpellSelfTargeted == selfTarget; +} diff --git a/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Meta.json b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Meta.json new file mode 100644 index 0000000000..04b29b9ebe --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Meta.json @@ -0,0 +1,14 @@ +{ + "Name": "ACEUniqueWeeniesProc", + "Author": "titaniumweiner; ACE Single Player port", + "Description": "Enables cast-on-strike procs on non-Aetheria equipped items used by ACEUniqueWeenies content.", + "Version": "1.0.0-sp1", + "Priority": 0, + "Enabled": true, + "HotReload": false, + "RegisterCommands": false, + "CatalogId": "titaniumweiner.ace-unique-weenies-proc", + "TargetAceVersion": "ACE.Server 1.1 / .NET 10", + "DataImpact": "SettingsOnly", + "RemovalPolicy": "Safe" +} diff --git a/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Mod.cs b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Mod.cs new file mode 100644 index 0000000000..5550e42200 --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Mod.cs @@ -0,0 +1,19 @@ +using ACE.Server.Mods; + +using HarmonyLib; + +namespace ACEUniqueWeeniesProc; + +public sealed class Mod : IHarmonyMod +{ + internal const string HarmonyId = "titaniumweiner.ACEUniqueWeeniesProc.ace-single-player"; + private readonly Harmony harmony = new(HarmonyId); + + public void Initialize() + { + harmony.PatchAll(typeof(Mod).Assembly); + Console.WriteLine("[ACEUniqueWeeniesProc] Enabled cast-on-strike procs for equipped items other than cloak weave proc type 1."); + } + + public void Dispose() => harmony.UnpatchAll(HarmonyId); +} diff --git a/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/README.md b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/README.md new file mode 100644 index 0000000000..31be89753d --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/README.md @@ -0,0 +1,13 @@ +# ACEUniqueWeeniesProc for ACE Single Player + +This .NET 10 Harmony mod implements the server-code change documented by [titaniumweiner/ACEUniqueWeenies](https://github.com/titaniumweiner/ACEUniqueWeenies). It lets equipped jewelry, armor, and other items use cast-on-strike proc properties instead of limiting the equipped-item pass to Aetheria. Items with `CloakWeaveProc` type `1` remain excluded. + +The patch preserves the rest of the pinned ACE `TryProcEquippedItems` method, including direct-object, active-weapon, and monster-projectile proc handling. Because the requested filter also sees an active weapon in the equipped-object collection, it intentionally matches the repository's exact behavior rather than silently adding a weapon exclusion. + +The mod changes combat behavior only. It does not include or import the repository's custom weenie SQL. Use the launcher's **Custom Weenies** section for compatible per-weenie SQL files. + +Reviewed content commit: + +Ported source: + +This mod is derived from ACE server behavior and is distributed under the GNU Affero General Public License v3.0 included with ACE Single Player. The linked ACEUniqueWeenies repository does not currently declare a license; its SQL content is not redistributed by this mod package. diff --git a/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ace-mod.json b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ace-mod.json new file mode 100644 index 0000000000..73dcf1d84f --- /dev/null +++ b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ace-mod.json @@ -0,0 +1,8 @@ +{ + "formatVersion": 1, + "id": "titaniumweiner.ace-unique-weenies-proc", + "name": "ACEUniqueWeeniesProc", + "version": "1.0.0-sp1", + "folderName": "ACEUniqueWeeniesProc", + "entryAssembly": "ACEUniqueWeeniesProc.dll" +} diff --git a/Source/ACE.SinglePlayer.Tests/ACE.SinglePlayer.Tests.csproj b/Source/ACE.SinglePlayer.Tests/ACE.SinglePlayer.Tests.csproj index 9990a63cdf..d7913f0d87 100644 --- a/Source/ACE.SinglePlayer.Tests/ACE.SinglePlayer.Tests.csproj +++ b/Source/ACE.SinglePlayer.Tests/ACE.SinglePlayer.Tests.csproj @@ -15,6 +15,7 @@ + diff --git a/Source/ACE.SinglePlayer.Tests/ModTests.cs b/Source/ACE.SinglePlayer.Tests/ModTests.cs index 777e67aca6..b341531d8c 100644 --- a/Source/ACE.SinglePlayer.Tests/ModTests.cs +++ b/Source/ACE.SinglePlayer.Tests/ModTests.cs @@ -41,7 +41,7 @@ public void AquafirCatalogHasUsefulDescriptionsAndSafetyPolicies() [TestMethod] public void CuratedCatalogIncludesCustomClothingBaseAsWarnedPreview() { - Assert.AreEqual(23, CuratedModCatalog.Entries.Count); + Assert.AreEqual(24, CuratedModCatalog.Entries.Count); var entry = CuratedModCatalog.Entries.Single(item => item.Id == "optimshi.custom-clothing-base"); Assert.AreEqual("OptimShi", entry.Author); Assert.AreEqual(ModCatalogAvailability.Preview, entry.Availability); @@ -52,6 +52,21 @@ public void CuratedCatalogIncludesCustomClothingBaseAsWarnedPreview() Assert.IsTrue(entry.PackageRelativePath.EndsWith(".zip", StringComparison.OrdinalIgnoreCase)); } + [TestMethod] + public void CuratedCatalogIncludesUniqueWeeniesProcAsWarnedPreview() + { + var entry = CuratedModCatalog.Entries.Single(item => + item.Id == "titaniumweiner.ace-unique-weenies-proc"); + + Assert.AreEqual("titaniumweiner", entry.Author); + Assert.AreEqual(ModCatalogAvailability.Preview, entry.Availability); + Assert.AreEqual(ModDataImpact.SettingsOnly, entry.DataImpact); + Assert.AreEqual(ModRemovalPolicy.Safe, entry.RemovalPolicy); + Assert.IsTrue(entry.SourceUrl.Contains("titaniumweiner/ACEUniqueWeenies", StringComparison.Ordinal)); + Assert.IsTrue(entry.PreviewNotice.Contains("not been thoroughly tested", StringComparison.OrdinalIgnoreCase)); + Assert.IsTrue(entry.PackageRelativePath.EndsWith(".zip", StringComparison.OrdinalIgnoreCase)); + } + [TestMethod] public void HelloCommandRegistersAndRemovesCurrentAceCommands() { @@ -95,6 +110,47 @@ public void SocietyTailoringPatchTargetsCurrentAceSignature() Assert.IsTrue(remaining is null || remaining.Prefixes.All(patch => patch.owner != "aquafir.SocietyTailoring.ace-single-player")); } + [TestMethod] + public void UniqueWeeniesProcPatchTargetsCurrentAceSignatureAndCanBeRemoved() + { + var original = AccessTools.Method(typeof(WorldObject), nameof(WorldObject.TryProcEquippedItems), + new[] { typeof(WorldObject), typeof(Creature), typeof(bool), typeof(WorldObject) }); + Assert.IsNotNull(original); + + var mod = new ACEUniqueWeeniesProc.Mod(); + try + { + mod.Initialize(); + var patchInfo = Harmony.GetPatchInfo(original); + Assert.IsNotNull(patchInfo); + Assert.IsTrue(patchInfo.Prefixes.Any(patch => + patch.owner == "titaniumweiner.ACEUniqueWeeniesProc.ace-single-player")); + } + finally + { + mod.Dispose(); + } + + var remaining = Harmony.GetPatchInfo(original); + Assert.IsTrue(remaining is null || remaining.Prefixes.All(patch => + patch.owner != "titaniumweiner.ACEUniqueWeeniesProc.ace-single-player")); + } + + [TestMethod] + public void UniqueWeeniesProcFilterMatchesDocumentedBehavior() + { + Assert.IsTrue(ACEUniqueWeeniesProc.ACEUniqueWeeniesProcPatch.IsEligibleEquippedProc( + hasProc: true, cloakWeaveProc: null, procSpellSelfTargeted: false, selfTarget: false)); + Assert.IsTrue(ACEUniqueWeeniesProc.ACEUniqueWeeniesProcPatch.IsEligibleEquippedProc( + hasProc: true, cloakWeaveProc: 2, procSpellSelfTargeted: true, selfTarget: true)); + Assert.IsFalse(ACEUniqueWeeniesProc.ACEUniqueWeeniesProcPatch.IsEligibleEquippedProc( + hasProc: true, cloakWeaveProc: 1, procSpellSelfTargeted: false, selfTarget: false)); + Assert.IsFalse(ACEUniqueWeeniesProc.ACEUniqueWeeniesProcPatch.IsEligibleEquippedProc( + hasProc: false, cloakWeaveProc: null, procSpellSelfTargeted: false, selfTarget: false)); + Assert.IsFalse(ACEUniqueWeeniesProc.ACEUniqueWeeniesProcPatch.IsEligibleEquippedProc( + hasProc: true, cloakWeaveProc: null, procSpellSelfTargeted: true, selfTarget: false)); + } + [TestMethod] public void CatalogBlocksMissingDependenciesBeforeInstall() { diff --git a/Source/ACE.SinglePlayer.slnx b/Source/ACE.SinglePlayer.slnx index c60ba4c690..13f0394a92 100644 --- a/Source/ACE.SinglePlayer.slnx +++ b/Source/ACE.SinglePlayer.slnx @@ -4,6 +4,7 @@ + diff --git a/Source/ACE.SinglePlayer/Mods/CuratedModCatalog.cs b/Source/ACE.SinglePlayer/Mods/CuratedModCatalog.cs index 0282bb5afe..01ab2e7a5f 100644 --- a/Source/ACE.SinglePlayer/Mods/CuratedModCatalog.cs +++ b/Source/ACE.SinglePlayer/Mods/CuratedModCatalog.cs @@ -5,6 +5,22 @@ public static class CuratedModCatalog public static IReadOnlyList Entries { get; } = AquafirSampleCatalog.Entries.Concat(new[] { + new ModCatalogEntry( + "titaniumweiner.ace-unique-weenies-proc", + "ACEUniqueWeeniesProc", + "titaniumweiner", + "Enables cast-on-strike procs on non-Aetheria equipped items such as the jewelry, armor, and weapons used by ACEUniqueWeenies content.", + "Replaces ACE's Aetheria-only equipped-proc pass with the filter documented by ACEUniqueWeenies: the item must have a proc, must not be cloak weave proc type 1, and must match the current self-target mode. The package changes server combat behavior only; import compatible item SQL separately through Custom Weenies. It intentionally matches the documented filter exactly, including processing an active proc weapon again if that weapon is also present in EquippedObjects.", + "https://github.com/titaniumweiner/ACEUniqueWeenies", + ModCatalogAvailability.Preview, + ModDataImpact.SettingsOnly, + ModRemovalPolicy.Safe, + "Safe to turn off after a server restart. Imported items remain in the world, but their non-Aetheria equipped procs stop working. Earlier combat results are not reversed.", + TargetAceVersion: "ACE.Server 1.1 / ACE Single Player", + TargetFramework: ".NET 10 preview port", + PackageRelativePath: @"Packages\titaniumweiner.ace-unique-weenies-proc-1.0.0-sp1.zip", + PortSourceUrl: "https://github.com/titaniumweiner/ACE-SinglePlayer/tree/main/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc", + PreviewNotice: "The package builds, loads, targets the pinned TryProcEquippedItems signature, and passes filter and removal tests. Its proc frequency and interactions with every custom item have not been thoroughly tested in game."), new ModCatalogEntry( "optimshi.custom-clothing-base", "CustomClothingBase", diff --git a/docs/MOD_LIBRARY.md b/docs/MOD_LIBRARY.md index 0217448c48..7b527f6e10 100644 --- a/docs/MOD_LIBRARY.md +++ b/docs/MOD_LIBRARY.md @@ -1,12 +1,18 @@ # Mod library and saved-game safety -ACE Single Player includes a curated mod library. Open **Mods** from the launcher, select a mod, and read its description, requirements, compatibility status, and saved-game warning before changing anything. +ACE Single Player includes a curated mod library. Open **Server Mods** from the launcher, select a mod, and read its description, requirements, compatibility status, and saved-game warning before changing anything. ## Current status The library inventories all 22 samples in [aquafir/ACE.BaseMod](https://github.com/aquafir/ACE.BaseMod/tree/master/Samples). The upstream `Meta.json` files contain placeholder descriptions, so ACE Single Player's descriptions and safety policies are curated from the actual READMEs and source. -`CriticalOverride` is curated for this repository's .NET 10 ACE build. `HelloCommand` and `SocietyTailoring` are installable **Preview** ports. Their checksum-verified packages build and pass automated registration/Harmony-target, packaging, and launcher tests, but they have not received thorough in-game testing. OptimShi's `CustomClothingBase` v1.11 is also an installable Preview. Its unmodified official .NET 8 package is pinned by SHA-256 and passed an isolated load test in the exact .NET 10 ACE mod container, but custom clothing behavior and saved-world compatibility are not thoroughly tested. The launcher repeats those warnings before installation. The other samples remain visible but are marked **Needs port**, **Experimental**, or **Not recommended** until they compile against this exact ACE version and pass suitable tests. +`CriticalOverride` is curated for this repository's .NET 10 ACE build. `HelloCommand`, `SocietyTailoring`, and `ACEUniqueWeeniesProc` are installable **Preview** ports. Their checksum-verified packages build and pass automated registration/Harmony-target, packaging, and launcher tests, but they have not received thorough in-game testing. OptimShi's `CustomClothingBase` v1.11 is also an installable Preview. Its unmodified official .NET 8 package is pinned by SHA-256 and passed an isolated load test in the exact .NET 10 ACE mod container, but custom clothing behavior and saved-world compatibility are not thoroughly tested. The launcher repeats those warnings before installation. The other samples remain visible but are marked **Needs port**, **Experimental**, or **Not recommended** until they compile against this exact ACE version and pass suitable tests. + +### ACEUniqueWeeniesProc + +`ACEUniqueWeeniesProc` implements the combat-filter change documented by [titaniumweiner/ACEUniqueWeenies](https://github.com/titaniumweiner/ACEUniqueWeenies). Stock ACE runs the equipped-item proc pass only for Aetheria. This mod instead accepts an equipped item when it has a proc, its `CloakWeaveProc` value is not `1`, and its self-target flag matches the current attack. It changes server behavior only; install the mod here, then import compatible repository SQL separately through **Custom Weenies**. + +Turning the mod off is safe for the database: custom items remain, but their non-Aetheria equipped procs stop firing after the server restarts. The port intentionally matches the documented filter exactly and is marked Preview because its proc frequency and interactions with every custom item have not received thorough in-game testing. The reviewed repository commit is [`75d7036c`](https://github.com/titaniumweiner/ACEUniqueWeenies/commit/75d7036c5b281e70b23aba60732aca681ee443d6). ### CustomClothingBase diff --git a/scripts/publish-singleplayer.ps1 b/scripts/publish-singleplayer.ps1 index d52761d57d..b307ab2386 100644 --- a/scripts/publish-singleplayer.ps1 +++ b/scripts/publish-singleplayer.ps1 @@ -114,6 +114,7 @@ Copy-Item -Path (Join-Path $decalHostPublish "ACE.SinglePlayer.DecalHost.exe") - Write-Host "Building the curated mod packages..." foreach ($modProject in @( "ACE.SinglePlayer.Mods.CriticalOverride", + "ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc", "ACE.SinglePlayer.Mods.HelloCommand", "ACE.SinglePlayer.Mods.SocietyTailoring" )) { From d9ce9da47ba5cb3ff7a34b5317a94edba657683d Mon Sep 17 00:00:00 2001 From: titaniumweiner Date: Thu, 16 Jul 2026 22:31:02 -0400 Subject: [PATCH 15/15] Rename mod to Expanded Cast on Strike --- README.md | 2 +- Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Meta.json | 2 +- Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Mod.cs | 2 +- Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/README.md | 2 +- .../ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ace-mod.json | 2 +- Source/ACE.SinglePlayer.Tests/ModTests.cs | 1 + Source/ACE.SinglePlayer/Mods/CuratedModCatalog.cs | 2 +- docs/MOD_LIBRARY.md | 6 +++--- 8 files changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 3b28f6bf1d..49c0a09bcc 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ The portable release currently pins ACEmulator server build `1.77.4782` from ups ## Mods -Open **Server Mods** in the launcher to browse the curated mod library. Installed and ready-to-install entries are listed before unavailable ports. Every entry includes a plain-language description, compatibility result, requirements, source-code links, and a saved-game safety warning. `CriticalOverride` is curated for one-click installation. `HelloCommand`, `SocietyTailoring`, and `ACEUniqueWeeniesProc` are installable **Preview** ports. The last one enables the non-Aetheria equipped-item procs documented by [ACEUniqueWeenies](https://github.com/titaniumweiner/ACEUniqueWeenies); its custom item SQL remains a separate Custom Weenies import. OptimShi's `CustomClothingBase` v1.11 is also an installable Preview using the author's checksum-pinned, unmodified official DLLs after a successful current-ACE loader test. Preview mods are clearly marked as not thoroughly tested in game. Other samples remain listed but unavailable until they are ported and tested. **Import a Mod ZIP...** can atomically install separately rebuilt, checksummed packages in the documented ACE Single Player ZIP format. +Open **Server Mods** in the launcher to browse the curated mod library. Installed and ready-to-install entries are listed before unavailable ports. Every entry includes a plain-language description, compatibility result, requirements, source-code links, and a saved-game safety warning. `CriticalOverride` is curated for one-click installation. `HelloCommand`, `SocietyTailoring`, and **Expanded Cast on Strike** are installable **Preview** ports. The last one enables the non-Aetheria equipped-item procs documented by [ACEUniqueWeenies](https://github.com/titaniumweiner/ACEUniqueWeenies); its custom item SQL remains a separate Custom Weenies import. OptimShi's `CustomClothingBase` v1.11 is also an installable Preview using the author's checksum-pinned, unmodified official DLLs after a successful current-ACE loader test. Preview mods are clearly marked as not thoroughly tested in game. Other samples remain listed but unavailable until they are ported and tested. **Import a Mod ZIP...** can atomically install separately rebuilt, checksummed packages in the documented ACE Single Player ZIP format. Turning a mod off stops its code after a server restart, but it does not undo experience, items, balances, character properties, or world content already saved by that mod. The launcher blocks removal of mods whose saved data may still depend on them and moves safely removable files to a recovery folder rather than deleting them. See [Mod library and saved-game safety](docs/MOD_LIBRARY.md) for the full policy, or [How to make and import a mod](docs/MOD_AUTHOR_GUIDE.md) to build a compatible package. diff --git a/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Meta.json b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Meta.json index 04b29b9ebe..140544dff8 100644 --- a/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Meta.json +++ b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Meta.json @@ -1,5 +1,5 @@ { - "Name": "ACEUniqueWeeniesProc", + "Name": "Expanded Cast on Strike", "Author": "titaniumweiner; ACE Single Player port", "Description": "Enables cast-on-strike procs on non-Aetheria equipped items used by ACEUniqueWeenies content.", "Version": "1.0.0-sp1", diff --git a/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Mod.cs b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Mod.cs index 5550e42200..381dc85017 100644 --- a/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Mod.cs +++ b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/Mod.cs @@ -12,7 +12,7 @@ public sealed class Mod : IHarmonyMod public void Initialize() { harmony.PatchAll(typeof(Mod).Assembly); - Console.WriteLine("[ACEUniqueWeeniesProc] Enabled cast-on-strike procs for equipped items other than cloak weave proc type 1."); + Console.WriteLine("[Expanded Cast on Strike] Enabled cast-on-strike procs for equipped items other than cloak weave proc type 1."); } public void Dispose() => harmony.UnpatchAll(HarmonyId); diff --git a/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/README.md b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/README.md index 31be89753d..d4e040bc76 100644 --- a/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/README.md +++ b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/README.md @@ -1,4 +1,4 @@ -# ACEUniqueWeeniesProc for ACE Single Player +# Expanded Cast on Strike for ACE Single Player This .NET 10 Harmony mod implements the server-code change documented by [titaniumweiner/ACEUniqueWeenies](https://github.com/titaniumweiner/ACEUniqueWeenies). It lets equipped jewelry, armor, and other items use cast-on-strike proc properties instead of limiting the equipped-item pass to Aetheria. Items with `CloakWeaveProc` type `1` remain excluded. diff --git a/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ace-mod.json b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ace-mod.json index 73dcf1d84f..02fc7eefbc 100644 --- a/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ace-mod.json +++ b/Source/ACE.SinglePlayer.Mods.ACEUniqueWeeniesProc/ace-mod.json @@ -1,7 +1,7 @@ { "formatVersion": 1, "id": "titaniumweiner.ace-unique-weenies-proc", - "name": "ACEUniqueWeeniesProc", + "name": "Expanded Cast on Strike", "version": "1.0.0-sp1", "folderName": "ACEUniqueWeeniesProc", "entryAssembly": "ACEUniqueWeeniesProc.dll" diff --git a/Source/ACE.SinglePlayer.Tests/ModTests.cs b/Source/ACE.SinglePlayer.Tests/ModTests.cs index b341531d8c..a4e59838d9 100644 --- a/Source/ACE.SinglePlayer.Tests/ModTests.cs +++ b/Source/ACE.SinglePlayer.Tests/ModTests.cs @@ -58,6 +58,7 @@ public void CuratedCatalogIncludesUniqueWeeniesProcAsWarnedPreview() var entry = CuratedModCatalog.Entries.Single(item => item.Id == "titaniumweiner.ace-unique-weenies-proc"); + Assert.AreEqual("Expanded Cast on Strike", entry.Name); Assert.AreEqual("titaniumweiner", entry.Author); Assert.AreEqual(ModCatalogAvailability.Preview, entry.Availability); Assert.AreEqual(ModDataImpact.SettingsOnly, entry.DataImpact); diff --git a/Source/ACE.SinglePlayer/Mods/CuratedModCatalog.cs b/Source/ACE.SinglePlayer/Mods/CuratedModCatalog.cs index 01ab2e7a5f..4ebe555c3e 100644 --- a/Source/ACE.SinglePlayer/Mods/CuratedModCatalog.cs +++ b/Source/ACE.SinglePlayer/Mods/CuratedModCatalog.cs @@ -7,7 +7,7 @@ public static class CuratedModCatalog { new ModCatalogEntry( "titaniumweiner.ace-unique-weenies-proc", - "ACEUniqueWeeniesProc", + "Expanded Cast on Strike", "titaniumweiner", "Enables cast-on-strike procs on non-Aetheria equipped items such as the jewelry, armor, and weapons used by ACEUniqueWeenies content.", "Replaces ACE's Aetheria-only equipped-proc pass with the filter documented by ACEUniqueWeenies: the item must have a proc, must not be cloak weave proc type 1, and must match the current self-target mode. The package changes server combat behavior only; import compatible item SQL separately through Custom Weenies. It intentionally matches the documented filter exactly, including processing an active proc weapon again if that weapon is also present in EquippedObjects.", diff --git a/docs/MOD_LIBRARY.md b/docs/MOD_LIBRARY.md index 7b527f6e10..6477c075ab 100644 --- a/docs/MOD_LIBRARY.md +++ b/docs/MOD_LIBRARY.md @@ -6,11 +6,11 @@ ACE Single Player includes a curated mod library. Open **Server Mods** from the The library inventories all 22 samples in [aquafir/ACE.BaseMod](https://github.com/aquafir/ACE.BaseMod/tree/master/Samples). The upstream `Meta.json` files contain placeholder descriptions, so ACE Single Player's descriptions and safety policies are curated from the actual READMEs and source. -`CriticalOverride` is curated for this repository's .NET 10 ACE build. `HelloCommand`, `SocietyTailoring`, and `ACEUniqueWeeniesProc` are installable **Preview** ports. Their checksum-verified packages build and pass automated registration/Harmony-target, packaging, and launcher tests, but they have not received thorough in-game testing. OptimShi's `CustomClothingBase` v1.11 is also an installable Preview. Its unmodified official .NET 8 package is pinned by SHA-256 and passed an isolated load test in the exact .NET 10 ACE mod container, but custom clothing behavior and saved-world compatibility are not thoroughly tested. The launcher repeats those warnings before installation. The other samples remain visible but are marked **Needs port**, **Experimental**, or **Not recommended** until they compile against this exact ACE version and pass suitable tests. +`CriticalOverride` is curated for this repository's .NET 10 ACE build. `HelloCommand`, `SocietyTailoring`, and **Expanded Cast on Strike** are installable **Preview** ports. Their checksum-verified packages build and pass automated registration/Harmony-target, packaging, and launcher tests, but they have not received thorough in-game testing. OptimShi's `CustomClothingBase` v1.11 is also an installable Preview. Its unmodified official .NET 8 package is pinned by SHA-256 and passed an isolated load test in the exact .NET 10 ACE mod container, but custom clothing behavior and saved-world compatibility are not thoroughly tested. The launcher repeats those warnings before installation. The other samples remain visible but are marked **Needs port**, **Experimental**, or **Not recommended** until they compile against this exact ACE version and pass suitable tests. -### ACEUniqueWeeniesProc +### Expanded Cast on Strike -`ACEUniqueWeeniesProc` implements the combat-filter change documented by [titaniumweiner/ACEUniqueWeenies](https://github.com/titaniumweiner/ACEUniqueWeenies). Stock ACE runs the equipped-item proc pass only for Aetheria. This mod instead accepts an equipped item when it has a proc, its `CloakWeaveProc` value is not `1`, and its self-target flag matches the current attack. It changes server behavior only; install the mod here, then import compatible repository SQL separately through **Custom Weenies**. +**Expanded Cast on Strike** implements the combat-filter change documented by [titaniumweiner/ACEUniqueWeenies](https://github.com/titaniumweiner/ACEUniqueWeenies). Stock ACE runs the equipped-item proc pass only for Aetheria. This mod instead accepts an equipped item when it has a proc, its `CloakWeaveProc` value is not `1`, and its self-target flag matches the current attack. It changes server behavior only; install the mod here, then import compatible repository SQL separately through **Custom Weenies**. Turning the mod off is safe for the database: custom items remain, but their non-Aetheria equipped procs stop firing after the server restarts. The port intentionally matches the documented filter exactly and is marked Preview because its proc frequency and interactions with every custom item have not received thorough in-game testing. The reviewed repository commit is [`75d7036c`](https://github.com/titaniumweiner/ACEUniqueWeenies/commit/75d7036c5b281e70b23aba60732aca681ee443d6).

1ot{N-MLk|oZZW-dzu@yZf6SFvku+nfNra=i` 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�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%0D6g}DYUbp#6Kcm!b5tyE8B`fbDspO_ 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%0Dv}IE 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
0fHEF$Rcfh=)` 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
uox80BQgS`DAad1ooebK7j#cK1E&T)4J_{& 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 } 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