This commit is contained in:
2026-02-08 16:20:50 +08:00
parent 0ae47e5d6a
commit 8b88904ef7
72 changed files with 5963 additions and 2038 deletions

View File

@@ -0,0 +1,58 @@
#include "TownConfig.h"
#include "Asset/AssetManager.h"
#include "Tool/Tool_String.h"
namespace GlobalTownScript
{
std::map<int, std::string> InitTownLst()
{
std::map<int, std::string> TownList;
ScriptData Data = AssetManager::GetInstance().GetScriptInfo("town/town.lst");
while (!Data.IsEnd())
{
std::string Index = Data.Get();
std::string MonsterPath = std::string("town/") + Tool_toLowerCase(Data.Get());
TownList[std::stoi(Index)] = MonsterPath;
}
return TownList;
}
TownConfig *GetTownConfig(std::string TownPath)
{
TownConfig *Config = new TownConfig();
ScriptData Data = AssetManager::GetInstance().GetScriptInfo(TownPath);
while (!Data.IsEnd())
{
std::string Segment = Data.Get();
if (Segment == "[entering title]")
{
Config->Entering_Title = "sprite/" + Tool_toLowerCase(Data.Get());
}
else if (Segment == "[cutscene image]")
{
Config->Entering_Cutscene = "sprite/" + Tool_toLowerCase(Data.Get());
}
else if (Segment == "[area]")
{
int Index = std::stoi(Data.Get());
std::string MapPath = "map/" + Tool_toLowerCase(Data.Get());
std::string TypeBuffer = Data.Get();
std::string Type = TypeBuffer.substr(1, TypeBuffer.size() - 2);
int GenerateXPos = -1;
int GenerateYPos = -1;
if (Type == "gate")
{
GenerateXPos = std::stoi(Data.Get());
GenerateYPos = std::stoi(Data.Get());
}
Config->AreaLst[Index] = AreaConfig{MapPath, Type, GenerateXPos, GenerateYPos};
}
else if (Segment == "[name]")
{
Config->TownName = Data.Get();
}
}
return Config;
}
}

View File

@@ -0,0 +1,41 @@
#pragma once
#include <string>
#include <vector>
#include <map>
namespace GlobalTownScript
{
struct AreaConfig
{
/**地图路径 */
std::string MapPath;
/**地图类型 */
std::string MapType;
/**生成坐标X */
int GenerateXPos = 0;
/**生成坐标Y */
int GenerateYPos = 0;
};
/**城镇配置 */
struct TownConfig
{
/**城镇名称 */
std::string TownName;
/**进入城镇时的标题Img */
std::string Entering_Title;
/**进入城镇时的过场Img */
std::string Entering_Cutscene;
/**需要的任务进入条件 */
int NeedQuestID = -1;
/**需要的等级进入条件 */
int NeedLevel = -1;
/**区域 */
std::map<int, AreaConfig> AreaLst;
};
// 读取城镇列表
std::map<int, std::string> InitTownLst();
// 读取城镇配置
TownConfig *GetTownConfig(std::string TownPath);
}