extends Control

# 场景节点引用
@onready var auth_scene: Control = $AuthScene
@onready var main_game_ui: Control = $MainGameUI
@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, " 登录成功！")
	show_main_game()

func _on_logout_pressed():
	# 登出处理
	current_user = ""
	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()
