[colobot] 287/390: Added CLevelParser in one more place

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 8cc74002cfbf3ecd8f36b2ffe117a3945bd51779
Author: krzys-h <krzys_h at interia.pl>
Date:   Sun Mar 22 14:29:03 2015 +0100

    Added CLevelParser in one more place
    
    Not sure how I missed that earlier
---
 src/ui/maindialog.cpp | 54 ++++++++++++++-------------------------------------
 1 file changed, 15 insertions(+), 39 deletions(-)

diff --git a/src/ui/maindialog.cpp b/src/ui/maindialog.cpp
index 75cfe48..be66d15 100644
--- a/src/ui/maindialog.cpp
+++ b/src/ui/maindialog.cpp
@@ -64,6 +64,7 @@
 #include <sstream>
 #include <iomanip>
 #include <vector>
+#include <boost/lexical_cast.hpp>
 
 //TODO Get rid of all sprintf's
 
@@ -3967,59 +3968,34 @@ void CMainDialog::IOReadName()
 {
     CWindow*    pw;
     CEdit*      pe;
-    std::string filename;
-    char        op[100];
-    char        op_i18n[100];
-    char        line[500];
-    char        resume[100];
+    std::string resume;
+    char        line[100];
     char        name[100];
     time_t      now;
-    int         i;
 
     pw = static_cast<CWindow*>(m_interface->SearchControl(EVENT_WINDOW5));
     if ( pw == nullptr )  return;
     pe = static_cast<CEdit*>(pw->SearchControl(EVENT_INTERFACE_IONAME));
     if ( pe == nullptr )  return;
 
-    //TODO: CLevelParser
-    sprintf(resume, "%s %d", m_sceneName, m_chap[m_index]+1);
-    BuildScenePath(filename, m_sceneName, (m_chap[m_index]+1)*100);
-    sprintf(op, "Title.E");
-    sprintf(op_i18n, "Title.%c", m_app->GetLanguageChar() );
+    resume = std::string(m_sceneName) + " " + boost::lexical_cast<std::string>(m_chap[m_index]+1);
 
-    CInputStream stream;
-    stream.open(filename);
-    
-    if (stream.is_open())
+    CLevelParser* level = new CLevelParser(m_sceneName, m_chap[m_index]+1, 0);
+    try
     {
-        while (stream.getline(line, 500))
-        {
-            for ( i=0 ; i<500 ; i++ )
-            {
-                if ( line[i] == '\t' )  line[i] = ' ';  // replaces tab by space
-                if ( line[i] == '/' && line[i+1] == '/' )
-                {
-                    line[i] = 0;
-                    break;
-                }
-            }
-
-            if ( Cmd(line, op) )
-            {
-                OpString(line, "resume", resume);
-            }
-            if ( Cmd(line, op_i18n) )
-            {
-                OpString(line, "resume", resume);
-                break;
-            }
-        }
-        stream.close();
+        level->Load();
+        resume = level->Get("Title")->GetParam("resume")->AsString();
+    }
+    catch(CLevelParserException& e)
+    {
+        CLogger::GetInstancePointer()->Warn("%s\n", e.what());
     }
 
     time(&now);
     TimeToAsciiClean(now, line);
-    sprintf(name, "%s - %s %d", line, resume, m_sel[m_index]+1);
+    sprintf(name, "%s - %s %d", line, resume.c_str(), m_sel[m_index]+1);
+    delete level;
+
     pe->SetText(name);
     pe->SetCursor(strlen(name), 0);
     pe->SetFocus(true);

-- 
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