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; } } public class MoveEventArgs : EventArgs { public IPiece Piece { get; set; } public Vector2I From { get; set; } public Vector2I To { get; set; } } 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(); }