3d-printing-simulator-textb.../Scenes/Job/job_card.gd

45 lines
1.6 KiB
GDScript

extends PanelContainer
signal job_accepted
var job_data: JobData
var job_time: String
var job_material: String
@onready var job_name: Label = $MarginContainer/VBoxContainer/HBoxContainer2/PartName
@onready var job_amount: Label = $MarginContainer/VBoxContainer/HBoxContainer3/PartAmount
@onready var job_reward: Label = $MarginContainer/VBoxContainer/HBoxContainer/RewardLabel
@onready var job_experience: Label = $MarginContainer/VBoxContainer/HBoxContainer3/PartExperience
@onready var job_time_label: Label = $MarginContainer/VBoxContainer/HBoxContainer/TimeLabel
@onready var job_material_label: Label = $MarginContainer/VBoxContainer/HBoxContainer2/PartMaterial
func initialize_job(data: JobData) -> void:
job_data = data
job_material = 'PLA'
job_time = calculate_time()
job_name.text = job_data.job_name
job_amount.text = 'Amount: %d pcs' % job_data.job_amount
job_reward.text = 'Reward: %.2f' % job_data.job_reward
job_experience.text = 'Experience: %.0f xp' % job_data.job_experience
job_time_label.text = 'Time: %s' % job_time
job_material_label.text = '| %s' % job_material
func calculate_time() -> String:
var print_time: float = sqrt(job_data.job_experience + job_data.job_reward) * job_data.job_amount
var round_time: float = round(print_time * 100) / 100
var minutes: int = 0
if round_time >= 60:
while round_time >= 60:
minutes += 1
round_time -= 60
return '%d m %.2f s' % [minutes, round_time]
else:
return '%.2f s' % round_time
func _on_accept_job_pressed() -> void:
job_accepted.emit(self)
func _on_skip_job_pressed() -> void:
queue_free()
GameData.current_job_count -= 1