[colobot] 284/390: Implemented %cat%

Didier Raboud odyx at moszumanska.debian.org
Fri Jun 12 14:21:55 UTC 2015


This is an automated email from the git hooks/post-receive script.

odyx pushed a commit to branch upstream/latest
in repository colobot.

commit d2d0886b769d4561628ed009caa056bb8234a0ba
Author: krzys-h <krzys_h at interia.pl>
Date:   Sun Mar 22 13:51:14 2015 +0100

    Implemented %cat%
    
    and renamed BuildSceneName to BuildScenePath
---
 src/common/pathman.cpp      |  8 ++++----
 src/object/level/parser.cpp | 25 +++++++++++++++++++------
 src/object/level/parser.h   |  4 +++-
 src/object/robotmain.cpp    |  4 ++--
 src/object/robotmain.h      |  2 +-
 src/ui/maindialog.cpp       |  6 +++---
 src/ui/maindialog.h         |  2 +-
 7 files changed, 33 insertions(+), 18 deletions(-)

diff --git a/src/common/pathman.cpp b/src/common/pathman.cpp
index 51e7e7d..2fbb35f 100644
--- a/src/common/pathman.cpp
+++ b/src/common/pathman.cpp
@@ -172,16 +172,16 @@ void CPathManager::LoadModsFromDir(const std::string &dir)
 std::string CPathManager::InjectLevelDir(std::string path, const std::string& defaultDir)
 {
     std::string newPath = path;
-    std::string lvlDir = CLevelParser::BuildSceneName(CRobotMain::GetInstancePointer()->GetSceneName(), CRobotMain::GetInstancePointer()->GetSceneRank()/100, CRobotMain::GetInstancePointer()->GetSceneRank()%100, false);
+    std::string lvlDir = CLevelParser::BuildScenePath(CRobotMain::GetInstancePointer()->GetSceneName(), CRobotMain::GetInstancePointer()->GetSceneRank()/100, CRobotMain::GetInstancePointer()->GetSceneRank()%100, false);
     boost::replace_all(newPath, "%lvl%", lvlDir);
-    std::string chapDir = CLevelParser::BuildSceneName(CRobotMain::GetInstancePointer()->GetSceneName(), CRobotMain::GetInstancePointer()->GetSceneRank()/100, 0, false);
+    std::string chapDir = CLevelParser::BuildScenePath(CRobotMain::GetInstancePointer()->GetSceneName(), CRobotMain::GetInstancePointer()->GetSceneRank()/100, 0, false);
     boost::replace_all(newPath, "%chap%", chapDir);
+    std::string catDir = CLevelParser::BuildCategoryPath(CRobotMain::GetInstancePointer()->GetSceneName());
+    boost::replace_all(newPath, "%cat%", catDir);
     if(newPath == path && !path.empty())
     {
         newPath = defaultDir + (!defaultDir.empty() ? "/" : "") + newPath;
     }
-
-    //TODO: %cat%
     
     std::string langPath = newPath;
     std::string langStr(1, CApplication::GetInstancePointer()->GetLanguageChar());
diff --git a/src/object/level/parser.cpp b/src/object/level/parser.cpp
index 7c612af..5b36f46 100644
--- a/src/object/level/parser.cpp
+++ b/src/object/level/parser.cpp
@@ -51,7 +51,7 @@ CLevelParser::CLevelParser(std::string filename)
 
 CLevelParser::CLevelParser(std::string category, int chapter, int rank)
 {
-    m_filename = BuildSceneName(category, chapter, rank);
+    m_filename = BuildScenePath(category, chapter, rank);
 }
 
 CLevelParser::~CLevelParser()
@@ -62,12 +62,27 @@ CLevelParser::~CLevelParser()
     }
 }
 
-std::string CLevelParser::BuildSceneName(std::string category, int chapter, int rank, bool sceneFile)
+std::string CLevelParser::BuildCategoryPath(std::string category)
 {
     std::ostringstream outstream;
+    outstream << "levels/";
+    if(category == "perso" || category == "win" || category == "lost")
+    {
+        outstream << "other/";
+    }
+    else
+    {
+        outstream << category << "/";
+    }
+    return outstream.str();
+}
+
+std::string CLevelParser::BuildScenePath(std::string category, int chapter, int rank, bool sceneFile)
+{
+    std::ostringstream outstream;
+    outstream << BuildCategoryPath(category);
     if(category == "custom")
     {
-        outstream << "levels/custom/";
         outstream << CRobotMain::GetInstancePointer()->GetUserLevelName(chapter);
         if(rank == 000)
         {
@@ -87,16 +102,14 @@ std::string CLevelParser::BuildSceneName(std::string category, int chapter, int
     }
     else if(category == "perso")
     {
-        outstream << "levels/other/perso.txt";
+        outstream << "perso.txt";
     }
     else if(category == "win" || category == "lost")
     {
-        outstream << "levels/other/";
         outstream << category << std::setfill('0') << std::setw(3) << chapter*100+rank << ".txt";
     }
     else
     {
-        outstream << "levels/" << category << "/";
         outstream << "chapter" << std::setfill('0') << std::setw(3) << chapter;
         if(rank == 000)
         {
diff --git a/src/object/level/parser.h b/src/object/level/parser.h
index e0458b5..fc3b99f 100644
--- a/src/object/level/parser.h
+++ b/src/object/level/parser.h
@@ -43,8 +43,10 @@ public:
     
     ~CLevelParser();
     
+    //! Build category path
+    static std::string BuildCategoryPath(std::string category);
     //! Build level filename
-    static std::string BuildSceneName(std::string category, int chapter, int rank, bool sceneFile = true);
+    static std::string BuildScenePath(std::string category, int chapter, int rank, bool sceneFile = true);
     
     //! Check if level file exists
     bool Exists();
diff --git a/src/object/robotmain.cpp b/src/object/robotmain.cpp
index caee647..2ff278c 100644
--- a/src/object/robotmain.cpp
+++ b/src/object/robotmain.cpp
@@ -5850,9 +5850,9 @@ int CRobotMain::GetSceneRank()
     return m_dialog->GetSceneRank();
 }
 
-void CRobotMain::BuildSceneName(std::string &filename, char *base, int rank, bool sceneFile)
+void CRobotMain::BuildScenePath(std::string &filename, char *base, int rank, bool sceneFile)
 {
-    m_dialog->BuildSceneName(filename, base, rank, sceneFile);
+    m_dialog->BuildScenePath(filename, base, rank, sceneFile);
 }
 
 
diff --git a/src/object/robotmain.h b/src/object/robotmain.h
index 9c4281c..e1be529 100644
--- a/src/object/robotmain.h
+++ b/src/object/robotmain.h
@@ -293,7 +293,7 @@ public:
     float       GetPersoAngle();
     char*       GetSceneName();
     int         GetSceneRank();
-    void        BuildSceneName(std::string &filename, char *base, int rank, bool sceneFile = true);
+    void        BuildScenePath(std::string &filename, char *base, int rank, bool sceneFile = true);
 
     void        StartMusic();
     void        StartPauseMusic(PauseType pause);
diff --git a/src/ui/maindialog.cpp b/src/ui/maindialog.cpp
index aeccc0f..75cfe48 100644
--- a/src/ui/maindialog.cpp
+++ b/src/ui/maindialog.cpp
@@ -3339,13 +3339,13 @@ void CMainDialog::NiceParticle(Math::Point mouse, bool bPress)
 
 // Builds the file name of a mission.
 
-void CMainDialog::BuildSceneName(std::string &filename, char *base, int rank, bool sceneFile)
+void CMainDialog::BuildScenePath(std::string &filename, char *base, int rank, bool sceneFile)
 {
     //TODO: Support for more than 9 chapters
     int chapter = rank/100;
     int new_rank = rank%100;
     
-    filename = CLevelParser::BuildSceneName(std::string(base), chapter, new_rank, sceneFile);
+    filename = CLevelParser::BuildScenePath(std::string(base), chapter, new_rank, sceneFile);
 }
 
 // Built the default descriptive name of a mission.
@@ -3983,7 +3983,7 @@ void CMainDialog::IOReadName()
 
     //TODO: CLevelParser
     sprintf(resume, "%s %d", m_sceneName, m_chap[m_index]+1);
-    BuildSceneName(filename, m_sceneName, (m_chap[m_index]+1)*100);
+    BuildScenePath(filename, m_sceneName, (m_chap[m_index]+1)*100);
     sprintf(op, "Title.E");
     sprintf(op_i18n, "Title.%c", m_app->GetLanguageChar() );
 
diff --git a/src/ui/maindialog.h b/src/ui/maindialog.h
index 9d69e59..402b852 100644
--- a/src/ui/maindialog.h
+++ b/src/ui/maindialog.h
@@ -98,7 +98,7 @@ public:
     bool    GetNiceReset();
     bool    GetHimselfDamage();
 
-    void          BuildSceneName(std::string &filename, char *base, int rank, bool sceneFile = true);
+    void          BuildScenePath(std::string &filename, char *base, int rank, bool sceneFile = true);
     void          BuildResumeName(char *filename, char *base, int rank);
     std::string & GetFilesDir();
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/colobot.git



More information about the Pkg-games-commits mailing list