Files
Frostbite2D/Game/include/world/GameWorld.h
Lenheart 6cd1b42fef feat(地图系统): 实现角色移动约束和地图切换功能
添加地图移动区域检测和角色移动约束逻辑
引入地图切换请求队列机制,支持延迟处理角色传送
在CharacterObject中实现地图边界检测和位置约束应用
2026-04-05 12:04:07 +08:00

44 lines
980 B
C++

#pragma once
#include "world/GameTown.h"
#include <frostbite2D/scene/scene.h>
#include <map>
#include <optional>
namespace frostbite2D {
class GameWorld : public Scene {
public:
GameWorld();
~GameWorld() override = default;
void onEnter() override;
void onExit() override;
void Update(float deltaTime) override;
void AddCharacter(RefPtr<Actor> actor, int townId);
void MoveCharacter(RefPtr<Actor> actor, int townId, int area);
void RequestMoveCharacter(RefPtr<Actor> actor, int townId, int area);
static GameWorld* GetWorld();
private:
struct PendingCharacterMove {
RefPtr<Actor> actor;
int townId = -1;
int area = -1;
};
bool InitWorld();
void ProcessPendingCharacterMove();
std::map<int, std::string> townPathMap_;
std::map<int, RefPtr<GameTown>> townMap_;
RefPtr<Actor> mainActor_;
std::optional<PendingCharacterMove> pendingCharacterMove_;
int curTown_ = -1;
bool initialized_ = false;
};
} // namespace frostbite2D