From 9c0798f53f4f234557c034665d5117aeb323c93b Mon Sep 17 00:00:00 2001 From: Adam Gulacsi Date: Tue, 25 Jun 2024 09:09:57 +0200 Subject: [PATCH] #6 and #9 fixed --- custom_resources/card_pile.gd | 22 ++++++++++++++++++++++ scenes/battle_reward/battle_reward.gd | 2 +- scenes/player/player_handler.gd | 2 +- scenes/shop/shop.gd | 2 +- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/custom_resources/card_pile.gd b/custom_resources/card_pile.gd index 89bb5a2..bc014b1 100644 --- a/custom_resources/card_pile.gd +++ b/custom_resources/card_pile.gd @@ -30,6 +30,28 @@ func clear() -> void: card_pile_size_changed.emit(cards.size()) +# We need this method because of a Godot issue +# reported here: +# https://github.com/godotengine/godot/issues/74918 +func duplicate_cards() -> Array[Card]: + var new_array: Array[Card] = [] + + for card: Card in cards: + new_array.append(card.duplicate()) + + return new_array + + +# We need this method because of a Godot issue +# reported here: +# https://github.com/godotengine/godot/issues/74918 +func custom_duplicate() -> CardPile: + var new_card_pile := CardPile.new() + new_card_pile.cards = duplicate_cards() + + return new_card_pile + + func _to_string() -> String: var _card_strings: PackedStringArray = [] for i in range(cards.size()): diff --git a/scenes/battle_reward/battle_reward.gd b/scenes/battle_reward/battle_reward.gd index c967a8e..7ccf6b8 100644 --- a/scenes/battle_reward/battle_reward.gd +++ b/scenes/battle_reward/battle_reward.gd @@ -60,7 +60,7 @@ func _show_card_rewards() -> void: card_rewards.card_reward_selected.connect(_on_card_reward_taken) var card_reward_array: Array[Card] = [] - var available_cards: Array[Card] = character_stats.draftable_cards.cards.duplicate(true) + var available_cards: Array[Card] = character_stats.draftable_cards.duplicate_cards() for i in run_stats.card_rewards: _setup_card_chances() diff --git a/scenes/player/player_handler.gd b/scenes/player/player_handler.gd index 8cc8e80..17a5721 100644 --- a/scenes/player/player_handler.gd +++ b/scenes/player/player_handler.gd @@ -25,7 +25,7 @@ func _ready() -> void: func start_battle(char_stats: CharacterStats) -> void: character = char_stats - character.draw_pile = character.deck.duplicate(true) + character.draw_pile = character.deck.custom_duplicate() character.draw_pile.shuffle() character.discard = CardPile.new() relics.relics_activated.connect(_on_relics_activated) diff --git a/scenes/shop/shop.gd b/scenes/shop/shop.gd index b98787d..80f6a03 100644 --- a/scenes/shop/shop.gd +++ b/scenes/shop/shop.gd @@ -48,7 +48,7 @@ func _blink_timer_setup() -> void: func _generate_shop_cards() -> void: var shop_card_array: Array[Card] = [] - var available_cards := char_stats.draftable_cards.cards.duplicate(true) + var available_cards: Array[Card] = char_stats.draftable_cards.duplicate_cards() RNG.array_shuffle(available_cards) shop_card_array = available_cards.slice(0, 3)