diff --git a/Systems/Cards/Drunkdriving.gd b/Systems/Cards/Drunkdriving.gd index ea71bdf..42b0442 100644 --- a/Systems/Cards/Drunkdriving.gd +++ b/Systems/Cards/Drunkdriving.gd @@ -57,12 +57,12 @@ func apply_effect(target_piece = null, board_flow = null, game_state = null): # Move piece to final position var final_container = board_flow.get_node(str(current_x) + "-" + str(final_y)) as PieceContainer - # Important: Need to remove the piece from its current container first # AND keep a reference to it target_piece = current_container.get_piece() # Get reference before removing - current_container.remove_piece(true) # Remove from current container - final_container.set_piece(target_piece) # Set in new container + # current_container.remove_piece(true) # Remove from current container + # final_container.set_piece(target_piece) # Set in new container + final_container.animate_movement(current_container, target_piece) game_state.currentlyMovingPiece = target_piece burned = true diff --git a/Systems/PieceContainer.gd b/Systems/PieceContainer.gd index 0278273..0cf609f 100644 --- a/Systems/PieceContainer.gd +++ b/Systems/PieceContainer.gd @@ -11,6 +11,13 @@ func _init() -> void: add_child(effects) +func animate_movement(source_container: PieceContainer, moving_piece: Pawn) -> void : + await set_piece(moving_piece) + source_container.remove_piece(true) + remove_piece(true) + set_piece(moving_piece, false) + + func set_piece(new_piece: Pawn, animate: bool = true) -> void: remove_piece() # Clean up any existing piece piece = new_piece diff --git a/Systems/StateMachine/GameStates/Movement.gd b/Systems/StateMachine/GameStates/Movement.gd index c931baf..47d3e1c 100644 --- a/Systems/StateMachine/GameStates/Movement.gd +++ b/Systems/StateMachine/GameStates/Movement.gd @@ -180,10 +180,16 @@ func handleCastling(node: PieceContainer) -> void: var king = kingContainer.get_piece() var rook = rookContainer.get_piece() - kingContainer.remove_piece(true) - rookContainer.remove_piece(true) - kingTargetContainer.set_piece(king) - rookTargetContainer.set_piece(rook) + # kingContainer.remove_piece(true) + # rookContainer.remove_piece(true) + # kingTargetContainer.set_piece(king) + # rookTargetContainer.set_piece(rook) + + kingTargetContainer.animate_movement(kingContainer, king); + + rookTargetContainer.animate_movement(rookContainer, rook); + + game.currentlyMovingPiece = king game.resolveMoveEffects() @@ -213,10 +219,14 @@ func handleCapture(node: PieceContainer) -> void: if moving_piece && captured_piece: game.updatePoints(captured_piece) - await node.set_piece(moving_piece) - source_container.remove_piece(true) - node.remove_piece(true) - node.set_piece(moving_piece, false) + node.animate_movement(source_container, moving_piece); + + + # await node.set_piece(moving_piece) + # source_container.remove_piece(true) + # node.remove_piece(true) + # node.set_piece(moving_piece, false) + game.currentlyMovingPiece = moving_piece game.resolveMoveEffects() @@ -228,11 +238,7 @@ func handleRegularMove(node: PieceContainer, consume: bool) -> void: var sourceContainer = game.get_node("Flow/" + game.selectedNode) as PieceContainer var piece = sourceContainer.get_piece() print("Removing Piece 1") - await node.set_piece(piece) - sourceContainer.remove_piece(true) - node.remove_piece(true) - node.set_piece(piece, false) - + node.animate_movement(sourceContainer, piece); game.currentlyMovingPiece = piece if consume: game.resolveMoveEffects() diff --git a/addons/Chess/Scripts/Knight.gd b/addons/Chess/Scripts/Knight.gd index ac9d340..9d79256 100644 --- a/addons/Chess/Scripts/Knight.gd +++ b/addons/Chess/Scripts/Knight.gd @@ -87,29 +87,3 @@ func getValidMoves(board_flow, current_location: String) -> Dictionary: return moves - -# func getValidMoves(board_flow, current_location: String) -> Dictionary: -# var moves = { -# "regular_moves": [], -# "special_moves": [] -# } - -# var loc = current_location.split("-") -# var x = int(loc[0]) -# var y = int(loc[1]) - -# # All possible L-shaped moves -# var knight_moves = [ -# [-2, -1], [-2, 1], -# [-1, -2], [-1, 2], -# [1, -2], [1, 2], -# [2, -1], [2, 1] -# ] - -# for move in knight_moves: -# var new_loc = str(x + move[0]) + "-" + str(y + move[1]) -# if is_valid_cell(board_flow, new_loc): -# if can_move_to_cell(board_flow, new_loc) || can_move_to_cell(board_flow, new_loc, true): -# moves.regular_moves.append(new_loc) - -# return moves