way too many changes to list, oops. big rewrite.

This commit is contained in:
2025-05-27 03:38:03 +10:00
parent 16951a9beb
commit 4a21701a35
663 changed files with 7389 additions and 3283 deletions

View File

@ -1,14 +1,22 @@
class_name CardPrinter extends StaticBody3D
@export var cards: Array[CardInHand]
@export var item_card_scene: PackedScene
@export var button_collider: CollisionShape3D
@export var button_box: Node3D
@export var choice_colliders: Array[CollisionShape3D]
#TODO: use faction enum
var base_faction: int = 1
var cards_generated: int = 0
var card_available: bool = false
var reply_player: Hero
var spawned_cards: Array[CardItem] = []
func get_faction_cards(faction: Card.Faction) -> Array[Card]:
var valid_cards: Array[Card] = []
for card: Card in Data.cards:
if card.faction == faction:
valid_cards.append(card)
return valid_cards
func generate_rarity() -> int:
@ -28,42 +36,44 @@ func generate_rarity() -> int:
return decided_rarity
func randomize_cards() -> void:
var decided_rarity: int = generate_rarity()
var card_array: Array = []
for x: Card in Data.cards:
if x.rarity == decided_rarity:
card_array.append(x)
var card: Card
for x: CardInHand in cards:
func randomize_cards(faction: Card.Faction) -> void:
#TODO: no magic numbers, asshole! 3 = cards to spawn
for x: int in 3:
var decided_rarity: int = generate_rarity()
var card_choices: Array[Card] = get_faction_cards(faction)
var card_array: Array = []
var cards_chosen: bool = false
while !cards_chosen:
for card: Card in card_choices:
if card.rarity == decided_rarity:
card_array.append(card)
cards_chosen = true
decided_rarity -= 1
if decided_rarity < 0:
card_array.append(Data.cards[0])
cards_chosen = true
var card: Card
if card_array.size() > 0:
card = card_array[Game.randi_in_range(132 * cards_generated, 0, card_array.size() - 1)]
cards_generated += 1
card_array.erase(card)
x.set_card(card)
#TODO: in reality this should just show the icon and then hovering over it lets you see either side at the players own discretion
x.view_tower()
$Node3D.set_visible(true)
for x: CollisionShape3D in choice_colliders:
x.disabled = false
card_available = true
var item: CardItem = item_card_scene.instantiate() as CardItem
item.set_card(card)
item.position = Vector3(x, 1, 2)
item.pressed.connect(card_picked_up)
spawned_cards.append(item)
add_child(item)
func retrieve_card(i: int, _reply: Hero) -> void:
$Node3D.set_visible(false)
for x: CollisionShape3D in choice_colliders:
x.disabled = true
if card_available:
var card: Card = cards[i].stats
reply_player.add_card(card)
#var item: ItemCard = item_card_scene.instantiate() as ItemCard
#item.card = card
#item.position = Vector3(1.683, 0, 0)
#add_child(item)
func card_picked_up(card_item: CardItem) -> void:
reply_player.add_card(card_item.card)
reply_player = null
for spawned_card: CardItem in spawned_cards:
spawned_card.queue_free()
spawned_cards = []
button_collider.disabled = false
button_box.position = Vector3(0,0,0)
$StaticBody3D/AudioStreamPlayer3D.play()
reply_player = null
func _on_static_body_3d_button_interacted(_value: int, reply: Hero) -> void:
@ -71,4 +81,4 @@ func _on_static_body_3d_button_interacted(_value: int, reply: Hero) -> void:
button_collider.disabled = true
button_box.position = Vector3(0,0,-0.2)
$StaticBody3D/AudioStreamPlayer3D.play()
randomize_cards()
randomize_cards(reply.hero_class.faction)