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