Chessistics/chessistics-engine/Simulation/GameSim.cs
Samuel Bouchet 2d1aea0a7a Snapshot campaign system progress before automation harness
Bundles in-flight work on the campaign/missions system (CampaignDef,
MissionDef, TerrainPatch, TransformerDef, MissionChecker, CampaignLoader,
FlavorBanner, transformer rules), plan files, and matching tests. Baseline
commit so the upcoming automation testing harness lands on a clean tree.
2026-04-16 21:22:49 +02:00

36 lines
813 B
C#

using Chessistics.Engine.Commands;
using Chessistics.Engine.Events;
using Chessistics.Engine.Model;
namespace Chessistics.Engine.Simulation;
public class GameSim
{
private readonly BoardState _state;
public GameSim(LevelDef level)
{
_state = BoardState.FromLevel(level);
}
public GameSim(CampaignDef campaign)
{
_state = BoardState.FromCampaign(campaign);
}
public IReadOnlyList<IWorldEvent> ProcessCommand(IWorldCommand command)
{
var changeList = new List<IWorldEvent>();
try
{
command.Apply(_state, changeList);
}
catch (CommandRejectedException ex)
{
return [ex.RejectionEvent];
}
return changeList;
}
public BoardSnapshot GetSnapshot() => new(_state);
}