46 lines
1.9 KiB
GDScript
46 lines
1.9 KiB
GDScript
## 主游戏世界场景入口(挂载于 MainGame.tscn)。
|
|
## 进入游戏时根据 GameState 模式初始化,并连接顶部 HUD 信号。
|
|
extends Node
|
|
|
|
func _ready() -> void:
|
|
# 注册为游戏世界场景(供 TimeSystem 判断是否推进时间)
|
|
add_to_group("game_scene")
|
|
# 应用用户设置中的默认流速
|
|
TimeSystem.apply_default_speed()
|
|
match GameState.mode:
|
|
GameState.GameMode.NEW_GAME:
|
|
_start_new_game()
|
|
GameState.GameMode.LOAD_GAME:
|
|
# 读档还原(含日期/资源/名录/建筑);失败回退新游戏
|
|
if not SaveSystem.load_game(GameState.profile_id, GameState.save_slot):
|
|
push_warning("读档失败,回退新游戏")
|
|
_start_new_game()
|
|
|
|
## 新游戏初始化:清空旧数据 → 开局招募弹窗(暂停)→ 设定开局资源。
|
|
func _start_new_game() -> void:
|
|
# 开局招募:清空旧数据 → 生成 5 名候选 → 暂停时间等待选择
|
|
DiscipleManager.start_new_game()
|
|
# 开局建筑:清空旧建筑
|
|
BuildingManager.reset()
|
|
# 开局资源:直接设定(set 而非 add,避免与上次会话残留混淆)
|
|
SectManager.set_spirit_stones(GameConfig.starting_spirit_stones)
|
|
SectManager.set_food(GameConfig.starting_food)
|
|
SectManager.set_reputation(0)
|
|
|
|
## 顶部 HUD 的返回主菜单请求(先写自动存档)。
|
|
func _on_top_bar_hud_sign_return_mainmenu() -> void:
|
|
SaveSystem.save_auto(GameState.profile_id)
|
|
get_tree().change_scene_to_file("res://src/UI/Panels/MainMenu/MainMenu.tscn")
|
|
|
|
## 顶部 HUD 的"管理"按钮请求:打开弟子名录面板。
|
|
func _on_top_bar_hud_sign_open_disciples() -> void:
|
|
$DisciplesPanel.show_panel()
|
|
|
|
## 顶部 HUD 的"资源"按钮请求:打开建筑面板。
|
|
func _on_top_bar_hud_sign_open_buildings() -> void:
|
|
$BuildingsPanel.show_panel()
|
|
|
|
## 顶部 HUD 的"存档"按钮请求:打开存档面板(存档模式)。
|
|
func _on_top_bar_hud_sign_open_save() -> void:
|
|
$SavePanel.open_save()
|