* Add Airship (regular above-ground theme) and Battle (castle/boss theme) music court...
[supertux.git] / src / object / ispy.cpp
index 60fbfc9..a03d653 100644 (file)
 #include <config.h>
 
 #include "ispy.hpp"
-#include "resources.hpp"
-#include "sprite/sprite_manager.hpp"
-#include "video/drawing_context.hpp"
+
 #include "player.hpp"
 #include "object_factory.hpp"
-#include "game_session.hpp"
 #include "sector.hpp"
 #include "tile.hpp"
 #include "object/tilemap.hpp"
-#include "random_generator.hpp"
-#include "object/sprite_particle.hpp"
+#include "lisp/writer.hpp"
+#include "sprite/sprite.hpp"
 
 Ispy::Ispy(const lisp::Lisp& reader)
        : MovingSprite(reader, "images/objects/ispy/ispy.sprite", LAYER_TILES+5, COLGROUP_DISABLED), state(ISPYSTATE_IDLE), dir(AUTO)
@@ -56,10 +53,20 @@ void
 Ispy::write(lisp::Writer& writer)
 {
   writer.start_list("ispy");
-  writer.write_float("x", bbox.p1.x);
-  writer.write_float("y", bbox.p1.y);
+  writer.write("x", bbox.p1.x);
+  writer.write("y", bbox.p1.y);
+  writer.write("script", script);
+  switch (dir)
+  {
+    case DOWN:
+      writer.write("direction", "down"); break;
+    case LEFT:
+      writer.write("direction", "left"); break;
+    case RIGHT:
+      writer.write("direction", "right"); break;
+    default: break;
+  }
   writer.end_list("ispy");
-  // TODO: does not really write out Ispy
 }
 
 HitResponse
@@ -133,10 +140,10 @@ Ispy::free_line_of_sight(Vector line_start, Vector line_end, const MovingObject*
     for (float test_y = lsy; test_y <= ley; test_y += 16) {
       for(std::list<TileMap*>::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); i++) {
         TileMap* solids = *i;
-       const Tile* tile = solids->get_tile_at(Vector(test_x, test_y));
-       if(!tile) continue;
+        const Tile* tile = solids->get_tile_at(Vector(test_x, test_y));
+        if(!tile) continue;
         // FIXME: check collision with slope tiles
-       if((tile->getAttributes() & Tile::SOLID)) return false;
+        if((tile->getAttributes() & Tile::SOLID)) return false;
       }
     }
   }