Cleaned up shop printer bought backend interaction, moved logic out of ui into gamedata

This commit is contained in:
jepsu 2026-06-27 12:55:28 +03:00
parent f057bd2c2c
commit 0d2ef59571
4 changed files with 27 additions and 18 deletions

View file

@ -15,7 +15,7 @@ extends Resource
job_amount = value job_amount = value
_generate_job_time() _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: @export var job_difficulty: int = 1:
set(value): set(value):
clamp(value, 1, 5) clamp(value, 1, 5)

View file

@ -3,14 +3,16 @@ extends Node
# - Signals # - Signals
signal job_generated(job: Node) signal job_generated(job: Node)
signal job_interact signal job_interact
signal printer_bought(printer: Node)
# - Variables - Code managed # - Variables - Code managed
var job_spawn_timer: Timer var job_spawn_timer: Timer
var jobs_array: Array[JobData] var jobs_array: Array[JobData]
var current_job_count: int = 0 var current_job_count: int = 0
# Scenes # - Scenes
const JOB_CARD = preload("uid://dvfcie8hqcb0") const JOB_CARD = preload("uid://dvfcie8hqcb0")
const PRINTER = preload("uid://33ctlyrpibs3")
# - Constants - Settings # - Constants - Settings
# Jobs # Jobs
@ -29,6 +31,14 @@ func _ready() -> void:
job_spawn_timer.timeout.connect(_on_job_spawn_timer_timeout) job_spawn_timer.timeout.connect(_on_job_spawn_timer_timeout)
job_spawn_timer.start() 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: func _on_job_spawn_timer_timeout() -> void:
print("Spawn timer over") print("Spawn timer over")
#generate_job() #generate_job()
@ -77,8 +87,8 @@ func _on_job_accepted_pressed(accepted_job):
GameData.current_job_count -= 1 GameData.current_job_count -= 1
accepted_job.queue_free() accepted_job.queue_free()
job_interact.emit() job_interact.emit()
#endregion
#region Load job resources #region Utility - Load job resources
func load_all_jobs(path: String) -> void: func load_all_jobs(path: String) -> void:
var dir = DirAccess.open(path) var dir = DirAccess.open(path)

View file

@ -12,5 +12,7 @@ func _ready() -> void:
new_printer.initialize_printer(printer) new_printer.initialize_printer(printer)
new_printer.buy_printer.connect(_buy_printer_pressed) new_printer.buy_printer.connect(_buy_printer_pressed)
printer_purchase_requested.connect(GameData._on_shop_printer_purchase_req)
func _buy_printer_pressed(bought_printer): func _buy_printer_pressed(bought_printer):
printer_purchase_requested.emit(bought_printer.printer_data) printer_purchase_requested.emit(bought_printer.printer_data)

View file

@ -14,36 +14,33 @@ const PRINTER = preload("uid://33ctlyrpibs3")
func _ready() -> void: func _ready() -> void:
check_debug() check_debug()
%Money.text = "Money: " + str(PlayerData.money) + "" _on_xp_changed(PlayerData.xp)
%Experience.value = PlayerData.xp _on_level_changed(PlayerData.level)
%Level.text = "Level: " + str(PlayerData.level) _on_money_changed(PlayerData.money)
PlayerData.xp_changed.connect(_on_xp_changed) PlayerData.xp_changed.connect(_on_xp_changed)
PlayerData.level_changed.connect(_on_level_changed) PlayerData.level_changed.connect(_on_level_changed)
PlayerData.money_changed.connect(_on_money_changed) PlayerData.money_changed.connect(_on_money_changed)
GameData.job_generated.connect(_on_job_generated) GameData.job_generated.connect(_on_job_generated)
GameData.job_interact.connect(_on_job_interact) GameData.job_interact.connect(_on_job_interact)
GameData.printer_bought.connect(_on_printer_bought)
# --- Experience, Level and Money update --- # --- Experience, Level and Money update ---
func _on_xp_changed(xp): func _on_xp_changed(xp):
%Experience.value = xp %Experience.value = xp
func _on_level_changed(level): func _on_level_changed(level):
%Level.text = "Level: " + str(level) %Level.text = 'Level: %d' % level
func _on_money_changed(money): 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) %JobContainer.add_child(job)
func _on_job_interact() -> void: 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: func _on_printer_bought(new_printer: Node) -> 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) %PrinterContainer.add_child(new_printer)
new_printer.initialize_printer(printer_data)
#region Debug #region Debug
func check_debug() -> void: func check_debug() -> void: