using System; using Vector2I = Vector.Vector2I; public interface IBoard { public int Rows { get; } public int Cols { get; } public class SetPieceEventArgs : EventArgs { public IPiece? OldPiece { get; set; } public IPiece? NewPiece { get; set; } public Vector2I Pos { get; set; } = new(); } public class MoveEventArgs : EventArgs { public IPiece? Piece { get; set; } public Vector2I From { get; set; } = new(); public Vector2I To { get; set; } = new(); } event EventHandler OnInsert; event EventHandler OnRemove; event EventHandler OnMove; event EventHandler OnSetPiece; bool IsPosOutOfRange(Vector2I pos); IPiece? GetPiece(Vector2I pos); IPiece? SetPiece(IPiece piece, Vector2I pos); bool InsertPiece(IPiece piece, Vector2I pos); bool MovePiece(Vector2I from, Vector2I to); IPiece? RemovePiece(Vector2I pos); void Clear(); }