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 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) { 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; } }