新增GameMap和GameTown类实现游戏地图和城镇的核心功能 添加GameWorld作为游戏世界管理器处理场景切换 完善音频系统支持从路径加载音乐和音效 重构PVF资源系统增加路径规范化功能 添加.gitignore排除游戏资源目录
77 lines
1.7 KiB
C++
77 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include <frostbite2D/types/type_math.h>
|
|
#include <map>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace frostbite2D::game {
|
|
|
|
struct AreaConfig {
|
|
std::string mapPath;
|
|
std::string mapType;
|
|
Vec2 generatePos = Vec2(-1.0f, -1.0f);
|
|
};
|
|
|
|
struct TownConfig {
|
|
std::string townName;
|
|
std::string enteringTitle;
|
|
std::string enteringCutscene;
|
|
int needQuestId = -1;
|
|
int needLevel = -1;
|
|
std::map<int, AreaConfig> areas;
|
|
};
|
|
|
|
struct BackgroundAnimationConfig {
|
|
std::string filename;
|
|
std::string layer;
|
|
std::string order;
|
|
};
|
|
|
|
struct MapAnimationConfig {
|
|
std::string filename;
|
|
std::string layer;
|
|
int xPos = 0;
|
|
int yPos = 0;
|
|
int zPos = 0;
|
|
};
|
|
|
|
struct MoveAreaTarget {
|
|
int town = -2;
|
|
int area = -2;
|
|
};
|
|
|
|
struct TileInfo {
|
|
std::string spritePath;
|
|
int spriteIndex = 0;
|
|
int imgPos = 0;
|
|
};
|
|
|
|
struct MapConfig {
|
|
std::string name;
|
|
std::string mapPath;
|
|
std::string mapDir;
|
|
int backgroundPos = 0;
|
|
int farSightScroll = 100;
|
|
bool hasCameraLimit = false;
|
|
int cameraLimitMinX = -1;
|
|
int cameraLimitMaxX = -1;
|
|
int cameraLimitMinY = -1;
|
|
int cameraLimitMaxY = -1;
|
|
std::vector<std::string> tilePaths;
|
|
std::vector<std::string> extendedTilePaths;
|
|
std::vector<BackgroundAnimationConfig> backgroundAnimations;
|
|
std::vector<MapAnimationConfig> mapAnimations;
|
|
std::vector<std::string> soundIds;
|
|
std::vector<Rect> virtualMovableAreas;
|
|
std::vector<Rect> townMovableAreas;
|
|
std::vector<MoveAreaTarget> townMovableAreaTargets;
|
|
};
|
|
|
|
std::map<int, std::string> loadTownList();
|
|
bool loadTownConfig(const std::string& townPath, TownConfig& outConfig);
|
|
bool loadMapConfig(const std::string& mapPath, MapConfig& outConfig);
|
|
bool loadTileInfo(const std::string& path, TileInfo& outInfo);
|
|
|
|
} // namespace frostbite2D::game
|