64 lines
2 KiB
GDScript
64 lines
2 KiB
GDScript
extends Control
|
|
|
|
@export var jobs_array: Array[JobData]
|
|
@export var job_limit: int = 5
|
|
@export var money: float = 500
|
|
var jobs_tab_button: Button
|
|
const job_scene = preload("uid://dvfcie8hqcb0")
|
|
const PRINTER = preload("uid://33ctlyrpibs3")
|
|
|
|
|
|
var experience: float = 0
|
|
var level: int = 0
|
|
|
|
func _ready() -> void:
|
|
%Money.text = "Money: " + str(money) + " €"
|
|
%Experience.value = experience
|
|
%Level.text = "Level: " + str(level)
|
|
jobs_tab_button = $VBoxContainer/MainArea/RightColumn/TabSwitcher/TabButtons/JobsTabButton
|
|
|
|
func generate_job():
|
|
var job_count = %JobContainer.get_children()
|
|
#print("Current jobs: " + str(job_count.size()))
|
|
|
|
if not job_count.size() >= job_limit:
|
|
var random_job: JobData = jobs_array.pick_random()
|
|
var new_job = job_scene.instantiate()
|
|
%JobContainer.add_child(new_job)
|
|
new_job.initialize_job(random_job)
|
|
job_count = %JobContainer.get_children()
|
|
jobs_tab_button.text = "Jobs (" + str(job_count.size()) + "/" + str(job_limit) + ")"
|
|
new_job.job_accepted.connect(_on_job_accepted_pressed)
|
|
|
|
|
|
func _on_job_accepted_pressed(accepted_job):
|
|
print("Job accepted")
|
|
#give_experience(accepted_job.job_data.job_experience)
|
|
#give_money(accepted_job.job_data.job_reward)
|
|
accepted_job.queue_free()
|
|
var job_count = %JobContainer.get_child_count() - 1
|
|
jobs_tab_button.text = "Jobs (" + str(job_count) + "/" + str(job_limit) + ")"
|
|
|
|
func _on_job_spawner_timeout() -> void:
|
|
generate_job()
|
|
|
|
func give_experience(amount: float) -> void:
|
|
experience += amount
|
|
if experience >= 100:
|
|
while experience >= 100:
|
|
level += 1
|
|
experience -= 100
|
|
%Level.text = "Level: " + str(level)
|
|
%Experience.value = experience
|
|
|
|
func give_money(amount: float) -> void:
|
|
money += amount
|
|
%Money.text = "Money: " + str(money) + "€"
|
|
|
|
func _on_printers_printer_purchase_requested(printer_data: PrinterData) -> void:
|
|
if printer_data.printer_price <= money:
|
|
money -= printer_data.printer_price
|
|
%Money.text = "Money: " + str(money) + "€"
|
|
var new_printer = PRINTER.instantiate()
|
|
%PrinterContainer.add_child(new_printer)
|
|
new_printer.initialize_printer(printer_data)
|