extends Node var xp: float = 0: set(value): xp = value xp_changed.emit(xp) var money: float = 9999: set(value): money = value money_changed.emit(money) var level: int = 1: set(value): level = value level_changed.emit(level) var max_order_amount: int = 3: set(value): max_order_amount = value max_order_amount_changed.emit(max_order_amount) var owned_printers: int = 0: set(value): owned_printers = value owned_printers_changed.emit(value) var sell_multiplier: float = 0.5: set(value): sell_multiplier = value var failure_chance: float = 0.6: set(value): failure_chance = value var jobs: Array[JobData] # Signal - player stats signal xp_changed(new_xp) signal money_changed(new_money) signal level_changed(new_level) signal max_order_amount_changed(new_max_order_amount) signal owned_printers_changed(new_amount) # Signal - functions signal give_experience(xp_amount) signal give_money(money_amount) func _ready() -> void: give_experience.connect(_on_give_experience) give_money.connect(_on_give_money) func _on_give_experience(amount: float) -> void: print('Gave: %.0f xp' % amount) xp += amount while xp >= xp_required_for_level(level): xp -= xp_required_for_level(level) level += 1 func _on_give_money(amount: float) -> void: money += amount func xp_required_for_level(player_level: int) -> float: if player_level == 1: return 100.0 var base_xp = 100 * (player_level - 1) var exponent_xp = pow(player_level - 1, 1.8) * 25 return float(base_xp + exponent_xp) func try_purchase(amount) -> bool: if amount <= money: money -= amount return true else: return false