Goodbye gettext, Welcome TinyGetText
[supertux.git] / src / sector.cpp
index 37a9e39..bd4f16d 100644 (file)
@@ -29,7 +29,6 @@
 #include "app/globals.h"
 #include "sector.h"
 #include "utils/lispreader.h"
-#include "badguy.h"
 #include "gameobjs.h"
 #include "camera.h"
 #include "background.h"
@@ -45,6 +44,7 @@
 #include "math/aatriangle.h"
 #include "object/coin.h"
 #include "object/block.h"
+#include "object/invisible_block.h"
 #include "object/platform.h"
 #include "trigger/door.h"
 #include "object/bullet.h"
@@ -55,6 +55,7 @@
 #include "badguy/mriceblock.h"
 #include "badguy/mrbomb.h"
 #include "trigger/sequence_trigger.h"
+#include "trigger/secretarea_trigger.h"
 
 Sector* Sector::_current = 0;
 
@@ -122,6 +123,7 @@ Sector::parseObject(const std::string& name, LispReader& reader)
         return 0;
       }
       solids = tilemap;
+      fix_old_tiles();
     }
     return tilemap;
   } else if(name == "particles-snow") {
@@ -134,6 +136,8 @@ Sector::parseObject(const std::string& name, LispReader& reader)
     return partsys;
   } else if(name == "door") {
     return new Door(reader);
+  } else if(name == "secretarea") {
+    return new SecretAreaTrigger(reader);
   } else if(name == "platform") {
     return new Platform(reader);
   } else if(name == "jumpy" || name == "money") {
@@ -158,8 +162,8 @@ Sector::parseObject(const std::string& name, LispReader& reader)
       return new FlyingPlatform(reader);
 #endif
 
-   std::cerr << "Unknown object type '" << name << "'.\n";
-   return 0;
+  std::cerr << "Unknown object type '" << name << "'.\n";
+  return 0;
 }
 
 void
@@ -276,31 +280,7 @@ Sector::parse_old_format(LispReader& reader)
     solids = tilemap;
     add_object(tilemap);
 
-    // hack for now...
-    for(size_t x=0; x < solids->get_width(); ++x) {
-      for(size_t y=0; y < solids->get_height(); ++y) {
-        const Tile* tile = solids->get_tile(x, y);
-
-        if(tile->attributes & Tile::COIN) {
-          Coin* coin = new Coin(Vector(x*32, y*32));
-          add_object(coin);
-          solids->change(x, y, 0);
-        } else if(tile->attributes & Tile::FULLBOX) {
-          BonusBlock* block = new BonusBlock(Vector(x*32, y*32), tile->data);
-          add_object(block);
-          solids->change(x, y, 0);
-        } else if(tile->attributes & Tile::BRICK) {
-          Brick* brick = new Brick(Vector(x*32, y*32), tile->data);
-          add_object(brick);
-          solids->change(x, y, 0);
-        } else if(tile->attributes & Tile::GOAL) {
-          SequenceTrigger* trigger = new SequenceTrigger(Vector(x*32, y*32),
-              "endsequence");
-          add_object(trigger);
-          solids->change(x, y, 0);
-        }
-      }                                                   
-    }
+    fix_old_tiles();
   }
 
   if(reader.read_int_vector("background-tm", tiles)) {
@@ -365,6 +345,35 @@ Sector::parse_old_format(LispReader& reader)
 }
 
 void
+Sector::fix_old_tiles()
+{
+  // hack for now...
+  for(size_t x=0; x < solids->get_width(); ++x) {
+    for(size_t y=0; y < solids->get_height(); ++y) {
+      const Tile* tile = solids->get_tile(x, y);
+      Vector pos(x*32, y*32);
+      
+      if(tile->id == 112) {
+        add_object(new InvisibleBlock(pos));
+        solids->change(x, y, 0);
+      } else if(tile->attributes & Tile::COIN) {
+        add_object(new Coin(pos));
+        solids->change(x, y, 0);
+      } else if(tile->attributes & Tile::FULLBOX) {
+        add_object(new BonusBlock(pos, tile->data));
+        solids->change(x, y, 0);
+      } else if(tile->attributes & Tile::BRICK) {
+        add_object(new Brick(pos, tile->data));
+        solids->change(x, y, 0);
+      } else if(tile->attributes & Tile::GOAL) {
+        add_object(new SequenceTrigger(pos, "endsequence"));
+        solids->change(x, y, 0);
+      }
+    }                                                   
+  }
+}
+
+void
 Sector::write(LispWriter& writer)
 {
   writer.write_string("name", name);
@@ -792,13 +801,6 @@ Sector::add_smoke_cloud(const Vector& pos)
   return true;
 }
 
-bool
-Sector::add_particles(const Vector& epicenter, int min_angle, int max_angle, const Vector& initial_velocity, const Vector& acceleration, int number, Color color, int size, int life_time, int drawing_layer)
-{
-  add_object(new Particles(epicenter, min_angle, max_angle, initial_velocity, acceleration, number, color, size, life_time, drawing_layer));
-  return true;
-}
-
 void
 Sector::add_floating_text(const Vector& pos, const std::string& text)
 {