Made filament dropdown. Started to work on using filament while printing
This commit is contained in:
parent
55afdc4b33
commit
9fe4485832
3 changed files with 49 additions and 5 deletions
|
|
@ -5,7 +5,7 @@ var xp: float = 0:
|
||||||
xp = value
|
xp = value
|
||||||
xp_changed.emit(xp)
|
xp_changed.emit(xp)
|
||||||
|
|
||||||
var money: float = 200:
|
var money: float = 9999:
|
||||||
set(value):
|
set(value):
|
||||||
money = value
|
money = value
|
||||||
money_changed.emit(money)
|
money_changed.emit(money)
|
||||||
|
|
|
||||||
|
|
@ -4,15 +4,22 @@ extends PanelContainer
|
||||||
@onready var printer_model_label: Label = $MarginContainer/MainArea/PrinterModelLabel
|
@onready var printer_model_label: Label = $MarginContainer/MainArea/PrinterModelLabel
|
||||||
@onready var progress_bar: ProgressBar = $MarginContainer/MainArea/PrintInfo/ProgressBar
|
@onready var progress_bar: ProgressBar = $MarginContainer/MainArea/PrintInfo/ProgressBar
|
||||||
@onready var select_job: OptionButton = $MarginContainer/MainArea/SelectJob
|
@onready var select_job: OptionButton = $MarginContainer/MainArea/SelectJob
|
||||||
|
@onready var select_filament: OptionButton = $MarginContainer/MainArea/PrintInfo/InfoRow1/SelectFilament
|
||||||
@onready var status_label: RichTextLabel = $MarginContainer/MainArea/TopInfo/StatusLabel
|
@onready var status_label: RichTextLabel = $MarginContainer/MainArea/TopInfo/StatusLabel
|
||||||
@onready var time_left_label: Label = $MarginContainer/MainArea/PrintInfo/InfoRow2/TimeLeftLabel
|
@onready var time_left_label: Label = $MarginContainer/MainArea/PrintInfo/InfoRow2/TimeLeftLabel
|
||||||
@onready var start_button: Button = $MarginContainer/MainArea/Buttons/StartButton
|
@onready var start_button: Button = $MarginContainer/MainArea/Buttons/StartButton
|
||||||
@onready var reward_label: RichTextLabel = $MarginContainer/MainArea/PrintInfo/InfoRow2/RewardLabel
|
@onready var reward_label: RichTextLabel = $MarginContainer/MainArea/PrintInfo/InfoRow2/RewardLabel
|
||||||
@onready var quality_label: RichTextLabel = $MarginContainer/MainArea/PrintInfo/InfoRow1/QualityLabel
|
@onready var quality_label: RichTextLabel = $MarginContainer/MainArea/PrintInfo/InfoRow1/QualityLabel
|
||||||
|
|
||||||
|
|
||||||
var printer_data: PrinterData
|
var printer_data: PrinterData
|
||||||
|
|
||||||
var selected_job: JobData
|
var selected_job: JobData
|
||||||
var selected_job_index: int
|
var selected_job_index: int
|
||||||
|
var selected_filament: FilamentData
|
||||||
|
var selected_filament_index: int
|
||||||
|
|
||||||
|
|
||||||
var is_printing: bool = false
|
var is_printing: bool = false
|
||||||
var time_left: float
|
var time_left: float
|
||||||
|
|
||||||
|
|
@ -36,8 +43,10 @@ func initialize_printer(data: PrinterData) -> void:
|
||||||
status_label.text = 'Status: [color=%s]%s[/color]' % [GameData.hex_white, "Free"]
|
status_label.text = 'Status: [color=%s]%s[/color]' % [GameData.hex_white, "Free"]
|
||||||
progress_bar.visible = false
|
progress_bar.visible = false
|
||||||
progress_bar.value = 0
|
progress_bar.value = 0
|
||||||
|
|
||||||
GameData.display_msg('%s printer bought!' % printer_data.printer_manufacturer, GameData.hex_green)
|
GameData.display_msg('%s printer bought!' % printer_data.printer_manufacturer, GameData.hex_green)
|
||||||
_on_select_job_pressed()
|
_on_select_job_pressed()
|
||||||
|
_on_select_filament_pressed()
|
||||||
|
|
||||||
func _process(delta) -> void:
|
func _process(delta) -> void:
|
||||||
if is_printing:
|
if is_printing:
|
||||||
|
|
@ -58,6 +67,7 @@ func _process(delta) -> void:
|
||||||
var total_time = selected_job.job_time / printer_data.printer_speed
|
var total_time = selected_job.job_time / printer_data.printer_speed
|
||||||
var progress = (total_time - time_left) / total_time
|
var progress = (total_time - time_left) / total_time
|
||||||
|
|
||||||
|
selected_filament.amount -= delta
|
||||||
time_left -= delta
|
time_left -= delta
|
||||||
progress_bar.value = progress
|
progress_bar.value = progress
|
||||||
time_left_label.text = 'Time left: %s' % calculate_time_left(time_left)
|
time_left_label.text = 'Time left: %s' % calculate_time_left(time_left)
|
||||||
|
|
@ -158,9 +168,31 @@ func _on_sell_button_pressed() -> void:
|
||||||
PlayerData.owned_printers -= 1
|
PlayerData.owned_printers -= 1
|
||||||
queue_free()
|
queue_free()
|
||||||
|
|
||||||
|
func _on_select_filament_pressed() -> void:
|
||||||
|
select_filament.clear()
|
||||||
|
print('Click')
|
||||||
|
print(GameData.filaments_array.is_empty())
|
||||||
|
if GameData.filaments_array.is_empty():
|
||||||
|
select_filament.add_item("Out of filament")
|
||||||
|
#start_button.disabled = true
|
||||||
|
else:
|
||||||
|
#start_button.disabled = false
|
||||||
|
for filament in GameData.filaments_array:
|
||||||
|
var item_text = '%s | %.2f g' % [filament.material, filament.amount]
|
||||||
|
select_filament.add_item(item_text)
|
||||||
|
|
||||||
|
var current_index = select_filament.item_count - 1
|
||||||
|
select_filament.set_item_metadata(current_index, filament)
|
||||||
|
selected_filament = select_filament.get_item_metadata(0)
|
||||||
|
selected_job_index = 0
|
||||||
|
|
||||||
|
func _on_select_filament_item_selected(index: int) -> void:
|
||||||
|
selected_filament = select_filament.get_item_metadata(index)
|
||||||
|
selected_filament_index = index
|
||||||
|
|
||||||
func _on_select_job_pressed() -> void:
|
func _on_select_job_pressed() -> void:
|
||||||
select_job.clear()
|
select_job.clear()
|
||||||
if PlayerData.jobs.is_empty():
|
if PlayerData.jobs.is_empty() or GameData.filaments_array.is_empty():
|
||||||
select_job.add_item("No jobs accepted")
|
select_job.add_item("No jobs accepted")
|
||||||
start_button.disabled = true
|
start_button.disabled = true
|
||||||
else:
|
else:
|
||||||
|
|
@ -182,16 +214,25 @@ func _on_select_job_item_selected(index: int) -> void:
|
||||||
func _on_start_button_pressed() -> void:
|
func _on_start_button_pressed() -> void:
|
||||||
if select_job.get_item_text(0) == "No jobs accepted":
|
if select_job.get_item_text(0) == "No jobs accepted":
|
||||||
return
|
return
|
||||||
|
if select_filament.get_item_text(0) == "Out of filament":
|
||||||
|
return
|
||||||
|
|
||||||
time_left = selected_job.job_time / printer_data.printer_speed
|
time_left = selected_job.job_time / printer_data.printer_speed
|
||||||
progress_bar.value = 0
|
progress_bar.value = 0
|
||||||
start_button.disabled = true
|
start_button.disabled = true
|
||||||
is_printing = true
|
is_printing = true
|
||||||
|
|
||||||
|
# Remove job from job selection dropdown
|
||||||
if PlayerData.jobs.size() == 1:
|
if PlayerData.jobs.size() == 1:
|
||||||
PlayerData.jobs.clear()
|
PlayerData.jobs.clear()
|
||||||
else:
|
else:
|
||||||
PlayerData.jobs.remove_at(selected_job_index)
|
PlayerData.jobs.remove_at(selected_job_index)
|
||||||
|
|
||||||
|
# Remove filament from filament selection dropdown
|
||||||
|
if GameData.filaments_array.size() == 1:
|
||||||
|
GameData.filaments_array.clear()
|
||||||
|
else:
|
||||||
|
GameData.filaments_array.remove_at(selected_filament_index)
|
||||||
|
|
||||||
failure_points = calculate_fail_thresholds()
|
failure_points = calculate_fail_thresholds()
|
||||||
GameData.refresh_printer_dropdown.emit()
|
GameData.refresh_printer_dropdown.emit()
|
||||||
|
|
|
||||||
|
|
@ -51,9 +51,10 @@ layout_mode = 2
|
||||||
[node name="InfoRow1" type="HBoxContainer" parent="MarginContainer/MainArea/PrintInfo" unique_id=1561257387]
|
[node name="InfoRow1" type="HBoxContainer" parent="MarginContainer/MainArea/PrintInfo" unique_id=1561257387]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="FilamentLabel" type="Label" parent="MarginContainer/MainArea/PrintInfo/InfoRow1" unique_id=181392172]
|
[node name="SelectFilament" type="OptionButton" parent="MarginContainer/MainArea/PrintInfo/InfoRow1" unique_id=1562930238]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
text = "Material: ###"
|
item_count = 1
|
||||||
|
popup/item_0/id = 0
|
||||||
|
|
||||||
[node name="QualityLabel" type="RichTextLabel" parent="MarginContainer/MainArea/PrintInfo/InfoRow1" unique_id=937206053]
|
[node name="QualityLabel" type="RichTextLabel" parent="MarginContainer/MainArea/PrintInfo/InfoRow1" unique_id=937206053]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
@ -107,6 +108,8 @@ layout_mode = 2
|
||||||
|
|
||||||
[node name="Timer" type="Timer" parent="." unique_id=425740035]
|
[node name="Timer" type="Timer" parent="." unique_id=425740035]
|
||||||
|
|
||||||
|
[connection signal="item_selected" from="MarginContainer/MainArea/PrintInfo/InfoRow1/SelectFilament" to="." method="_on_select_filament_item_selected"]
|
||||||
|
[connection signal="pressed" from="MarginContainer/MainArea/PrintInfo/InfoRow1/SelectFilament" to="." method="_on_select_filament_pressed"]
|
||||||
[connection signal="pressed" from="MarginContainer/MainArea/Buttons/StartButton" to="." method="_on_start_button_pressed"]
|
[connection signal="pressed" from="MarginContainer/MainArea/Buttons/StartButton" to="." method="_on_start_button_pressed"]
|
||||||
[connection signal="pressed" from="MarginContainer/MainArea/Buttons/SellButton" to="." method="_on_sell_button_pressed"]
|
[connection signal="pressed" from="MarginContainer/MainArea/Buttons/SellButton" to="." method="_on_sell_button_pressed"]
|
||||||
[connection signal="item_selected" from="MarginContainer/MainArea/SelectJob" to="." method="_on_select_job_item_selected"]
|
[connection signal="item_selected" from="MarginContainer/MainArea/SelectJob" to="." method="_on_select_job_item_selected"]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue