public override AffectedPiece CreateAffected() { AffectedKingRook aff = new AffectedKingRook(); aff.wasMoved = wasMoved; return(aff); }
static void Castling(TaskCompletionSource <bool> tcs, bool skipMovement) { Piece king = Board.instance.selectedPiece; AffectedKingRook affectedKing = new AffectedKingRook(); affectedKing.from = king.tile; king.tile.content = null; affectedKing.piece = king; Piece rook = Board.instance.tiles[Board.instance.selectedMove.pos].content; rook.tile.content = null; AffectedKingRook affectedRook = new AffectedKingRook(); affectedRook.from = rook.tile; affectedKing.piece = rook; Vector2Int direction = rook.tile.pos - king.tile.pos; if (direction.x > 0) { king.tile = Board.instance.tiles[new Vector2Int(king.tile.pos.x + 2, king.tile.pos.y)]; rook.tile = Board.instance.tiles[new Vector2Int(king.tile.pos.x - 1, king.tile.pos.y)]; } else { king.tile = Board.instance.tiles[new Vector2Int(king.tile.pos.x - 2, king.tile.pos.y)]; rook.tile = Board.instance.tiles[new Vector2Int(king.tile.pos.x + 1, king.tile.pos.y)]; } king.tile.content = king; affectedKing.to = king.tile; changes.Add(affectedKing); rook.tile.content = rook; affectedRook.to = rook.tile; changes.Add(affectedRook); king.wasMoved = true; rook.wasMoved = true; if (skipMovement) { tcs.SetResult(true); } else { LeanTween.move(king.gameObject, new Vector3(king.tile.pos.x, king.tile.pos.y, 0), 1.5f). setOnComplete(() => { tcs.SetResult(true); }); LeanTween.move(rook.gameObject, new Vector3(rook.tile.pos.x, rook.tile.pos.y, 0), 1.4f); } }