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.
36 lines
813 B
C#
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);
|
|
}
|