using Chessistics.Engine.Model; namespace Chessistics.Tests.Helpers; public class BoardBuilder { private readonly int _width; private readonly int _height; private readonly List _productions = []; private readonly List _demands = []; private readonly List _walls = []; private readonly List _stock = []; public BoardBuilder(int width, int height) { _width = width; _height = height; } public BoardBuilder WithProduction(int col, int row, string name, CargoType cargo, int interval = 2) { _productions.Add(new ProductionDef(new Coords(col, row), name, cargo, interval)); return this; } public BoardBuilder WithDemand(int col, int row, string name, CargoType cargo, int amount, int deadline) { _demands.Add(new DemandDef(new Coords(col, row), name, cargo, amount, deadline)); return this; } public BoardBuilder WithWall(int col, int row) { _walls.Add(new Coords(col, row)); return this; } public BoardBuilder WithStock(PieceKind kind, int count) { _stock.Add(new PieceStock(kind, count)); return this; } public LevelDef Build() => new() { Id = 0, Name = "Test Level", Description = "Test", Width = _width, Height = _height, Productions = _productions, Demands = _demands, Walls = _walls, Stock = _stock }; public BoardState BuildState() => BoardState.FromLevel(Build()); }