37 lines
1.1 KiB
GDScript
37 lines
1.1 KiB
GDScript
## 全局游戏状态(Autoload 单例)。
|
||
## 负责场景间参数传递与会话状态管理,不持有游戏内数据。
|
||
extends Node
|
||
|
||
## 进入游戏的方式。
|
||
enum GameMode { NEW_GAME, LOAD_GAME }
|
||
|
||
## 当前进入游戏的方式。
|
||
var mode: GameMode = GameMode.NEW_GAME
|
||
## 当前存档组 ID(两级存档第一级,SaveSystem 分配)。
|
||
var profile_id: int = 0
|
||
## 要加载的槽位文件名(仅 LOAD_GAME 时有效,如 "auto"/"slot_1754734800")。
|
||
var save_slot: String = ""
|
||
|
||
# 游戏内时间(12 月 × 30 天 = 360 天/年),实际推进由 TimeSystem 负责
|
||
var year: int = 1 # 年
|
||
var month: int = 1 # 月(1-12)
|
||
var day: int = 1 # 日(1-30)
|
||
|
||
## 请求开始新游戏。
|
||
## @param pid: 新存档组 ID(主菜单创建)
|
||
func request_new_game(pid: int) -> void:
|
||
mode = GameMode.NEW_GAME
|
||
profile_id = pid
|
||
save_slot = ""
|
||
year = 1
|
||
month = 1
|
||
day = 1
|
||
|
||
## 请求加载指定存档。
|
||
## @param pid: 存档组 ID
|
||
## @param slot_name: 槽位文件名(不含 .json)
|
||
func request_load_game(pid: int, slot_name: String) -> void:
|
||
mode = GameMode.LOAD_GAME
|
||
profile_id = pid
|
||
save_slot = slot_name
|