- GameManager.gd:游戏状态管理注释 - NetworkManager.gd:网络请求管理注释 - SceneManager.gd:场景切换管理注释 - StringUtils.gd:字符串工具函数注释 按照docs注释规范,添加文件头、函数说明、参数描述和使用示例 方便协同开发者快速理解和调用
143 lines
3.8 KiB
GDScript
143 lines
3.8 KiB
GDScript
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()
|