pingus-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pingus-CVS] CVS: Games/Pingus/src demo_recorder.cxx,1.8,1.9 demo_record


From: grumbel
Subject: [Pingus-CVS] CVS: Games/Pingus/src demo_recorder.cxx,1.8,1.9 demo_recorder.hxx,1.7,1.8
Date: 7 Oct 2002 12:25:10 -0000

Update of /usr/local/cvsroot/Games/Pingus/src
In directory dark:/tmp/cvs-serv4314

Modified Files:
        demo_recorder.cxx demo_recorder.hxx 
Log Message:
- made error handling a bit better

Index: demo_recorder.cxx
===================================================================
RCS file: /usr/local/cvsroot/Games/Pingus/src/demo_recorder.cxx,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- demo_recorder.cxx   6 Oct 2002 19:20:14 -0000       1.8
+++ demo_recorder.cxx   7 Oct 2002 12:25:07 -0000       1.9
@@ -34,6 +34,7 @@
 using namespace std;
 
 DemoRecorder::DemoRecorder(Server* server)
+  : record_demo (true)
 {
   std::string levelname = server->get_plf()->get_filename();
 
@@ -45,33 +46,50 @@
 
       if (!out)
        {
-         assert(!"DemoRecorder: Couldn't write DemoFile");
+          record_demo = false;
+
+         std::cout << "DemoRecorder: Error: Couldn't write DemoFile, demo 
recording will be disabled" << std::endl;
        }
-      
-      // Write file header
-      out << "<pingus-demo>\n"
-         << "  <level>" << levelname << "</level>\n"
-         << "  <events>" << std::endl;
+      else
+        {
+          record_demo = true;
+
+          // Write file header
+          out << "<pingus-demo>\n"
+              << "  <level>" << levelname << "</level>\n"
+              << "  <events>" << std::endl;
+        }
     }
   else
     {
-      assert(!"DemoRecorder Couldn't get levelname");
+      record_demo = false;
+      // This point should only be reachable if we have a bug
+      // somewhere or provide a way to get a PLF without using XMLPLF,
+      // since we don't do that, a bug must be somewhere when we reach
+      // this.
+      assert(!"ERROR: DemoRecorder: Couldn't get levelname, please report this 
as a bug!");
     }
 }
 
 DemoRecorder::~DemoRecorder()
 {
-  // Write file footer
-  out << "  </events>\n"
-      << "</pingus-demo>" << std::endl;
-  out.close();
+  if (record_demo)
+    {
+      // Write file footer
+      out << "  </events>\n"
+          << "</pingus-demo>" << std::endl;
+      out.close();
+    }
 }
 
 void
 DemoRecorder::record_event (const ServerEvent& event)
 {
-  event.write_xml(out);  
-  event.write_xml(std::cout);
+  if (record_demo)
+    {
+      event.write_xml(out);  
+      event.write_xml(std::cout);
+    }
 }
 
 string 
@@ -82,7 +100,7 @@
   struct tm *loctime;
   curtime = time (NULL);
   loctime = localtime(&curtime);
-  strftime(buffer, 32, "%Y-%m-%d_%H%M%S", loctime);
+  strftime(buffer, 32, "%Y%m%d-%H%M%S", loctime);
 
   return string(buffer);
 }

Index: demo_recorder.hxx
===================================================================
RCS file: /usr/local/cvsroot/Games/Pingus/src/demo_recorder.hxx,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- demo_recorder.hxx   3 Oct 2002 12:33:08 -0000       1.7
+++ demo_recorder.hxx   7 Oct 2002 12:25:07 -0000       1.8
@@ -30,6 +30,10 @@
 class DemoRecorder
 {
 private:
+  /** Set to true to record a demo, set to false to ignore
+      record_event() messages */
+  bool record_demo;
+
   /** Stream to which the events are written */
   std::ofstream out;
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]