From 31ae5ef6b4cc421950368ee202163dcbedf8e54f Mon Sep 17 00:00:00 2001 From: Nick Gasson Date: Sun, 27 Jun 2010 13:59:49 +0100 Subject: [PATCH] Load GenTrack segments from XML --- schemas/map.xsd | 19 +++++++++++++++++++ src/GenTrack.cpp | 7 ++++++- src/Map.cpp | 23 +++++++++++++++++++++-- 3 files changed, 46 insertions(+), 3 deletions(-) diff --git a/schemas/map.xsd b/schemas/map.xsd index 41795fe..9b56d7b 100644 --- a/schemas/map.xsd +++ b/schemas/map.xsd @@ -80,6 +80,25 @@ + + + + + + + + + + + + + diff --git a/src/GenTrack.cpp b/src/GenTrack.cpp index c9cfb8f..7ad3e31 100644 --- a/src/GenTrack.cpp +++ b/src/GenTrack.cpp @@ -58,7 +58,12 @@ GenTrack::GenTrack(Vector delta, track::Direction entry_dir, track::Direction exit_dir) { - + const float deltaX = static_cast(delta.x); + const float deltaZ = static_cast(delta.y); + + Vector p1 = make_vector(0.0f, 0.0f, 0.0f); + + Vector p4 = make_vector(deltaX, 0.0f, deltaZ); } void GenTrack::merge(IMeshBufferPtr buf) const diff --git a/src/Map.cpp b/src/Map.cpp index c6182c1..380d828 100644 --- a/src/Map.cpp +++ b/src/Map.cpp @@ -382,8 +382,6 @@ void Map::set_start(int x, int y, int dirX, int dirY) { start_location = make_point(x, y); start_direction = make_vector(dirX, 0, dirY); - - debug() << "start " << start_location; } void Map::set_grid(bool on_off) @@ -1539,6 +1537,8 @@ public: handle_curved_track(attrs); else if (local_name == "crossover-track") handle_crossover_track(attrs); + else if (local_name == "gen-track") + handle_gen_track(attrs); else if (local_name == "points") handle_points(attrs); else if (local_name == "slope-track") @@ -1707,6 +1707,8 @@ private: { my_map->set_track_at(tile, make_crossover_track()); } + + void handle_gen_track(const AttributeSet& attrs); shared_ptr my_map; map my_stations; @@ -1716,6 +1718,23 @@ private: IResourcePtr resource; }; +void MapLoader::handle_gen_track(const AttributeSet& attrs) +{ + Vector delta; + track::Direction entry_dir, exit_dir; + + attrs.get("delta-x", delta.x); + attrs.get("delta-y", delta.y); + + attrs.get("entry-dir-x", entry_dir.x); + attrs.get("entry-dir-y", entry_dir.y); + + attrs.get("exit-dir-x", exit_dir.x); + attrs.get("exit-dir-y", exit_dir.y); + + my_map->set_track_at(tile, make_gen_track(delta, entry_dir, exit_dir)); +} + IMapPtr load_map(const string& a_res_id) { IResourcePtr res = find_resource(a_res_id, "maps"); -- 2.39.2