Files
Larra Emily Van Loon 1c78677eb3 initial commit
2026-05-12 12:02:30 +02:00

101 lines
2.1 KiB
GDScript

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)