extends Node # ============================================================================ # GameManager.gd - 游戏管理器 # ============================================================================ # 全局单例管理器,负责游戏状态管理和生命周期控制 # # 核心职责: # - 游戏状态切换 (加载、认证、游戏中、暂停等) # - 用户信息管理 # - 全局配置访问 # - 系统初始化和清理 # # 使用方式: # GameManager.change_state(GameManager.GameState.IN_GAME) # GameManager.set_current_user("player123") # # 注意事项: # - 作为自动加载单例,全局可访问 # - 状态变更会触发 game_state_changed 信号 # - 状态切换应该通过 change_state() 方法进行 # ============================================================================ # ============ 信号定义 ============ # 游戏状态变更信号 # 参数: new_state - 新的游戏状态 signal game_state_changed(new_state: GameState) # ============ 枚举定义 ============ # 游戏状态枚举 # 定义了游戏的各种运行状态 enum GameState { LOADING, # 加载中 - 游戏启动时的初始化状态 AUTH, # 认证状态 - 用户登录/注册界面 MAIN_MENU, # 主菜单 - 游戏主界面 IN_GAME, # 游戏中 - 正在进行游戏 PAUSED, # 暂停 - 游戏暂停状态 SETTINGS # 设置 - 设置界面 } # ============ 成员变量 ============ # 状态管理 var current_state: GameState = GameState.LOADING # 当前游戏状态 var previous_state: GameState = GameState.LOADING # 上一个游戏状态 # 用户信息 var current_user: String = "" # 当前登录用户名 # 游戏配置 var game_version: String = "1.0.0" # 游戏版本号 # ============ 生命周期方法 ============ # 初始化游戏管理器 # 在节点准备就绪时调用,设置初始状态 func _ready(): print("GameManager 初始化完成") change_state(GameState.AUTH) # 启动时进入认证状态 # ============ 状态管理方法 ============ # 切换游戏状态 # # 参数: # new_state: GameState - 要切换到的新状态 # # 功能: # - 检查状态是否需要切换 # - 记录状态变更历史 # - 发送状态变更信号 # - 输出状态变更日志 func change_state(new_state: GameState): # 避免重复切换到相同状态 if current_state == new_state: return # 记录状态变更 previous_state = current_state current_state = new_state # 输出状态变更日志 print("游戏状态变更: ", GameState.keys()[previous_state], " -> ", GameState.keys()[current_state]) # 发送状态变更信号 game_state_changed.emit(new_state) # 获取当前游戏状态 # # 返回值: # GameState - 当前的游戏状态 func get_current_state() -> GameState: return current_state # 获取上一个游戏状态 # # 返回值: # GameState - 上一个游戏状态 # # 使用场景: # - 从暂停状态恢复时,返回到之前的状态 # - 错误处理时回退到安全状态 func get_previous_state() -> GameState: return previous_state # ============ 用户管理方法 ============ # 设置当前登录用户 # # 参数: # username: String - 用户名 # # 功能: # - 存储当前登录用户信息 # - 输出用户设置日志 # # 注意事项: # - 用户登录成功后调用此方法 # - 用户登出时应传入空字符串 func set_current_user(username: String): current_user = username print("当前用户设置为: ", username) # 获取当前登录用户 # # 返回值: # String - 当前登录的用户名,未登录时为空字符串 func get_current_user() -> String: return current_user # 检查用户是否已登录 # # 返回值: # bool - true表示已登录,false表示未登录 # # 使用场景: # - 进入需要登录的功能前检查 # - UI显示逻辑判断 func is_user_logged_in() -> bool: return not current_user.is_empty()