- 移除SocketIOClient.gd及.uid文件 - 更新ChatManager以适配新的架构 - 添加认证UI图片资源和背景音乐 - 优化AuthScene布局和配置 - 更新MainScene和项目配置
143 lines
4.8 KiB
GDScript
143 lines
4.8 KiB
GDScript
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()
|