feat: 添加游戏核心模块,包括地图、角色、场景和世界管理

实现游戏基础架构,包含以下主要功能:
- 地图系统:支持地图加载、图层管理和相机控制
- 角色系统:实现角色装备、动画和行为管理
- 场景系统:提供测试场景和世界场景切换
- 世界管理:处理城镇和区域切换逻辑
- 数据加载:添加角色和装备配置加载器

这些改动为游戏开发奠定了基础框架,支持后续功能扩展
This commit is contained in:
2026-04-02 23:32:44 +08:00
parent ec16aeffa6
commit b5c432e77a
23 changed files with 934 additions and 26 deletions

View File

@@ -0,0 +1,63 @@
#include "scene/GameMapTestScene.h"
#include <SDL2/SDL.h>
namespace frostbite2D {
namespace {
constexpr char kTestMapPath[] = "map/elvengard/elvengard.map";
} // namespace
GameMapTestScene::GameMapTestScene() = default;
void GameMapTestScene::onEnter() {
Scene::onEnter();
if (initialized_) {
return;
}
map_ = MakePtr<GameMap>();
if (!map_->LoadMap(kTestMapPath)) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
"GameMapTestScene: failed to load map %s", kTestMapPath);
map_.Reset();
return;
}
AddChild(map_);
character_ = MakePtr<CharacterObject>();
if (!character_->Construction(0)) {
SDL_LogWarn(SDL_LOG_CATEGORY_APPLICATION,
"GameMapTestScene: failed to construct default character");
character_.Reset();
} else {
Vec2 spawnPos = map_->ClampCameraFocus(map_->GetDefaultCameraFocus(), 1.2f);
character_->SetCharacterPosition(spawnPos);
map_->AddObject(character_);
}
cameraController_.SetMap(map_.Get());
cameraController_.SetZoom(1.2f);
cameraController_.SetTarget(character_.Get());
cameraController_.SetDebugEnabled(false);
if (character_) {
cameraController_.SetFocus(character_->GetPosition());
} else {
cameraController_.ClearTarget();
cameraController_.SnapToDefaultFocus();
}
map_->Enter();
initialized_ = true;
}
void GameMapTestScene::onExit() {
Scene::onExit();
}
void GameMapTestScene::Update(float deltaTime) {
Scene::Update(deltaTime);
cameraController_.Update(deltaTime);
}
} // namespace frostbite2D