优化资金检测;
添加是否有项目正在研发,不能重复启动新项目;
This commit is contained in:
parent
c07bb67bd1
commit
34b7633f1e
@ -84,6 +84,7 @@ func _advance_dialogue_or_finish() -> void:
|
|||||||
else:
|
else:
|
||||||
# All dialogues in this page's queue are finished
|
# All dialogues in this page's queue are finished
|
||||||
print(node_name + ": Dialogue queue for this page finished. Calling go_next().")
|
print(node_name + ": Dialogue queue for this page finished. Calling go_next().")
|
||||||
|
self.hide()
|
||||||
go_next() # This will eventually call _close_dialogue and hide the page
|
go_next() # This will eventually call _close_dialogue and hide the page
|
||||||
|
|
||||||
# Renamed to reflect it shows a single line
|
# Renamed to reflect it shows a single line
|
||||||
|
|||||||
@ -4,6 +4,9 @@ extends UIPage # 继承自我们之前创建的 UIPage
|
|||||||
@onready var gameplay_page_path: Control = $gameplay
|
@onready var gameplay_page_path: Control = $gameplay
|
||||||
@onready var theme_page_path: Control = $theme
|
@onready var theme_page_path: Control = $theme
|
||||||
@onready var strategy_page_path: Control = $strategy
|
@onready var strategy_page_path: Control = $strategy
|
||||||
|
@onready var notice_path: Control = $notice
|
||||||
|
@onready var dialogue_secretary: Control = $dialogue_secretary
|
||||||
|
|
||||||
|
|
||||||
# Part_2: 预算
|
# Part_2: 预算
|
||||||
@onready var budget_button: Button = $BG/Part_2/HBoxContainer/Button
|
@onready var budget_button: Button = $BG/Part_2/HBoxContainer/Button
|
||||||
@ -34,6 +37,11 @@ func _ready():
|
|||||||
func _on_page_activated():
|
func _on_page_activated():
|
||||||
super._on_page_activated() # 调用父类的激活逻辑
|
super._on_page_activated() # 调用父类的激活逻辑
|
||||||
|
|
||||||
|
if GameState.get_value("is_on_task"):
|
||||||
|
self.show()
|
||||||
|
go_to_child_page(dialogue_secretary)
|
||||||
|
return
|
||||||
|
|
||||||
print(name + " 页面已激活")
|
print(name + " 页面已激活")
|
||||||
# 当从其它页面退回到当前页面的时候,money恢复show_up起始值
|
# 当从其它页面退回到当前页面的时候,money恢复show_up起始值
|
||||||
if get_main_data("original_money") > GameState.get_value("money"):
|
if get_main_data("original_money") > GameState.get_value("money"):
|
||||||
@ -179,8 +187,7 @@ func _on_strategy_select_button_pressed():
|
|||||||
func _on_confirm_button_pressed():
|
func _on_confirm_button_pressed():
|
||||||
# 导航到下一个页面或结束工作流
|
# 导航到下一个页面或结束工作流
|
||||||
if GameState.get_value("money") < get_main_data("预算"):
|
if GameState.get_value("money") < get_main_data("预算"):
|
||||||
next_ui_node_path = "../notice_1"
|
go_to_child_page(notice_path)
|
||||||
go_next()
|
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
next_ui_node_path = "../product_focus"
|
next_ui_node_path = "../product_focus"
|
||||||
|
|||||||
@ -107,6 +107,7 @@ offset_bottom = 18.0
|
|||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
||||||
|
theme_override_fonts/font = ExtResource("4_fdt2j")
|
||||||
theme_override_font_sizes/font_size = 27
|
theme_override_font_sizes/font_size = 27
|
||||||
text = "新项目"
|
text = "新项目"
|
||||||
vertical_alignment = 1
|
vertical_alignment = 1
|
||||||
@ -139,6 +140,7 @@ grow_vertical = 2
|
|||||||
[node name="Label" type="Label" parent="BG/Part_2/HBoxContainer"]
|
[node name="Label" type="Label" parent="BG/Part_2/HBoxContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
||||||
|
theme_override_fonts/font = ExtResource("4_fdt2j")
|
||||||
theme_override_font_sizes/font_size = 24
|
theme_override_font_sizes/font_size = 24
|
||||||
text = "预算"
|
text = "预算"
|
||||||
horizontal_alignment = 1
|
horizontal_alignment = 1
|
||||||
@ -492,6 +494,7 @@ grow_vertical = 2
|
|||||||
theme = ExtResource("5_edtgu")
|
theme = ExtResource("5_edtgu")
|
||||||
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
theme_override_colors/font_color = Color(0, 0, 0, 1)
|
||||||
theme_override_colors/font_focus_color = Color(0, 0, 0, 1)
|
theme_override_colors/font_focus_color = Color(0, 0, 0, 1)
|
||||||
|
theme_override_fonts/font = ExtResource("4_fdt2j")
|
||||||
theme_override_font_sizes/font_size = 23
|
theme_override_font_sizes/font_size = 23
|
||||||
theme_override_styles/focus = SubResource("StyleBoxEmpty_6xfhm")
|
theme_override_styles/focus = SubResource("StyleBoxEmpty_6xfhm")
|
||||||
theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_k3c3w")
|
theme_override_styles/hover_pressed = SubResource("StyleBoxFlat_k3c3w")
|
||||||
|
|||||||
@ -22,6 +22,8 @@ var _power_bar_segments: Array[ColorRect] = [] # 用于存储体力条的各个
|
|||||||
@onready var next_button: Button = $BG/Title/next/Button
|
@onready var next_button: Button = $BG/Title/next/Button
|
||||||
@onready var confirm_button: Button = $BG/Confirm
|
@onready var confirm_button: Button = $BG/Confirm
|
||||||
|
|
||||||
|
@onready var notice_path: Control = $notice
|
||||||
|
|
||||||
@export var Suitable_position:Array = []
|
@export var Suitable_position:Array = []
|
||||||
|
|
||||||
# --- 内部状态 ---
|
# --- 内部状态 ---
|
||||||
@ -199,7 +201,6 @@ func _display_current_npc() -> void:
|
|||||||
# print(str(self.name) + ": NPC icon name is empty for key '%s'. Using default." % npc_key)
|
# print(str(self.name) + ": NPC icon name is empty for key '%s'. Using default." % npc_key)
|
||||||
npc_icon_rect.texture = ResourceLoader.load(DEFAULT_NPC_ICON_PATH)
|
npc_icon_rect.texture = ResourceLoader.load(DEFAULT_NPC_ICON_PATH)
|
||||||
|
|
||||||
|
|
||||||
# 更新能力值 (确保转换为整数显示)
|
# 更新能力值 (确保转换为整数显示)
|
||||||
stat_design_label.text = str(int(npc_info.get("design", 0.0)))
|
stat_design_label.text = str(int(npc_info.get("design", 0.0)))
|
||||||
stat_code_label.text = str(int(npc_info.get("code", 0.0)))
|
stat_code_label.text = str(int(npc_info.get("code", 0.0)))
|
||||||
@ -253,15 +254,34 @@ func _on_confirm_pressed() -> void:
|
|||||||
if current_npc_index != -1 and current_npc_index < enabled_npc_keys.size():
|
if current_npc_index != -1 and current_npc_index < enabled_npc_keys.size():
|
||||||
var selected_npc_key = enabled_npc_keys[current_npc_index]
|
var selected_npc_key = enabled_npc_keys[current_npc_index]
|
||||||
|
|
||||||
|
# 从 cost_label 获取费用文本并转换为整数
|
||||||
|
var cost_string = cost_label.text
|
||||||
|
var current_npc_cost: int
|
||||||
|
|
||||||
|
# 进行转换,并处理可能的转换失败 (尽管在此逻辑下,cost_label.text 应该总是数字)
|
||||||
|
if cost_string.is_valid_int():
|
||||||
|
current_npc_cost = cost_string.to_int()
|
||||||
|
else:
|
||||||
|
printerr(str(self.name) + ": Error converting cost_label.text ('" + cost_string + "') to integer.")
|
||||||
|
# 可以选择在这里弹出一个错误提示给用户,或者阻止后续操作
|
||||||
|
# 例如,可以简单地返回,或者显示一个通知
|
||||||
|
go_to_child_page(notice_path) # 假设 notice_path 可以显示一个通用错误
|
||||||
|
return
|
||||||
|
|
||||||
# 导航到下一个页面或结束工作流
|
# 导航到下一个页面或结束工作流
|
||||||
next_ui_node_path = temp_next_ui_node_path
|
next_ui_node_path = temp_next_ui_node_path
|
||||||
if GameState.get_value("money") < int(cost_label.text):
|
|
||||||
next_ui_node_path = "../notice_2"
|
# 将 GameState 中的 money 与当前NPC的 cost 进行比较
|
||||||
go_next()
|
if GameState.get_value("money") < current_npc_cost:
|
||||||
return
|
# 如果钱不够,跳转到提示页面 (例如,显示“资金不足”)
|
||||||
|
# 您可能需要一个特定的提示页面或消息来指明是费用不足
|
||||||
|
# GameState.set_value("notice_msg","资金不足以支付该负责人费用:" + str(current_npc_cost)) # 示例:设置特定提示信息
|
||||||
|
go_to_child_page(notice_path)
|
||||||
else:
|
else:
|
||||||
var new_money = GameState.get_value("money")-get_main_data("预算")
|
# 如果钱足够,则扣除费用
|
||||||
GameState.set_value("money",new_money)
|
var new_money = GameState.get_value("money") - current_npc_cost
|
||||||
#GameState.set_value("dialogue_npc",selected_npc_key)
|
GameState.set_value("money", new_money)
|
||||||
|
|
||||||
|
# 设置选中的NPC为关键环节负责人
|
||||||
set_main_data("关键环节负责人", selected_npc_key)
|
set_main_data("关键环节负责人", selected_npc_key)
|
||||||
go_next()
|
go_next() # 进入下一个UI流程
|
||||||
|
|||||||
@ -60,6 +60,18 @@ layout_mode = 1
|
|||||||
next_ui_node_path = NodePath("..")
|
next_ui_node_path = NodePath("..")
|
||||||
parent_page_node_path = NodePath("..")
|
parent_page_node_path = NodePath("..")
|
||||||
|
|
||||||
|
[node name="notice" parent="main_plan" instance=ExtResource("10_5pged")]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 1
|
||||||
|
notice_text = "资金不足"
|
||||||
|
parent_page_node_path = NodePath("..")
|
||||||
|
|
||||||
|
[node name="dialogue_secretary" parent="main_plan" instance=ExtResource("8_6il88")]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 1
|
||||||
|
dialogues = ["目前正在进行其它项目"]
|
||||||
|
parent_page_node_path = NodePath("..")
|
||||||
|
|
||||||
[node name="product_focus" parent="." instance=ExtResource("7_l1sf4")]
|
[node name="product_focus" parent="." instance=ExtResource("7_l1sf4")]
|
||||||
visible = false
|
visible = false
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
@ -80,21 +92,13 @@ Suitable_position = ["项目总监", "策划", "美术设计师"]
|
|||||||
next_ui_node_path = NodePath("../dialogue_npc")
|
next_ui_node_path = NodePath("../dialogue_npc")
|
||||||
back_ui_node_path = NodePath("../main_plan")
|
back_ui_node_path = NodePath("../main_plan")
|
||||||
|
|
||||||
|
[node name="notice" parent="npc_select_1" instance=ExtResource("10_5pged")]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 1
|
||||||
|
notice_text = "资金不足"
|
||||||
|
parent_page_node_path = NodePath("..")
|
||||||
|
|
||||||
[node name="dialogue_npc" parent="." instance=ExtResource("8_6il88")]
|
[node name="dialogue_npc" parent="." instance=ExtResource("8_6il88")]
|
||||||
visible = false
|
visible = false
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
dialogues = ["感谢给我这个机会,我会尽力!"]
|
dialogues = ["感谢给我这个机会,我会尽力!"]
|
||||||
|
|
||||||
[node name="notice_1" parent="." instance=ExtResource("10_5pged")]
|
|
||||||
visible = false
|
|
||||||
layout_mode = 1
|
|
||||||
notice_text = "资金不足"
|
|
||||||
next_ui_node_path = NodePath("../main_plan")
|
|
||||||
back_ui_node_path = NodePath("../main_plan")
|
|
||||||
|
|
||||||
[node name="notice_2" parent="." instance=ExtResource("10_5pged")]
|
|
||||||
visible = false
|
|
||||||
layout_mode = 1
|
|
||||||
notice_text = "资金不足"
|
|
||||||
next_ui_node_path = NodePath("../npc_select_1")
|
|
||||||
back_ui_node_path = NodePath("../npc_select_1")
|
|
||||||
|
|||||||
@ -38,7 +38,7 @@ func show_up():
|
|||||||
else:
|
else:
|
||||||
printerr("Main: Initial page not found or not a UIPage: ", initial_page_path)
|
printerr("Main: Initial page not found or not a UIPage: ", initial_page_path)
|
||||||
else:
|
else:
|
||||||
self.visible = false
|
self.show()
|
||||||
|
|
||||||
func start_new_workflow(start_page: UIPage, initial_data: Dictionary = {}):
|
func start_new_workflow(start_page: UIPage, initial_data: Dictionary = {}):
|
||||||
print("Main: Starting new workflow with page: ", start_page.name, " and data: ", initial_data)
|
print("Main: Starting new workflow with page: ", start_page.name, " and data: ", initial_data)
|
||||||
@ -145,6 +145,7 @@ func _on_page_workflow_end_requested(is_confirm_and_trigger_action: bool):
|
|||||||
|
|
||||||
current_active_page = null
|
current_active_page = null
|
||||||
GameState.set_value(gamestate_data_key,shared_workflow_data)
|
GameState.set_value(gamestate_data_key,shared_workflow_data)
|
||||||
|
GameState.set_value("is_on_task",true)
|
||||||
GameState.resume_game()
|
GameState.resume_game()
|
||||||
self.visible = false
|
self.hide()
|
||||||
print("Main: UI Workflow finished and Main hidden.")
|
print("Main: UI Workflow finished and Main hidden.")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user