Various objects: Use "reader_get_layer" to parse the "z-pos" and "layer" options.
authorFlorian Forster <supertux@octo.it>
Thu, 11 Feb 2010 14:55:39 +0000 (14:55 +0000)
committerFlorian Forster <supertux@octo.it>
Thu, 11 Feb 2010 14:55:39 +0000 (14:55 +0000)
This should be a much more thorough fix for the bug described in #527 "Text and
backgrounds can overlap the menu".

References: #527.

SVN-Revision: 6321

12 files changed:
src/object/background.cpp
src/object/cloud_particle_system.cpp
src/object/comet_particle_system.cpp
src/object/comet_particle_system.hpp
src/object/decal.cpp
src/object/ghost_particle_system.cpp
src/object/gradient.cpp
src/object/rain_particle_system.cpp
src/object/scripted_object.cpp
src/object/snow_particle_system.cpp
src/object/thunderstorm.cpp
src/object/tilemap.cpp

index 422592b..78aebf2 100644 (file)
@@ -104,12 +104,7 @@ Background::Background(const Reader& reader) :
   reader.get("scroll-speed-x", scroll_speed.x);
   reader.get("scroll-speed-y", scroll_speed.y);
 
-  reader.get("layer", layer);
-  if (layer > (LAYER_GUI - 100)) {
-    log_warning << "Layer of background (" << layer << ") is too large. "
-      << "Clipping to " << (LAYER_GUI - 100) << "." << std::endl;
-    layer = LAYER_GUI - 100;
-  }
+  layer = reader_get_layer (reader, /* default = */ LAYER_BACKGROUND0);
 
   if(!reader.get("image", imagefile) || !reader.get("speed", speed))
     throw std::runtime_error("Must specify image and speed for background");
index ace29ee..e1a7a5e 100644 (file)
@@ -45,7 +45,7 @@ CloudParticleSystem::CloudParticleSystem() :
 void
 CloudParticleSystem::parse(const Reader& reader)
 {
-  reader.get("z-pos", z_pos);
+  z_pos = reader_get_layer (reader, /* default = */ LAYER_BACKGROUND1);
 }
 
 CloudParticleSystem::~CloudParticleSystem()
index fb923f9..a2fd295 100644 (file)
@@ -48,7 +48,7 @@ CometParticleSystem::CometParticleSystem()
 void
 CometParticleSystem::parse(const Reader& reader)
 {
-  reader.get("z-pos", z_pos);
+  z_pos = reader_get_layer (reader, /* default = */ LAYER_BACKGROUND1);
 }
 
 CometParticleSystem::~CometParticleSystem()
index c38e0b5..460ef0d 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "object/particlesystem_interactive.hpp"
 #include "video/surface_ptr.hpp"
+#include "src/video/drawing_request.hpp" /* LAYER_BACKGROUND1 */
 
 class CometParticleSystem : public ParticleSystem_Interactive
 {
index af7a8f7..3a985a2 100644 (file)
@@ -21,7 +21,7 @@
 Decal::Decal(const Reader& reader) :
   MovingSprite(reader, LAYER_OBJECTS, COLGROUP_DISABLED)
 {
-  reader.get("layer", layer);
+  layer = reader_get_layer (reader, /* default = */ LAYER_OBJECTS);
 
   bool solid = false;
   reader.get("solid", solid);
index 17ddcf4..b5373cb 100644 (file)
@@ -47,7 +47,7 @@ GhostParticleSystem::GhostParticleSystem()
 void
 GhostParticleSystem::parse(const Reader& reader)
 {
-  reader.get("z-pos", z_pos);
+  z_pos = reader_get_layer (reader, /* default = */ LAYER_BACKGROUND1);
 }
 
 GhostParticleSystem::~GhostParticleSystem()
index f259c08..9d1efea 100644 (file)
@@ -32,7 +32,7 @@ Gradient::Gradient(const Reader& reader) :
   gradient_top(),
   gradient_bottom()
 {
-  reader.get("layer", layer);
+  layer = reader_get_layer (reader, /* default = */ LAYER_BACKGROUND0);
   std::vector<float> bkgd_top_color, bkgd_bottom_color;
   if(!reader.get("top_color", bkgd_top_color) ||
      !reader.get("bottom_color", bkgd_bottom_color))
index 4a6500f..bb9d7d8 100644 (file)
@@ -48,7 +48,7 @@ RainParticleSystem::RainParticleSystem()
 void
 RainParticleSystem::parse(const Reader& reader)
 {
-  reader.get("z-pos", z_pos);
+  z_pos = reader_get_layer (reader, /* default = */ LAYER_BACKGROUND1);
 }
 
 RainParticleSystem::~RainParticleSystem()
index 1a43a3a..e64c62c 100644 (file)
@@ -47,7 +47,7 @@ ScriptedObject::ScriptedObject(const Reader& lisp) :
   lisp.get("solid", solid);
   lisp.get("physic-enabled", physic_enabled);
   lisp.get("visible", visible);
-  lisp.get("z-pos", layer);
+  layer = reader_get_layer (lisp, /* default = */ LAYER_OBJECTS);
   if( solid ){
     set_group( COLGROUP_MOVING_STATIC );
   } else {
index a0efa35..d2037c4 100644 (file)
@@ -76,7 +76,7 @@ SnowParticleSystem::SnowParticleSystem() :
 void
 SnowParticleSystem::parse(const Reader& reader)
 {
-  reader.get("z-pos", z_pos);
+  z_pos = reader_get_layer (reader, /* default = */ LAYER_BACKGROUND1);
 }
 
 SnowParticleSystem::~SnowParticleSystem()
index 253c823..1483057 100644 (file)
@@ -44,7 +44,7 @@ Thunderstorm::Thunderstorm(const Reader& reader) :
   if(interval <= 0) {
     log_warning << "Running a thunderstorm with non-positive time interval is a bad idea" << std::endl;
   }
-  reader.get("layer", layer);
+  layer = reader_get_layer (reader, /* default = */ LAYER_BACKGROUNDTILES-1);
 
   sound_manager->preload("sounds/thunder.wav");
   sound_manager->preload("sounds/lightning.wav");
index 6f20195..9528a81 100644 (file)
@@ -69,10 +69,11 @@ TileMap::TileMap(const Reader& reader) :
   assert(tileset != NULL);
 
   reader.get("name",   name);
-  reader.get("z-pos",  z_pos);
   reader.get("solid",  solid);
   reader.get("speed",  speed_x);
   reader.get("speed-y", speed_y);
+
+  z_pos = reader_get_layer (reader, /* default = */ 0);
   
   if(solid && ((speed_x != 1) || (speed_y != 1))) {
     log_warning << "Speed of solid tilemap is not 1. fixing" << std::endl;
@@ -80,14 +81,6 @@ TileMap::TileMap(const Reader& reader) :
     speed_y = 1;
   }
 
-  if (z_pos > (LAYER_GUI - 100)) {
-    log_warning << "z-pos of "
-      << ((name == "") ? "unnamed tilemap" : name) << " (" << z_pos << ") "
-      << "is too large. "
-      << "Clipping to " << (LAYER_GUI - 100) << "." << std::endl;
-    z_pos = LAYER_GUI - 100;
-  }
-
   const lisp::Lisp* pathLisp = reader.get_lisp("path");
   if (pathLisp) {
     path.reset(new Path());