Connect paid food purchasing, kitchen production, and porter deliveries

This commit is contained in:
Takeshi
2026-09-09 09:46:33 +09:00
parent 29a660aed0
commit 627b200f00
42 changed files with 3787 additions and 84 deletions
+42 -3
View File
@@ -3,6 +3,7 @@ extends Control
const OpeningGuideScript := preload("res://scripts/ui/inn_opening_guide.gd")
const OperatingLedgerPanelScript := preload("res://scripts/ui/operating_ledger_panel.gd")
const StaffManagementPanelScript := preload("res://scripts/ui/staff_management_panel.gd")
const SupplyManagementPanelScript := preload("res://scripts/ui/supply_management_panel.gd")
const WorldPreviewScript := preload("res://scenes/main/world_preview.gd")
const DefaultVisualTheme := preload("res://assets/themes/japanese_fantasy/visual-theme-v1.tres")
const MANUAL_SAVE_PATH := "user://saves/manual_ui"
@@ -128,6 +129,8 @@ var build_buttons: Dictionary = {}
var navigation_buttons: Dictionary = {}
var opening_guide: Control
var operating_ledger_panel: VBoxContainer
var supply_management_panel: VBoxContainer
var _supply_panel_open := false
var operations_controls: VBoxContainer
var _ledger_panel_open := false
var management_panel: Control
@@ -531,6 +534,12 @@ func _create_side_panel() -> Control:
root_column.add_child(operating_ledger_panel)
operating_ledger_panel.setup(_runtime, GameClock)
operating_ledger_panel.visible = false
supply_management_panel = SupplyManagementPanelScript.new()
supply_management_panel.configure(_runtime, _apply_button_style)
supply_management_panel.status_requested.connect(_on_staff_management_status)
supply_management_panel.action_requested.connect(_activate_management_mode)
supply_management_panel.visible = false
root_column.add_child(supply_management_panel)
return panel
@@ -630,10 +639,12 @@ func _set_management_panel_open(open: bool) -> void:
_set_staff_candidate_panel_open(false)
_set_staff_management_panel_open(false)
_set_ledger_panel_open(false)
_set_supply_panel_open(false)
func _activate_management_mode(mode: StringName) -> void:
_set_management_panel_open(mode != &"facility")
_set_supply_panel_open(mode == &"product")
_set_ledger_panel_open(mode == &"ledger")
for raw_mode: Variant in navigation_buttons:
(navigation_buttons[raw_mode] as Button).set_pressed_no_signal(StringName(raw_mode) == mode)
@@ -645,7 +656,7 @@ func _activate_management_mode(mode: StringName) -> void:
_set_staff_candidate_panel_open(false)
_set_status("建築する施設を下のパレットから選んでください。", true, true)
&"product":
_set_status("商品管理は一覧画面の実装準備中です。", true, true)
_set_status("倉庫への仕入れ、厨房の自動生産、施設への配送を確認できます。", true, true)
&"explore":
_set_status("探索管理は一覧画面の実装準備中です。", true, true)
&"investment":
@@ -656,19 +667,37 @@ func _activate_management_mode(mode: StringName) -> void:
func _set_ledger_panel_open(open: bool) -> void:
_ledger_panel_open = open
if open:
_set_supply_panel_open(false)
if operating_ledger_panel != null:
operating_ledger_panel.visible = open
if open:
operating_ledger_panel.refresh()
if operations_controls != null:
operations_controls.visible = not open
operations_controls.visible = not open and not _supply_panel_open
if dashboard_summary_label != null:
dashboard_summary_label.visible = not open
dashboard_summary_label.visible = not open and not _supply_panel_open
if open:
_set_staff_candidate_panel_open(false)
_set_staff_management_panel_open(false)
func _set_supply_panel_open(open: bool) -> void:
_supply_panel_open = open
if open:
_set_ledger_panel_open(false)
_set_staff_candidate_panel_open(false)
_set_staff_management_panel_open(false)
if supply_management_panel != null:
supply_management_panel.visible = open
if open:
supply_management_panel.refresh()
if operations_controls != null:
operations_controls.visible = not open and not _ledger_panel_open
if dashboard_summary_label != null:
dashboard_summary_label.visible = not open and not _ledger_panel_open
func _on_opening_action(action: StringName) -> void:
match action:
&"build_reception", &"build_room", &"build_corridor":
@@ -821,6 +850,7 @@ func _set_staff_management_panel_open(open: bool) -> void:
staff_management_toggle_button.set_pressed_no_signal(open)
if open:
_set_ledger_panel_open(false)
_set_supply_panel_open(false)
_set_staff_candidate_panel_open(false)
_set_management_panel_open(true)
staff_management_panel.refresh()
@@ -842,6 +872,7 @@ func _set_staff_candidate_panel_open(open: bool) -> void:
_refresh_staff_candidates()
if open:
_set_ledger_panel_open(false)
_set_supply_panel_open(false)
_set_staff_management_panel_open(false)
_set_management_panel_open(true)
_set_status("雇用候補を選んでください。契約金と日給は確定前に表示されます。", true, true)
@@ -1001,6 +1032,9 @@ func _clear_build_selection(announce := true) -> void:
func _clear_active_tool() -> void:
if _supply_panel_open:
_set_management_panel_open(false)
return
if _staff_management_panel_open:
_set_staff_management_panel_open(false)
return
@@ -1193,6 +1227,7 @@ func _excavation_idempotency_key(cell: Vector3i) -> StringName:
func _on_facility_selected(instance_id: StringName) -> void:
_set_ledger_panel_open(false)
_set_supply_panel_open(false)
_set_management_panel_open(true)
_set_excavation_mode(false, false)
_selected_entity_id = instance_id
@@ -1202,6 +1237,7 @@ func _on_facility_selected(instance_id: StringName) -> void:
func _on_construction_selected(job_id: StringName) -> void:
_set_ledger_panel_open(false)
_set_supply_panel_open(false)
_set_management_panel_open(true)
_set_excavation_mode(false, false)
_selected_entity_id = job_id
@@ -1301,6 +1337,7 @@ func _refresh_foreground_event(event_service: Variant) -> void:
return
foreground_event_panel.visible = true
_set_ledger_panel_open(false)
_set_supply_panel_open(false)
_set_management_panel_open(true)
var actors: Array[String] = []
for actor_value: Variant in foreground.actor_ids:
@@ -1695,6 +1732,8 @@ func _load_manual() -> void:
_synchronize_ui_command_state()
if staff_management_panel != null:
staff_management_panel.refresh()
if supply_management_panel != null:
supply_management_panel.refresh()
_selected_entity_id = &""
_selected_entity_kind = &""
world_preview.selected_entity_id = &""