forked from moyin/whale-town-front
chore:完善项目目录结构和基础框架
- 添加核心系统框架目录结构 - 创建游戏模块化组织架构 - 添加数据配置和本地化支持 - 建立脚本分类管理体系 - 创建场景预制件管理目录
This commit is contained in:
50
core/managers/GameManager.gd
Normal file
50
core/managers/GameManager.gd
Normal file
@@ -0,0 +1,50 @@
|
||||
extends Node
|
||||
|
||||
# 游戏管理器 - 全局游戏状态管理
|
||||
# 单例模式,管理游戏的整体状态和生命周期
|
||||
|
||||
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)
|
||||
|
||||
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)
|
||||
|
||||
func get_current_state() -> GameState:
|
||||
return current_state
|
||||
|
||||
func get_previous_state() -> GameState:
|
||||
return previous_state
|
||||
|
||||
func set_current_user(username: String):
|
||||
current_user = username
|
||||
print("当前用户设置为: ", username)
|
||||
|
||||
func get_current_user() -> String:
|
||||
return current_user
|
||||
|
||||
func is_user_logged_in() -> bool:
|
||||
return not current_user.is_empty()
|
||||
1
core/managers/GameManager.gd.uid
Normal file
1
core/managers/GameManager.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://c6bl6k5kkfah6
|
||||
75
core/managers/SceneManager.gd
Normal file
75
core/managers/SceneManager.gd
Normal file
@@ -0,0 +1,75 @@
|
||||
extends Node
|
||||
|
||||
# 场景管理器 - 负责场景切换和管理
|
||||
# 提供场景切换的统一接口
|
||||
|
||||
signal scene_changed(scene_name: String)
|
||||
signal scene_change_started(scene_name: String)
|
||||
|
||||
var current_scene_name: String = ""
|
||||
var is_changing_scene: bool = false
|
||||
|
||||
# 场景路径映射
|
||||
var scene_paths: Dictionary = {
|
||||
"main": "res://scenes/main_scene.tscn",
|
||||
"auth": "res://scenes/auth_scene.tscn",
|
||||
"game": "res://scenes/game_scene.tscn",
|
||||
"battle": "res://scenes/battle_scene.tscn",
|
||||
"inventory": "res://scenes/inventory_scene.tscn",
|
||||
"shop": "res://scenes/shop_scene.tscn",
|
||||
"settings": "res://scenes/settings_scene.tscn"
|
||||
}
|
||||
|
||||
func _ready():
|
||||
print("SceneManager 初始化完成")
|
||||
|
||||
func change_scene(scene_name: String, use_transition: bool = true):
|
||||
if is_changing_scene:
|
||||
print("场景切换中,忽略新的切换请求")
|
||||
return false
|
||||
|
||||
if not scene_paths.has(scene_name):
|
||||
print("错误: 未找到场景 ", scene_name)
|
||||
return false
|
||||
|
||||
var scene_path = scene_paths[scene_name]
|
||||
print("开始切换场景: ", current_scene_name, " -> ", scene_name)
|
||||
|
||||
is_changing_scene = true
|
||||
scene_change_started.emit(scene_name)
|
||||
|
||||
if use_transition:
|
||||
await show_transition()
|
||||
|
||||
var error = get_tree().change_scene_to_file(scene_path)
|
||||
if error != OK:
|
||||
print("场景切换失败: ", error)
|
||||
is_changing_scene = false
|
||||
return false
|
||||
|
||||
current_scene_name = scene_name
|
||||
is_changing_scene = false
|
||||
scene_changed.emit(scene_name)
|
||||
|
||||
if use_transition:
|
||||
await hide_transition()
|
||||
|
||||
print("场景切换完成: ", scene_name)
|
||||
return true
|
||||
|
||||
func get_current_scene_name() -> String:
|
||||
return current_scene_name
|
||||
|
||||
func register_scene(scene_name: String, scene_path: String):
|
||||
scene_paths[scene_name] = scene_path
|
||||
print("注册场景: ", scene_name, " -> ", scene_path)
|
||||
|
||||
func show_transition():
|
||||
# TODO: 实现场景切换过渡效果
|
||||
print("显示场景切换过渡效果")
|
||||
await get_tree().create_timer(0.2).timeout
|
||||
|
||||
func hide_transition():
|
||||
# TODO: 隐藏场景切换过渡效果
|
||||
print("隐藏场景切换过渡效果")
|
||||
await get_tree().create_timer(0.2).timeout
|
||||
1
core/managers/SceneManager.gd.uid
Normal file
1
core/managers/SceneManager.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bf5bmaqwstpuq
|
||||
Reference in New Issue
Block a user