extends Control # ============================================================================ # MainScene.gd - 主场景控制器 # ============================================================================ # 这是游戏的主入口场景,负责管理所有图像显示和界面切换 # 功能包括: # - 登录/注册界面管理 # - 主游戏界面显示 # - 用户状态管理 # - 游戏功能模块入口 # ============================================================================ # 场景节点引用 @onready var auth_scene: Control = $AuthScene @onready var main_game_ui: Control = $MainGameUI @onready var chat_ui: Control = %ChatUI @onready var user_label: Label = $MainGameUI/TopBar/HBoxContainer/UserLabel @onready var logout_button: Button = $MainGameUI/TopBar/HBoxContainer/LogoutButton # 游戏功能按钮 @onready var explore_button: Button = $MainGameUI/MainContent/CenterContainer/VBoxContainer/GameMenuGrid/ExploreButton @onready var inventory_button: Button = $MainGameUI/MainContent/CenterContainer/VBoxContainer/GameMenuGrid/InventoryButton @onready var shop_button: Button = $MainGameUI/MainContent/CenterContainer/VBoxContainer/GameMenuGrid/ShopButton @onready var friends_button: Button = $MainGameUI/MainContent/CenterContainer/VBoxContainer/GameMenuGrid/FriendsButton # 状态标签 @onready var level_label: Label = $MainGameUI/MainContent/CenterContainer/VBoxContainer/StatusPanel/StatusContainer/StatusGrid/LevelLabel @onready var coins_label: Label = $MainGameUI/MainContent/CenterContainer/VBoxContainer/StatusPanel/StatusContainer/StatusGrid/CoinsLabel @onready var exp_label: Label = $MainGameUI/MainContent/CenterContainer/VBoxContainer/StatusPanel/StatusContainer/StatusGrid/ExpLabel @onready var energy_label: Label = $MainGameUI/MainContent/CenterContainer/VBoxContainer/StatusPanel/StatusContainer/StatusGrid/EnergyLabel # 游戏状态 enum GameState { AUTH, # 登录/注册状态 MAIN_GAME # 主游戏状态 } var current_state: GameState = GameState.AUTH var current_user: String = "" # 玩家数据 var player_level: int = 1 var player_coins: int = 100 var player_exp: int = 0 var player_max_exp: int = 100 var player_energy: int = 100 var player_max_energy: int = 100 func _ready(): # 初始化游戏状态 setup_game() # 连接登录成功信号 auth_scene.login_success.connect(_on_login_success) # 连接按钮信号 logout_button.pressed.connect(_on_logout_pressed) explore_button.pressed.connect(_on_explore_pressed) inventory_button.pressed.connect(_on_inventory_pressed) shop_button.pressed.connect(_on_shop_pressed) friends_button.pressed.connect(_on_friends_pressed) func setup_game(): # 设置初始状态为登录界面 show_auth_scene() func show_auth_scene(): current_state = GameState.AUTH auth_scene.visible = true main_game_ui.visible = false func show_main_game(): current_state = GameState.MAIN_GAME auth_scene.visible = false main_game_ui.visible = true user_label.text = "当前用户: " + current_user update_player_status() print("进入主游戏界面") func update_player_status(): level_label.text = "等级: " + str(player_level) coins_label.text = "金币: " + str(player_coins) exp_label.text = "经验: " + str(player_exp) + "/" + str(player_max_exp) energy_label.text = "体力: " + str(player_energy) + "/" + str(player_max_energy) func _on_login_success(username: String): # 登录成功后的处理 current_user = username print("用户 ", username, " 登录成功!") # 连接到聊天服务器(在进入游戏界面之前) # 注意:token 已在 AuthScene._on_controller_login_success 中设置 print("🔌 开始连接聊天服务器...") ChatManager.connect_to_chat_server() show_main_game() # 登录成功后隐藏聊天框(需要按Enter才显示) chat_ui.hide_chat() func _on_logout_pressed(): # 登出处理 current_user = "" # 断开聊天服务器连接 print("🔌 断开聊天服务器...") ChatManager.disconnect_from_chat_server() show_auth_scene() # 游戏功能按钮处理 func _on_explore_pressed(): print("探索小镇功能") show_game_message("🗺️ 探索功能开发中...") func _on_inventory_pressed(): print("背包功能") show_game_message("🎒 背包功能开发中...") func _on_shop_pressed(): print("商店功能") show_game_message("🏪 商店功能开发中...") func _on_friends_pressed(): print("好友功能") show_game_message("👥 好友功能开发中...") func show_game_message(message: String): print("游戏消息: ", message) # 这里可以添加UI提示框显示消息 # 处理全局输入 func _input(event): if event.is_action_pressed("ui_cancel"): match current_state: GameState.AUTH: # 在登录界面按ESC退出游戏 get_tree().quit() GameState.MAIN_GAME: # 在游戏中按ESC可能显示菜单或返回登录 show_auth_scene()