/* $Id$
-This file is part of the MSP Märklin suite
+This file is part of R²C²
Copyright © 2006-2010 Mikkosoft Productions, Mikko Rasa
Distributed under the GPL
*/
#include <signal.h>
#include <msp/core/except.h>
#include <msp/fs/stat.h>
+#include <msp/fs/utils.h>
#include <msp/gbase/display.h>
#include <msp/gbase/window.h>
#include <msp/gl/blend.h>
#include <msp/strings/formatter.h>
#include <msp/time/units.h>
#include <msp/time/utils.h>
-#include "libmarklin/driver.h"
-#include "libmarklin/tracktype.h"
+#include "libr2c2/driver.h"
+#include "libr2c2/tracktype.h"
#include "3d/path.h"
#include "3d/track.h"
#include "3d/vehicle.h"
#include "trainview.h"
using namespace std;
-using namespace Marklin;
+using namespace R2C2;
using namespace Msp;
Application::RegApp<Engineer> Engineer::reg;
window.set_title("Railroad Engineer");
window.signal_close.connect(sigc::bind(sigc::mem_fun(this, &Engineer::exit), 0));
- DataFile::load(ui_res, "marklin.res");
+ DataFile::load(ui_res, "r2c2.res");
root = new GLtk::Root(ui_res, window);
root->signal_button_press.connect(sigc::mem_fun(this, &Engineer::button_press));
root->signal_pointer_motion.connect(sigc::mem_fun(this, &Engineer::pointer_motion));
layout.get_driver().flush();
if(!options.simulate)
- layout.save_trains(options.state_fn);
+ {
+ layout.save_dynamic(options.state_fn+".tmp");
+ FS::rename(options.state_fn+".tmp", options.state_fn);
+ }
delete overlay;
delete root;
GL::PushMatrix push_mat;
float rot = picking_track->get_endpoint_direction(picking_entry);
- Point pos = picking_track->get_endpoint_position(picking_entry);
+ Vector pos = picking_track->get_endpoint_position(picking_entry);
GL::translate(pos.x, pos.y, pos.z+0.03);
GL::rotate(rot*180/M_PI+180, 0, 0, 1);
float max_y = 0;
for(Layout3D::TrackMap::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
{
- Point minp, maxp;
+ Vector minp, maxp;
i->second->get_bounds(angle, minp, maxp);
min_x = min(min_x, minp.x);
max_x = max(max_x, maxp.x);