Add business pricing and closure controls with compatible digest optimization

This commit is contained in:
Takeshi
2026-09-09 12:04:12 +09:00
parent 071e338e82
commit b3b82ef03e
35 changed files with 2203 additions and 59 deletions
+43 -6
View File
@@ -4,6 +4,7 @@ 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 BusinessManagementPanelScript := preload("res://scripts/ui/business_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"
@@ -130,6 +131,8 @@ var navigation_buttons: Dictionary = {}
var opening_guide: Control
var operating_ledger_panel: VBoxContainer
var supply_management_panel: VBoxContainer
var business_management_panel: VBoxContainer
var _business_panel_open := false
var _supply_panel_open := false
var operations_controls: VBoxContainer
var _ledger_panel_open := false
@@ -394,6 +397,7 @@ func _create_navigation_rail() -> Control:
[&"staff", "従業員"],
[&"facility", "施設"],
[&"product", "商品"],
[&"business", "営業"],
[&"explore", "探索"],
[&"investment", "投資"],
[&"ledger", "帳簿"],
@@ -404,7 +408,7 @@ func _create_navigation_rail() -> Control:
button.custom_minimum_size.y = 46
button.toggle_mode = true
button.add_theme_font_size_override("font_size", 12)
_apply_button_icon(button, visual_theme.navigation_icon(mode) if visual_theme != null else null, 16)
_apply_button_icon(button, visual_theme.navigation_icon(&"ledger" if mode == &"business" else mode) if visual_theme != null else null, 16)
navigation_buttons[mode] = button
column.add_child(button)
var nav_spacer := Control.new()
@@ -540,6 +544,12 @@ func _create_side_panel() -> Control:
supply_management_panel.action_requested.connect(_activate_management_mode)
supply_management_panel.visible = false
root_column.add_child(supply_management_panel)
business_management_panel = BusinessManagementPanelScript.new()
business_management_panel.configure(_runtime, _apply_button_style)
business_management_panel.status_requested.connect(_on_staff_management_status)
business_management_panel.action_requested.connect(_activate_management_mode)
business_management_panel.visible = false
root_column.add_child(business_management_panel)
return panel
@@ -640,11 +650,13 @@ func _set_management_panel_open(open: bool) -> void:
_set_staff_management_panel_open(false)
_set_ledger_panel_open(false)
_set_supply_panel_open(false)
_set_business_panel_open(false)
func _activate_management_mode(mode: StringName) -> void:
_set_management_panel_open(mode != &"facility")
_set_supply_panel_open(mode == &"product")
_set_business_panel_open(mode == &"business")
_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)
@@ -655,6 +667,8 @@ func _activate_management_mode(mode: StringName) -> void:
_set_build_palette_open(true)
_set_staff_candidate_panel_open(false)
_set_status("建築する施設を下のパレットから選んでください。", true, true)
&"business":
_set_status("施設ごとの料金と新規受付の開閉を設定できます。", true, true)
&"product":
_set_status("倉庫への仕入れ、厨房の自動生産、施設への配送を確認できます。", true, true)
&"explore":
@@ -669,14 +683,15 @@ func _set_ledger_panel_open(open: bool) -> void:
_ledger_panel_open = open
if open:
_set_supply_panel_open(false)
_set_business_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 and not _supply_panel_open
operations_controls.visible = not open and not _supply_panel_open and not _business_panel_open
if dashboard_summary_label != null:
dashboard_summary_label.visible = not open and not _supply_panel_open
dashboard_summary_label.visible = not open and not _supply_panel_open and not _business_panel_open
if open:
_set_staff_candidate_panel_open(false)
_set_staff_management_panel_open(false)
@@ -685,6 +700,7 @@ func _set_ledger_panel_open(open: bool) -> void:
func _set_supply_panel_open(open: bool) -> void:
_supply_panel_open = open
if open:
_set_business_panel_open(false)
_set_ledger_panel_open(false)
_set_staff_candidate_panel_open(false)
_set_staff_management_panel_open(false)
@@ -693,9 +709,26 @@ func _set_supply_panel_open(open: bool) -> void:
if open:
supply_management_panel.refresh()
if operations_controls != null:
operations_controls.visible = not open and not _ledger_panel_open
operations_controls.visible = not open and not _ledger_panel_open and not _business_panel_open
if dashboard_summary_label != null:
dashboard_summary_label.visible = not open and not _ledger_panel_open
dashboard_summary_label.visible = not open and not _ledger_panel_open and not _business_panel_open
func _set_business_panel_open(open: bool) -> void:
_business_panel_open = open
if open:
_set_ledger_panel_open(false)
_set_supply_panel_open(false)
_set_staff_candidate_panel_open(false)
_set_staff_management_panel_open(false)
if business_management_panel != null:
business_management_panel.visible = open
if open:
business_management_panel.refresh()
if operations_controls != null:
operations_controls.visible = not open and not _ledger_panel_open and not _supply_panel_open
if dashboard_summary_label != null:
dashboard_summary_label.visible = not open and not _ledger_panel_open and not _supply_panel_open
func _on_opening_action(action: StringName) -> void:
@@ -851,6 +884,7 @@ func _set_staff_management_panel_open(open: bool) -> void:
if open:
_set_ledger_panel_open(false)
_set_supply_panel_open(false)
_set_business_panel_open(false)
_set_staff_candidate_panel_open(false)
_set_management_panel_open(true)
staff_management_panel.refresh()
@@ -873,6 +907,7 @@ func _set_staff_candidate_panel_open(open: bool) -> void:
if open:
_set_ledger_panel_open(false)
_set_supply_panel_open(false)
_set_business_panel_open(false)
_set_staff_management_panel_open(false)
_set_management_panel_open(true)
_set_status("雇用候補を選んでください。契約金と日給は確定前に表示されます。", true, true)
@@ -1032,7 +1067,7 @@ func _clear_build_selection(announce := true) -> void:
func _clear_active_tool() -> void:
if _supply_panel_open:
if _supply_panel_open or _business_panel_open:
_set_management_panel_open(false)
return
if _staff_management_panel_open:
@@ -1734,6 +1769,8 @@ func _load_manual() -> void:
staff_management_panel.refresh()
if supply_management_panel != null:
supply_management_panel.refresh()
if business_management_panel != null:
business_management_panel.refresh()
_selected_entity_id = &""
_selected_entity_kind = &""
world_preview.selected_entity_id = &""