Fixed %lvl% in saved games, closes #586
parent
8ff6fadb75
commit
39d2236be6
|
@ -52,26 +52,20 @@ CLevelParser::CLevelParser()
|
|||
}
|
||||
|
||||
CLevelParser::CLevelParser(std::string filename)
|
||||
: CLevelParser()
|
||||
{
|
||||
m_filename = filename;
|
||||
|
||||
m_pathCat = "";
|
||||
m_pathChap = "";
|
||||
m_pathLvl = "";
|
||||
}
|
||||
|
||||
CLevelParser::CLevelParser(std::string category, int chapter, int rank)
|
||||
{
|
||||
m_filename = BuildScenePath(category, chapter, rank);
|
||||
|
||||
m_pathCat = BuildCategoryPath(category);
|
||||
m_pathChap = BuildScenePath(category, chapter, 0, false);
|
||||
m_pathLvl = BuildScenePath(category, chapter, rank, false);
|
||||
}
|
||||
: CLevelParser(BuildScenePath(category, chapter, rank))
|
||||
{}
|
||||
|
||||
CLevelParser::CLevelParser(LevelCategory category, int chapter, int rank)
|
||||
: CLevelParser(GetLevelCategoryDir(category), chapter, rank)
|
||||
{}
|
||||
{
|
||||
SetLevelPaths(category, chapter, rank);
|
||||
}
|
||||
|
||||
std::string CLevelParser::BuildCategoryPath(std::string category)
|
||||
{
|
||||
|
@ -320,6 +314,13 @@ void CLevelParser::Save()
|
|||
file.close();
|
||||
}
|
||||
|
||||
void CLevelParser::SetLevelPaths(LevelCategory category, int chapter, int rank)
|
||||
{
|
||||
m_pathCat = BuildCategoryPath(category);
|
||||
m_pathChap = chapter != 0 ? BuildScenePath(category, chapter, 0, false) : "";
|
||||
m_pathLvl = chapter != 0 && rank != 0 ? BuildScenePath(category, chapter, rank, false) : "";
|
||||
}
|
||||
|
||||
std::string CLevelParser::InjectLevelPaths(const std::string& path, const std::string& defaultDir)
|
||||
{
|
||||
std::string newPath = path;
|
||||
|
|
|
@ -69,6 +69,8 @@ public:
|
|||
//! Save file
|
||||
void Save();
|
||||
|
||||
//! Configure level paths for the given level
|
||||
void SetLevelPaths(LevelCategory category, int chapter = 0, int rank = 0);
|
||||
//! Inject %something% paths
|
||||
std::string InjectLevelPaths(const std::string& path, const std::string& defaultDir = "");
|
||||
|
||||
|
@ -102,6 +104,7 @@ private:
|
|||
inline std::string InjectLevelPathsForCurrentLevel(const std::string& path, const std::string& defaultDir = "")
|
||||
{
|
||||
CRobotMain* main = CRobotMain::GetInstancePointer();
|
||||
auto levelParser = MakeUnique<CLevelParser>(main->GetLevelCategory(), main->GetLevelChap(), main->GetLevelRank());
|
||||
auto levelParser = MakeUnique<CLevelParser>();
|
||||
levelParser->SetLevelPaths(main->GetLevelCategory(), main->GetLevelChap(), main->GetLevelRank());
|
||||
return levelParser->InjectLevelPaths(path, defaultDir);
|
||||
}
|
||||
|
|
|
@ -4740,6 +4740,7 @@ CObject* CRobotMain::IOReadScene(std::string filename, std::string filecbot)
|
|||
std::string dirname = filename.substr(0, filename.find_last_of("/"));
|
||||
|
||||
CLevelParser levelParser(filename);
|
||||
levelParser.SetLevelPaths(m_levelCategory, m_levelChap, m_levelRank);
|
||||
levelParser.Load();
|
||||
int numObjects = levelParser.CountLines("CreateObject") + levelParser.CountLines("CreatePower") + levelParser.CountLines("CreateFret");
|
||||
|
||||
|
|
Loading…
Reference in New Issue