/* $Id$
This file is part of the MSP Märklin suite
-Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa
+Copyright © 2006-2010 Mikkosoft Productions, Mikko Rasa
Distributed under the GPL
*/
#include <msp/datafile/loader.h>
#include "endpoint.h"
+#include "geometry.h"
namespace Marklin {
-struct TrackPart
+class TrackPart
{
- class Loader: public Msp::DataFile::Loader
+public:
+ class Loader: public Msp::DataFile::BasicLoader<TrackPart>
{
- private:
- TrackPart ∂
-
public:
Loader(TrackPart &);
- TrackPart &get_object() { return part; }
private:
virtual void finish();
-
void start(float, float, float);
};
- float x, y;
- float dir;
- float length;
- float radius;
- unsigned route;
- bool dead_end;
+private:
+ Point pos;
+ float dir;
+ float length;
+ float radius;
+ unsigned path;
+ bool dead_end;
+ TrackPart *links[2];
+public:
TrackPart();
- void collect_endpoints(std::vector<Endpoint> &);
+ float get_length() const;
+ bool is_curved() const { return radius; }
+ TrackPoint get_point(float) const;
+ unsigned get_path() const { return path; }
+ bool is_dead_end() const { return dead_end; }
+ void check_link(TrackPart &);
+ TrackPart *get_link(unsigned) const;
};
} // namespace Marklin