From 0d2ef59571813e8546ae33933102c1f409c36ae0 Mon Sep 17 00:00:00 2001 From: jepsu Date: Sat, 27 Jun 2026 12:55:28 +0300 Subject: [PATCH] Cleaned up shop printer bought backend interaction, moved logic out of ui into gamedata --- Resources/job_data.gd | 2 +- Scenes/Global/game_data.gd | 16 +++++++++++++--- Scenes/Shop/Printers/printers.gd | 2 ++ Scenes/UI/ui.gd | 25 +++++++++++-------------- 4 files changed, 27 insertions(+), 18 deletions(-) diff --git a/Resources/job_data.gd b/Resources/job_data.gd index fed3fa1..fdc9ac7 100644 --- a/Resources/job_data.gd +++ b/Resources/job_data.gd @@ -15,7 +15,7 @@ extends Resource job_amount = value _generate_job_time() -# Difficulty from 1 to 5: Easy, Medium, Hard, Pain, Torture +# - Difficulty from 1 to 5: Easy, Medium, Hard, Pain, Torture @export var job_difficulty: int = 1: set(value): clamp(value, 1, 5) diff --git a/Scenes/Global/game_data.gd b/Scenes/Global/game_data.gd index 9396715..3b0e22c 100644 --- a/Scenes/Global/game_data.gd +++ b/Scenes/Global/game_data.gd @@ -3,14 +3,16 @@ extends Node # - Signals signal job_generated(job: Node) signal job_interact +signal printer_bought(printer: Node) # - Variables - Code managed var job_spawn_timer: Timer var jobs_array: Array[JobData] var current_job_count: int = 0 -# Scenes +# - Scenes const JOB_CARD = preload("uid://dvfcie8hqcb0") +const PRINTER = preload("uid://33ctlyrpibs3") # - Constants - Settings # Jobs @@ -29,6 +31,14 @@ func _ready() -> void: job_spawn_timer.timeout.connect(_on_job_spawn_timer_timeout) job_spawn_timer.start() +func _on_shop_printer_purchase_req(printer_data: PrinterData) -> void: + if PlayerData.try_purchase(printer_data.printer_price): + var new_printer = PRINTER.instantiate() + printer_bought.emit(new_printer) + new_printer.initialize_printer(printer_data) + + +#region Job generation func _on_job_spawn_timer_timeout() -> void: print("Spawn timer over") #generate_job() @@ -77,8 +87,8 @@ func _on_job_accepted_pressed(accepted_job): GameData.current_job_count -= 1 accepted_job.queue_free() job_interact.emit() - -#region Load job resources +#endregion +#region Utility - Load job resources func load_all_jobs(path: String) -> void: var dir = DirAccess.open(path) diff --git a/Scenes/Shop/Printers/printers.gd b/Scenes/Shop/Printers/printers.gd index 4ac3e6e..39fca44 100644 --- a/Scenes/Shop/Printers/printers.gd +++ b/Scenes/Shop/Printers/printers.gd @@ -11,6 +11,8 @@ func _ready() -> void: $PrinterList.add_child(new_printer) new_printer.initialize_printer(printer) new_printer.buy_printer.connect(_buy_printer_pressed) + + printer_purchase_requested.connect(GameData._on_shop_printer_purchase_req) func _buy_printer_pressed(bought_printer): printer_purchase_requested.emit(bought_printer.printer_data) diff --git a/Scenes/UI/ui.gd b/Scenes/UI/ui.gd index 07ff760..4f4223c 100644 --- a/Scenes/UI/ui.gd +++ b/Scenes/UI/ui.gd @@ -13,37 +13,34 @@ const PRINTER = preload("uid://33ctlyrpibs3") func _ready() -> void: check_debug() - - %Money.text = "Money: " + str(PlayerData.money) + " €" - %Experience.value = PlayerData.xp - %Level.text = "Level: " + str(PlayerData.level) + + _on_xp_changed(PlayerData.xp) + _on_level_changed(PlayerData.level) + _on_money_changed(PlayerData.money) PlayerData.xp_changed.connect(_on_xp_changed) PlayerData.level_changed.connect(_on_level_changed) PlayerData.money_changed.connect(_on_money_changed) GameData.job_generated.connect(_on_job_generated) GameData.job_interact.connect(_on_job_interact) + GameData.printer_bought.connect(_on_printer_bought) # --- Experience, Level and Money update --- func _on_xp_changed(xp): %Experience.value = xp func _on_level_changed(level): - %Level.text = "Level: " + str(level) + %Level.text = 'Level: %d' % level func _on_money_changed(money): - %Money.text = "Money: " + str(money) + "€" + %Money.text = 'Money: %.2f €' % money -func _on_job_generated(job: Node): +func _on_job_generated(job: Node) -> void: %JobContainer.add_child(job) func _on_job_interact() -> void: - jobs_tab_button.text = "Jobs (" + str(GameData.current_job_count) + "/" + str(GameData.MAX_JOBS) + ")" + jobs_tab_button.text = 'Jobs (%d / %d)' % [GameData.current_job_count, GameData.MAX_JOBS] -func _on_printers_printer_purchase_requested(printer_data: PrinterData) -> void: - if PlayerData.try_purchase(printer_data.printer_price): - %Money.text = "Money: " + str(PlayerData.money) + "€" - var new_printer = PRINTER.instantiate() - %PrinterContainer.add_child(new_printer) - new_printer.initialize_printer(printer_data) +func _on_printer_bought(new_printer: Node) -> void: + %PrinterContainer.add_child(new_printer) #region Debug func check_debug() -> void: