using MultiversalDiplomacy.Model; namespace MultiversalDiplomacy.Script; public class GameScriptHandler(World world, bool strict = false) : IScriptHandler { public string Prompt => "game> "; public World World { get; private set; } = world; /// /// Whether unsuccessful commands should terminate the script. /// public bool Strict { get; } = strict; private string? CurrentPower = null; public IScriptHandler? HandleInput(string input) { if (input == "") { CurrentPower = null; return this; } // --- submits the orders for validation to allow for assertions about it if (input == "---") { // TODO submit orders // TODO return a new handler that handles asserts } // A block of orders for a single power beginning with "{name}:" if (World.Powers.FirstOrDefault(p => input.EqualsAnyCase($"{p}:"), null) is string power) { CurrentPower = power; return this; } // TODO parse order, including "{power} {order}" for one-offs Console.WriteLine($"{CurrentPower}: {input}"); return this; } }