extends Node class_name GameState signal card_drawn(card: Card) enum Faction {Scavangers, Kingdom, Emporium} class Player: var name: String; var id: int; var deck: Array; var hand: Array; var discard: Array; var combat: int; var trade: int; class Card: var name: String; var cost: int; var primaryAbilityEffects: Array; var allyAbility: Faction; var allyAbilityEffects: Array; var acquireAbilityEffects: Array; var faction: Faction; # effects class TradeGainEffect: static func NewTradeGainEffect(amount: int): return {Type = "TradeGain", Amount = amount} static func TradeGainDisplay(): pass static func ProcessTradeGainEffect(effect, state): state.trade = effect.Amount; class CombatGainEffect: static func NewCombatGainEffect(amount: int): return {Type = "CombatGain", Amount = amount} static func CombatGainDisplay(): pass static func ProcessCombatGainEffect(effect, state): state.trade = effect.Amount; # make cards static func make_scout(): var card := Card.new(); card.name = "Scout" card.cost = 0; card.primaryAbilityEffects = [TradeGainEffect.NewTradeGainEffect(1)]; return card; static func make_viper(): var card := Card.new(); card.name = "Viper" card.cost = 0; card.primaryAbilityEffects = [CombatGainEffect.NewCombatGainEffect(1)]; return card; static func make_starting_deck(): var deck = []; for i in range(8): deck.append(make_scout()) for i in range(2): deck.append(make_viper()) return deck; var player = Player.new() var rng = RandomNumberGenerator.new() func draw_card(): var cardId = rng.randi_range(0, player.deck.size()-1) var card = player.deck[cardId] player.hand.append(card) player.deck.remove_at(cardId) card_drawn.emit(card) func draw_cards(n: int): for i in range(n): draw_card() # Called when the node enters the scene tree for the first time. func _ready() -> void: player.name = "placeholder" player.deck = make_starting_deck() draw_cards(5) # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: pass func _on_button_button_down() -> void: draw_cards(5)