bugfix 修复撤回和重新开始按钮的逻辑错误

This commit is contained in:
ZZY 2024-06-15 23:27:57 +08:00
parent 9ba2e1af6b
commit d892cd6c0e
2 changed files with 4 additions and 1 deletions

View File

@ -9,7 +9,7 @@ public partial class ChessBoard : Node2D {
public override void _Ready() {
Board = new VirtualBoard(this as Node);
Records = new MoveRecords(onUndoRecordCallback: (newNode, oldNode, newPos, oldPos) => {
GD.Print("Undo: ", newNode, "->", newNode, ":", newPos, "->", oldPos);
GD.Print("Undo: ", newNode, "->", oldNode, ":", newPos, "->", oldPos);
ChessPiece newPiece = newNode as ChessPiece;
ChessPiece oldPiece = oldNode as ChessPiece;
Board.MoveNode(oldPos, newPos);
@ -64,6 +64,7 @@ public partial class ChessBoard : Node2D {
}
Node NowNode;
if (NowChess != null) {
GD.Print("nowchess", NowChess);
NowNode = NowChess.Duplicate();
Board.RemoveNode(clickArrPos);
} else {
@ -83,6 +84,7 @@ public partial class ChessBoard : Node2D {
public void redo() {
Records.Clear();
Board.Clear();
selectedNodePos = Vector2.Inf;
Board.InitChessBoard();
}

View File

@ -59,6 +59,7 @@ class VirtualBoard {
public void Clear() {
foreach (var node in BoardRoot.GetChildren()) {
if (node is ChessPiece chessPiece) {
RemoveNode(chessPiece.getPos());
chessPiece.QueueFree();
}
}