~ubuntu-branches/ubuntu/precise/pingus/precise

« back to all changes in this revision

Viewing changes to src/demo_recorder.cxx

  • Committer: Bazaar Package Importer
  • Author(s): Cyril Brulebois
  • Date: 2008-02-28 19:44:25 UTC
  • mfrom: (4.1.4 hardy)
  • Revision ID: james.westby@ubuntu.com-20080228194425-e8ilohlijv02kgcf
Tags: 0.7.2-2
* Fix FTBFS with gcc-4.3 by adding the missing include in
  src/input/evdev_device.cpp (Closes: #462238):
   + debian/patches/20_fix_FTBFS_with_gcc-4.3.
* Rename former patch so that the filename reflects the order in which
  the patches are applied:
   - debian/patches/data_dir.patch
   + debian/patches/10_fix_data_directory.
* Bump Standards-Version from 3.7.2 to 3.7.3, no changes needed.
* Add a dh_desktop call in the arch-dep part of debian/rules.
* Adjust the “missing-dep-for-interpreter guile” override since lintian
  now lists an alternative for that dependency.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
//  $Id: demo_recorder.cxx,v 1.16 2003/04/04 11:23:27 grumbel Exp $
2
 
//
3
 
//  Pingus - A free Lemmings clone
4
 
//  Copyright (C) 2000 Ingo Ruhnke <grumbel@gmx.de>
5
 
//
6
 
//  This program is free software; you can redistribute it and/or
7
 
//  modify it under the terms of the GNU General Public License
8
 
//  as published by the Free Software Foundation; either version 2
9
 
//  of the License, or (at your option) any later version.
10
 
//
11
 
//  This program is distributed in the hope that it will be useful,
12
 
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 
//  GNU General Public License for more details.
15
 
//
16
 
//  You should have received a copy of the GNU General Public License
17
 
//  along with this program; if not, write to the Free Software
18
 
//  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19
 
 
20
 
#include <time.h>
21
 
#include <iostream>
22
 
#include "system.hxx"
23
 
#include "demo_recorder.hxx"
24
 
#include "server.hxx"
25
 
#include "plf.hxx"
26
 
#include "my_gettext.hxx"
27
 
 
28
 
DemoRecorder::DemoRecorder (Server* server)
29
 
  : record_demo (true)
30
 
{
31
 
  std::string levelname = server->get_plf()->get_resname();
32
 
  std::string flat_levelname = levelname;
33
 
 
34
 
  // 'Flatten' the levelname so that we don't need directories
35
 
  for (std::string::iterator i = flat_levelname.begin(); i != flat_levelname.end(); ++i)
36
 
    if (*i == '/')
37
 
      *i = '_';
38
 
 
39
 
  if (!levelname.empty())
40
 
    {
41
 
      std::string filename = System::get_statdir() + "demos/" + flat_levelname + "-" + get_date() + ".xml";
42
 
      out.open(filename.c_str());
43
 
 
44
 
      if (!out)
45
 
        {
46
 
          record_demo = false;
47
 
          std::cout << "DemoRecorder: Error: Couldn't write DemoFile '" << filename 
48
 
                    << "', demo recording will be disabled" << std::endl;
49
 
        }
50
 
      else
51
 
        {
52
 
          std::cout << "DemoRecorder: Writing demo to: " << filename << std::endl;
53
 
          record_demo = true;
54
 
 
55
 
          // Write file header
56
 
          out << "<pingus-demo>\n"
57
 
              << "  <level>" << levelname << "</level>\n"
58
 
              << "  <events>" << std::endl;
59
 
        }
60
 
    }
61
 
  else
62
 
    {
63
 
      record_demo = false;
64
 
      // This point should only be reachable if we have a bug
65
 
      // somewhere or provide a way to get a PLF without using XMLPLF,
66
 
      // since we don't do that, a bug must be somewhere when we reach
67
 
      // this.
68
 
      assert(!"ERROR: DemoRecorder: Couldn't get levelname, please report this as a bug!");
69
 
    }
70
 
}
71
 
 
72
 
DemoRecorder::~DemoRecorder ()
73
 
{
74
 
  if (record_demo)
75
 
    {
76
 
      // Write file footer
77
 
      out << "  </events>\n"
78
 
          << "</pingus-demo>" << std::endl;
79
 
      out.close();
80
 
    }
81
 
}
82
 
 
83
 
void
84
 
DemoRecorder::record_event (const ServerEvent& event)
85
 
{
86
 
  if (record_demo)
87
 
    {
88
 
      event.write_xml(out);  
89
 
      //event.write_xml(std::cout);
90
 
    }
91
 
}
92
 
 
93
 
std::string 
94
 
DemoRecorder::get_date ()
95
 
{
96
 
  char buffer[32];
97
 
  time_t curtime;
98
 
  struct tm *loctime;
99
 
  curtime = time (NULL);
100
 
  loctime = localtime(&curtime);
101
 
  strftime(buffer, 32, "%Y%m%d-%H%M%S", loctime);
102
 
 
103
 
  return std::string(buffer);
104
 
}
105
 
 
106
 
/* EOF */