From 324c03e6a5519f906f6fc931310f5b14d8b59e63 Mon Sep 17 00:00:00 2001 From: Nick Gasson Date: Sun, 12 Sep 2010 10:47:20 +0100 Subject: [PATCH] Save each bit of scenery only once --- maps/power_plant/power_plant.xml | 12 ++++++++---- src/Map.cpp | 9 +++++++-- src/Train.cpp | 2 +- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/maps/power_plant/power_plant.xml b/maps/power_plant/power_plant.xml index 88c27d7..e0d2092 100644 --- a/maps/power_plant/power_plant.xml +++ b/maps/power_plant/power_plant.xml @@ -40,7 +40,7 @@ - + @@ -64,7 +64,7 @@ - + @@ -136,11 +136,11 @@ - + - + @@ -166,5 +166,9 @@ + + + + diff --git a/src/Map.cpp b/src/Map.cpp index b481a91..d302e1b 100644 --- a/src/Map.cpp +++ b/src/Map.cpp @@ -1547,7 +1547,11 @@ void Map::save_to(ostream& of) .add_text(resource->name() + ".bin")); xml::element tileset("tileset"); - + + // We abuse the frame number to ensure all scenery, etc. is + // only written out once + ++frame_num; + for (int x = 0; x < my_width; x++) { for (int y = 0; y < my_depth; y++) { const Tile& tile = tile_at(x, y); @@ -1572,8 +1576,9 @@ void Map::save_to(ostream& of) useful = true; } - if (tile.scenery) { + if (tile.scenery && tile.scenery->needs_rendering(frame_num)) { tile_xml.add_child(tile.scenery->get()->to_xml()); + tile.scenery->rendered_on(frame_num); useful = true; } diff --git a/src/Train.cpp b/src/Train.cpp index e2351a8..b1919a8 100644 --- a/src/Train.cpp +++ b/src/Train.cpp @@ -108,7 +108,7 @@ Train::Train(IMapPtr a_map) // Bit of a hack to put the engine in the right place move(0.275); -#if 0 +#if 1 for (int i = 1; i <= 4; i++) add_part(load_waggon("coal_truck")); #endif -- 2.39.2