Compare commits

...

2 commits

Author SHA1 Message Date
16b099b6b4 fixed pawn boost 2025-02-05 21:35:20 -06:00
b0ff6ddd89 Fixed DoubleMovement Tiles 2025-02-05 19:50:46 -06:00
4 changed files with 41 additions and 11 deletions

View file

@ -54,8 +54,8 @@ signal hand_updated
func playCard(card: Card, target_piece: Pawn, board_flow = null, game_state = null): func playCard(card: Card, target_piece: Pawn, board_flow = null, game_state = null, avoidHand = false):
if !hand.has(card): if !avoidHand and !hand.has(card):
# print("Failed Play Card 1") # print("Failed Play Card 1")
return false return false
if card.duration > 0: if card.duration > 0:

View file

@ -108,10 +108,10 @@ func place_random_game_tiles(num_tiles: int = 6) -> void:
var tile: Tile var tile: Tile
match tile_type: match tile_type:
0: # DoubleMovementTile tile 0: # DoubleMovementTile tile
tile = FireWallTile.new(container, is_white, 3) tile = PawnBoostTile.new(container, is_white, -1)
1: # FireWallTile 1: # FireWallTile
tile = FireWallTile.new(container, is_white, 3) tile = PawnBoostTile.new(container, is_white, -1)
2: # PawnBoostTile tile 2: # PawnBoostTile tile
tile = FireWallTile.new(container, is_white, 3) tile = PawnBoostTile.new(container, is_white, -1)
add_tile(pos, tile) add_tile(pos, tile)

View file

@ -4,19 +4,27 @@ extends Tile
func _init(button: Button, is_white: bool, d: int) -> void: func _init(button: Button, is_white: bool, d: int) -> void:
super._init(button, is_white, d) super._init(button, is_white, d)
tile_name = "Double Movement" tile_name = "Double Movement"
description = "Any unit that starts its turn here gets double movement for 2 turns" description = "Any unit that starts its turn here gets double movement for 2 turns, Clears previous card effects"
type = TileType.GENERAL type = TileType.GENERAL
tile_owner = TileOwner.GAME tile_owner = TileOwner.GAME
duration = d # Permanent tile duration = d # Permanent tile
func apply_effect(piece: Pawn = null) -> void: func apply_effect(piece: Pawn = null) -> void:
print("APPLY DoubleMovementTile")
if piece && is_effect_active(): if piece && is_effect_active():
var deck_manager = game.deckManager
# Check for and remove any existing card
var piece_id = piece.get_instance_id()
if deck_manager.attached_cards.has(piece_id):
var existing_card = deck_manager.attached_cards[piece_id]
existing_card.remove_effect()
deck_manager.attached_cards.erase(piece_id)
# Add double movement effect to the piece # Add double movement effect to the piece
var deck_manager = piece.get_parent().get_parent().get_parent().deckManager
var double_time = DoubleTimeCard.new() var double_time = DoubleTimeCard.new()
double_time.duration = 2 double_time.duration = 2
deck_manager.playCard(double_time, piece) deck_manager.playCard(double_time, piece, null, null, true)
piece.on_card_effect_changed()
func update_appearance() -> void: func update_appearance() -> void:
if is_effect_active() && base_button: if is_effect_active() && base_button:

View file

@ -1,6 +1,7 @@
class_name PawnBoostTile class_name PawnBoostTile
extends Tile extends Tile
var boosted_pawns: Array[int] = []
func _init(button: Button, is_white: bool, d: int) -> void: func _init(button: Button, is_white: bool, d: int) -> void:
super._init(button, is_white, d) super._init(button, is_white, d)
tile_name = "Pawn Boost" tile_name = "Pawn Boost"
@ -13,8 +14,29 @@ func _init(button: Button, is_white: bool, d: int) -> void:
func apply_effect(piece: Pawn = null) -> void: func apply_effect(piece: Pawn = null) -> void:
print("APPLY PawnBoostTile") print("APPLY PawnBoostTile")
if piece && is_effect_active() && piece.name == "Bishop": if piece && is_effect_active() && piece.name == "Bishop":
# This would be implemented in the pawn movement calculation # Get all pawns of the same color as the bishop
pass var bishop_color = piece.Item_Color
# Clear previous boosts
boosted_pawns.clear()
# Find all pawns of the same color
for child in game.boardContainer.get_children():
if child is PieceContainer:
var pawn = child.get_piece()
if pawn && pawn.name == "Pawn" && pawn.Item_Color == bishop_color:
var pawn_id = pawn.get_instance_id()
if !boosted_pawns.has(pawn_id):
# Add double movement effect
var double_time = DoubleTimeCard.new()
double_time.duration = 1 # Just for this turn
game.deckManager.playCard(double_time, pawn, null, game, true)
pawn.on_card_effect_changed()
boosted_pawns.append(pawn_id)
func remove_effect(piece: Pawn = null) -> void:
# Clean up any remaining boosts
boosted_pawns.clear()
func update_appearance() -> void: func update_appearance() -> void:
if is_effect_active() && base_button: if is_effect_active() && base_button: