- 移除了.csproj文件 - 更新了.gitignore,添加了.editorconfig - 重构了IBoard和IPiece接口,引入了新的事件处理机制 - 优化了CCBoard、CCPiece等类的实现,使用新的事件驱动模型 - 删除了冗余代码,提高了代码的可读性和可维护性
34 lines
1.2 KiB
C#
34 lines
1.2 KiB
C#
using System;
|
|
using Godot;
|
|
using Vector2I = Vector.Vector2I;
|
|
|
|
|
|
public interface IBoard {
|
|
public interface IBoardOn {
|
|
void OnInsert(object self, IPiece piece) {}
|
|
void OnRemove(object self, IPiece piece) {}
|
|
void OnMove(object self, MoveEventArgs args) {}
|
|
|
|
void OnAddRecord(object self, MoveRecord record) {}
|
|
void OnUndoRecord(object self, MoveRecord record) {}
|
|
void OnSetPieceInteral(object self, SetPieceEventArgs args) {}
|
|
record SetPieceEventArgs(IPiece? OldPiece, IPiece? NewPiece, Vector2I Pos);
|
|
record MoveEventArgs(IPiece? Piece, Vector2I From, Vector2I To);
|
|
}
|
|
|
|
public IBoardOn? On { get; protected set; }
|
|
public int Rows { get; }
|
|
public int Cols { get; }
|
|
|
|
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(bool clearRecords);
|
|
void AddRecord(IPiece? From, IPiece? To, Vector2I FromPos, Vector2I ToPos);
|
|
void UndoRecord();
|
|
record MoveRecord(IPiece? From, IPiece? To, Vector2I FromPos, Vector2I ToPos);
|
|
}
|