using System; using Chessistics.Engine.Simulation; using Chessistics.Scripts.Input; using Chessistics.Scripts.Presentation; using Chessistics.Scripts.UI; namespace Chessistics.Scripts.Automation; /// /// Thin pass-through from the automation harness to the runtime objects it needs. /// The harness never talks to Main directly — only through this facade — so the /// surface to audit stays tiny. /// internal class AutomationFacade { public Func Sim { get; } public InputMapper Input { get; } public EventAnimator Animator { get; } public PieceStockPanel Stock { get; } public ControlBar ControlBar { get; } public Action LoadMission { get; } public Action Play { get; } public Action Pause { get; } public Action Step { get; } public Action TogglePlayPause { get; } public Action BackToMenu { get; } public Action SetSpeed { get; } public Action Quit { get; } public Action QuickSave { get; } public Action QuickLoad { get; } public Action Undo { get; } public AutomationFacade( Func sim, InputMapper input, EventAnimator animator, PieceStockPanel stock, ControlBar controlBar, Action loadMission, Action play, Action pause, Action step, Action togglePlayPause, Action backToMenu, Action setSpeed, Action quit, Action quickSave, Action quickLoad, Action undo) { Sim = sim; Input = input; Animator = animator; Stock = stock; ControlBar = controlBar; LoadMission = loadMission; Play = play; Pause = pause; Step = step; TogglePlayPause = togglePlayPause; BackToMenu = backToMenu; SetSpeed = setSpeed; Quit = quit; QuickSave = quickSave; QuickLoad = quickLoad; Undo = undo; } }