Replaced more lisp::Lisp/lisp::Writer with Reader/Writer
authorIngo Ruhnke <grumbel@gmx.de>
Wed, 18 Nov 2009 15:28:30 +0000 (15:28 +0000)
committerIngo Ruhnke <grumbel@gmx.de>
Wed, 18 Nov 2009 15:28:30 +0000 (15:28 +0000)
SVN-Revision: 6028

50 files changed:
src/addon/addon.cpp
src/addon/addon.hpp
src/addon/addon_manager.cpp
src/addon/addon_manager.hpp
src/audio/sound_file.cpp
src/badguy/badguy.cpp
src/badguy/crystallo.cpp
src/badguy/darttrap.cpp
src/badguy/dispenser.cpp
src/badguy/kugelblitz.cpp
src/badguy/mrbomb.cpp
src/badguy/willowisp.cpp
src/control/joystickkeyboardcontroller.hpp
src/object/candle.cpp
src/object/firefly.cpp
src/object/ispy.cpp
src/object/lantern.cpp
src/object/magicblock.cpp
src/object/moving_sprite.cpp
src/object/particlesystem_interactive.cpp
src/object/particlesystem_interactive.hpp
src/object/pushbutton.cpp
src/object/scripted_object.cpp
src/object/spotlight.cpp
src/object/trampoline.cpp
src/scripting/serialize.cpp
src/scripting/serialize.hpp
src/sprite/sprite_data.cpp
src/sprite/sprite_data.hpp
src/sprite/sprite_manager.cpp
src/supertux/player_status.hpp
src/supertux/sector.cpp
src/supertux/spawn_point.cpp
src/supertux/spawn_point.hpp
src/supertux/statistics.hpp
src/supertux/world.cpp
src/trigger/door.cpp
src/trigger/scripttrigger.hpp
src/worldmap/level.cpp
src/worldmap/level.hpp
src/worldmap/spawn_point.cpp
src/worldmap/spawn_point.hpp
src/worldmap/special_tile.cpp
src/worldmap/special_tile.hpp
src/worldmap/sprite_change.cpp
src/worldmap/sprite_change.hpp
src/worldmap/teleporter.cpp
src/worldmap/teleporter.hpp
src/worldmap/worldmap.cpp
src/worldmap/worldmap.hpp

index 2f166f1..c4bc5ad 100644 (file)
@@ -21,9 +21,9 @@
 #include <sstream>
 
 #include "addon/md5.hpp"
-#include "lisp/lisp.hpp"
 #include "lisp/parser.hpp"
-#include "lisp/writer.hpp"
+#include "util/reader.hpp"
+#include "util/writer.hpp"
 #include "util/log.hpp"
 
 std::string
index 033b14f..10f72e8 100644 (file)
@@ -58,7 +58,7 @@ public:
   /**
    * Writes out Add-on metainformation to a Lisp Writer
    */
-  void write(lisp::Writer& writer) const;
+  void write(Writer& writer) const;
 
   /**
    * Writes out Add-on metainformation to a file
index 245bb4b..4b54a2d 100644 (file)
@@ -33,8 +33,9 @@
 
 #include "addon/addon.hpp"
 #include "lisp/list_iterator.hpp"
-#include "lisp/writer.hpp"
 #include "lisp/parser.hpp"
+#include "util/reader.hpp"
+#include "util/writer.hpp"
 #include "util/log.hpp"
 
 #ifdef HAVE_LIBCURL
index 693acd3..3cebc8c 100644 (file)
@@ -84,7 +84,7 @@ public:
   /**
    * Write AddonManager configuration to Lisp
    */
-  void write(lisp::Writer& writer);
+  void write(Writer& writer);
 
   /**
    * Read AddonManager configuration from Lisp
index 5283ff5..c710c3b 100644 (file)
@@ -27,8 +27,8 @@
 #include "audio/sound_error.hpp"
 #include "audio/ogg_sound_file.hpp"
 #include "audio/wav_sound_file.hpp"
-#include "lisp/lisp.hpp"
 #include "lisp/parser.hpp"
+#include "util/reader.hpp"
 #include "util/file_system.hpp"
 #include "util/log.hpp"
 
index acdde41..e14e81c 100644 (file)
 
 #include "badguy/badguy.hpp"
 
+#include <math.h>
+
 #include "audio/sound_manager.hpp"
 #include "object/bullet.hpp"
 #include "object/player.hpp"
 #include "supertux/level.hpp"
 #include "supertux/sector.hpp"
 #include "supertux/tile.hpp"
-
-#include <math.h>
+#include "util/reader.hpp"
 
 static const float SQUISH_TIME = 2;
   
index 57ae033..7273d4d 100644 (file)
@@ -18,6 +18,7 @@
 
 #include "sprite/sprite.hpp"
 #include "supertux/object_factory.hpp"
+#include "util/reader.hpp"
 
 Crystallo::Crystallo(const Reader& reader) :
   WalkingBadguy(reader, "images/creatures/crystallo/crystallo.sprite", "left", "right"),
index 3e66642..de0bada 100644 (file)
@@ -21,6 +21,7 @@
 #include "sprite/sprite.hpp"
 #include "supertux/object_factory.hpp"
 #include "supertux/sector.hpp"
+#include "util/reader.hpp"
 
 namespace {
 const float MUZZLE_Y = 25; /**< [px] muzzle y-offset from top */
index 2c3322b..975441e 100644 (file)
@@ -22,6 +22,7 @@
 #include "object/player.hpp"
 #include "supertux/object_factory.hpp"
 #include "supertux/sector.hpp"
+#include "util/reader.hpp"
 
 Dispenser::Dispenser(const Reader& reader) :
   BadGuy(reader, "images/creatures/dispenser/dispenser.sprite"),
index 5a94bac..2e304bb 100644 (file)
@@ -21,6 +21,7 @@
 #include "sprite/sprite.hpp"
 #include "supertux/object_factory.hpp"
 #include "supertux/sector.hpp"
+#include "util/reader.hpp"
 
 #define  LIFETIME 5
 #define  MOVETIME 0.75
index 2e8a453..67efd64 100644 (file)
@@ -22,6 +22,7 @@
 #include "sprite/sprite_manager.hpp"
 #include "supertux/object_factory.hpp"
 #include "supertux/sector.hpp"
+#include "util/reader.hpp"
 
 MrBomb::MrBomb(const Reader& reader) :
   WalkingBadguy(reader, "images/creatures/mr_bomb/mr_bomb.sprite", "left", "right"),
index bb48cb4..3ed8f9f 100644 (file)
@@ -26,6 +26,7 @@
 #include "supertux/game_session.hpp"
 #include "supertux/object_factory.hpp"
 #include "supertux/sector.hpp"
+#include "util/reader.hpp"
 
 static const float FLYSPEED = 64; /**< speed in px per second */
 static const float TRACK_RANGE = 384; /**< at what distance to start tracking the player */
index 2a66f16..1bcf23b 100644 (file)
@@ -42,7 +42,7 @@ public:
    */
   void process_event(const SDL_Event& event);
 
-  void write(lisp::Writer& writer);
+  void write(Writer& writer);
   void read(const Reader& lisp);
   void reset();
 
index fc06de2..f4b28a1 100644 (file)
@@ -21,6 +21,7 @@
 #include "scripting/squirrel_util.hpp"
 #include "supertux/object_factory.hpp"
 #include "supertux/sector.hpp"
+#include "util/reader.hpp"
 
 Candle::Candle(const Reader& lisp)
   : MovingSprite(lisp, "images/objects/candle/candle.sprite", LAYER_BACKGROUNDTILES+1, COLGROUP_DISABLED), burning(true),
index 792c69d..2241a3c 100644 (file)
 
 #include "object/firefly.hpp"
 
+#include <math.h>
+
 #include "math/random_generator.hpp"
 #include "object/player.hpp"
 #include "object/sprite_particle.hpp"
 #include "supertux/game_session.hpp"
 #include "supertux/object_factory.hpp"
 #include "supertux/sector.hpp"
-
-#include <math.h>
+#include "util/reader.hpp"
 
 Firefly::Firefly(const Reader& lisp) :
    MovingSprite(lisp, "images/objects/resetpoints/default-resetpoint.sprite", LAYER_TILES, COLGROUP_TOUCHABLE), 
index 3d0c169..5a7092e 100644 (file)
@@ -22,6 +22,7 @@
 #include "supertux/object_factory.hpp"
 #include "supertux/sector.hpp"
 #include "supertux/tile.hpp"
+#include "util/reader.hpp"
 
 Ispy::Ispy(const Reader& reader) :
   MovingSprite(reader, "images/objects/ispy/ispy.sprite", LAYER_TILES+5, COLGROUP_DISABLED), 
index 800e177..065f537 100644 (file)
@@ -22,6 +22,7 @@
 #include "sprite/sprite.hpp"
 #include "sprite/sprite_manager.hpp"
 #include "supertux/object_factory.hpp"
+#include "util/reader.hpp"
 
 Lantern::Lantern(const Reader& reader) :
   Rock(reader, "images/objects/lantern/lantern.sprite"),
index 4081cf9..9064d5d 100644 (file)
@@ -26,6 +26,7 @@
 #include "supertux/globals.hpp"
 #include "supertux/object_factory.hpp"
 #include "supertux/sector.hpp"
+#include "util/reader.hpp"
 
 namespace {
 const float MIN_INTENSITY = 0.8f;
index 24f0877..646addb 100644 (file)
@@ -17,6 +17,7 @@
 #include "object/moving_sprite.hpp"
 #include "sprite/sprite.hpp"
 #include "sprite/sprite_manager.hpp"
+#include "util/reader.hpp"
 
 MovingSprite::MovingSprite(const Vector& pos, const std::string& sprite_name, 
                            int layer, CollisionGroup collision_group) :
index 1628af6..e9a28be 100644 (file)
@@ -24,6 +24,7 @@
 #include "supertux/collision.hpp"
 #include "supertux/globals.hpp"
 #include "supertux/tile.hpp"
+#include "util/reader.hpp"
 
 //TODO: Find a way to make rain collide with objects like bonus blocks
 //      Add an option to set rain strength
index 296b3ff..b7d8411 100644 (file)
@@ -109,7 +109,7 @@ public:
   virtual ~CometParticleSystem();
 
   void parse(const Reader& lisp);
-  void write(lisp::Writer& writer);
+  void write(Writer& writer);
 
   virtual void update(float elapsed_time);
 
index 5488de3..027274f 100644 (file)
@@ -20,6 +20,7 @@
 #include "sprite/sprite.hpp"
 #include "supertux/object_factory.hpp"
 #include "supertux/sector.hpp"
+#include "util/reader.hpp"
 
 namespace {
 const std::string BUTTON_SOUND = "sounds/switch.ogg";
index 2da8818..56a1fd5 100644 (file)
@@ -21,6 +21,7 @@
 #include "scripting/squirrel_util.hpp"
 #include "sprite/sprite.hpp"
 #include "supertux/object_factory.hpp"
+#include "util/reader.hpp"
 
 ScriptedObject::ScriptedObject(const Reader& lisp) :
   MovingSprite(lisp, LAYER_OBJECTS, COLGROUP_MOVING_STATIC),
index 36b7bef..1947766 100644 (file)
@@ -18,6 +18,7 @@
 #include "sprite/sprite.hpp"
 #include "sprite/sprite_manager.hpp"
 #include "supertux/object_factory.hpp"
+#include "util/reader.hpp"
 
 Spotlight::Spotlight(const Reader& lisp) :
   position(),
index 3b6630c..e097dcd 100644 (file)
@@ -22,6 +22,7 @@
 #include "sprite/sprite.hpp"
 #include "sprite/sprite_manager.hpp"
 #include "supertux/object_factory.hpp"
+#include "util/reader.hpp"
 
 /* Trampoline will accelerate player to to VY_INITIAL, if
  * he jumps on it to VY_MIN. */
index 59dc46a..5dbc6d1 100644 (file)
 
 namespace Scripting {
 
-void load_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, const lisp::Lisp* lisp)
+void load_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, const Reader& lisp)
 {
   using namespace lisp;
 
   if(table_idx < 0)
     table_idx -= 2;
 
-  lisp::ListIterator iter(lisp);
+  lisp::ListIterator iter(&lisp);
   while(iter.next() && iter.lisp() != NULL) {
     const std::string& token = iter.item();
     sq_pushstring(vm, token.c_str(), token.size());
@@ -40,7 +40,7 @@ void load_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, const lisp::Lisp*
     switch(value->get_type()) {
       case Lisp::TYPE_CONS:
         sq_newtable(vm);
-        load_squirrel_table(vm, sq_gettop(vm), iter.lisp());
+        load_squirrel_table(vm, sq_gettop(vm), *iter.lisp());
         break;
       case Lisp::TYPE_INTEGER:
         sq_pushinteger(vm, value->get_int());
@@ -68,7 +68,7 @@ void load_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, const lisp::Lisp*
   }
 }
 
-void save_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, lisp::Writer& writer)
+void save_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, Writer& writer)
 {
   // offset because of sq_pushnull
   if(table_idx < 0)
index 3779d54..0363279 100644 (file)
 
 #include <squirrel.h>
 
-namespace lisp {
-class Lisp;
-class Writer;
-} // namespace lisp
+#include "util/writer_fwd.hpp"
+#include "util/reader_fwd.hpp"
 
 namespace Scripting {
 
-void save_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, lisp::Writer& writer);
-void load_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, const lisp::Lisp* lisp);
+void save_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, Writer& writer);
+void load_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, const Reader& lisp);
 
 } // namespace Scripting
 
index 6d2d2a5..4b1d8b4 100644 (file)
@@ -21,6 +21,7 @@
 
 #include "lisp/list_iterator.hpp"
 #include "util/log.hpp"
+#include "util/reader.hpp"
 
 SpriteData::Action::Action() :
   name(),
@@ -47,16 +48,16 @@ SpriteData::Action::~Action()
     delete *i;
 }
 
-SpriteData::SpriteData(const lisp::Lisp* lisp, const std::string& basedir) :
+SpriteData::SpriteData(const Reader& lisp, const std::string& basedir) :
   actions(),
   name()
 {
-  lisp::ListIterator iter(lisp);
+  lisp::ListIterator iter(&lisp);
   while(iter.next()) {
     if(iter.item() == "name") {
       iter.value()->get(name);
     } else if(iter.item() == "action") {
-      parse_action(iter.lisp(), basedir);
+      parse_action(*iter.lisp(), basedir);
     } else {
       log_warning << "Unknown sprite field: " << iter.item() << std::endl;
     }
@@ -72,28 +73,28 @@ SpriteData::~SpriteData()
 }
 
 void
-SpriteData::parse_action(const lisp::Lisp* lisp, const std::string& basedir)
+SpriteData::parse_action(const Reader& lisp, const std::string& basedir)
 {
   Action* action = new Action;
 
-  if(!lisp->get("name", action->name)) {
+  if(!lisp.get("name", action->name)) {
     if(!actions.empty())
       throw std::runtime_error(
         "If there are more than one action, they need names!");
   }
   std::vector<float> hitbox;
-  if (lisp->get("hitbox", hitbox)) {
+  if (lisp.get("hitbox", hitbox)) {
     if (hitbox.size() != 4) throw std::runtime_error("hitbox must specify exactly 4 coordinates");
     action->x_offset = hitbox[0];
     action->y_offset = hitbox[1];
     action->hitbox_w = hitbox[2];
     action->hitbox_h = hitbox[3];
   }
-  lisp->get("z-order", action->z_order);
-  lisp->get("fps", action->fps);
+  lisp.get("z-order", action->z_order);
+  lisp.get("fps", action->fps);
 
   std::string mirror_action;
-  lisp->get("mirror-action", mirror_action);
+  lisp.get("mirror-action", mirror_action);
   if(!mirror_action.empty()) {
     Action* act_tmp = get_action(mirror_action);
     if(act_tmp == NULL) {
@@ -114,7 +115,7 @@ SpriteData::parse_action(const lisp::Lisp* lisp, const std::string& basedir)
     }
   } else { // Load images
     std::vector<std::string> images;
-    if(!lisp->get("images", images)) {
+    if(!lisp.get("images", images)) {
       std::stringstream msg;
       msg << "Sprite '" << name << "' contains no images in action '"
           << action->name << "'.";
index 85940e2..f732cbe 100644 (file)
 #define HEADER_SUPERTUX_SPRITE_SPRITE_DATA_HPP
 
 #include <map>
+#include <vector>
 
-#include "lisp/lisp.hpp"
+#include "util/reader_fwd.hpp"
 #include "video/surface.hpp"
 
 class SpriteData
 {
 public:
   /** cur has to be a pointer to data in the form of ((hitbox 5 10 0 0) ...) */
-  SpriteData(const lisp::Lisp* cur, const std::string& basedir);
+  SpriteData(const Reader& cur, const std::string& basedir);
   ~SpriteData();
 
   const std::string& get_name() const
@@ -65,7 +66,7 @@ private:
 
   typedef std::map <std::string, Action*> Actions;
 
-  void parse_action(const lisp::Lisp* lispreader, const std::string& basedir);
+  void parse_action(const Reader& lispreader, const std::string& basedir);
   /** Get an action */
   Action* get_action(std::string act);
 
index a12fff5..0ef214a 100644 (file)
@@ -19,6 +19,7 @@
 #include "lisp/parser.hpp"
 #include "sprite/sprite.hpp"
 #include "util/file_system.hpp"
+#include "util/reader.hpp"
 
 SpriteManager* sprite_manager = NULL;
 
@@ -77,7 +78,7 @@ SpriteManager::load(const std::string& filename)
   }
 
   std::auto_ptr<SpriteData> data (
-    new SpriteData(sprite, FileSystem::dirname(filename)) );
+    new SpriteData(*sprite, FileSystem::dirname(filename)) );
   sprites[filename] = data.release();
 
   return sprites[filename];
index 631534c..454ac17 100644 (file)
@@ -47,7 +47,7 @@ public:
   void reset();
   void add_coins(int count, bool play_sound = true);
 
-  void write(lisp::Writer& writer);
+  void write(Writer& writer);
   void read(const Reader& lisp);
 
   void draw(DrawingContext& context);
index 11f5367..62fb618 100644 (file)
@@ -193,7 +193,7 @@ Sector::parse(const Reader& sector)
     } else if(token == "music") {
       iter.value()->get(music);
     } else if(token == "spawnpoint") {
-      SpawnPoint* sp = new SpawnPoint(iter.lisp());
+      SpawnPoint* sp = new SpawnPoint(*iter.lisp());
       spawnpoints.push_back(sp);
     } else if(token == "init-script") {
       iter.value()->get(init_script);
index 3175da8..8cc24c0 100644 (file)
@@ -30,13 +30,13 @@ SpawnPoint::SpawnPoint(const SpawnPoint& other) :
   pos(other.pos)
 {}
 
-SpawnPoint::SpawnPoint(const lisp::Lisp* slisp) :
+SpawnPoint::SpawnPoint(const Reader& slisp) :
   name(),
   pos()
 {
   pos.x = -1;
   pos.y = -1;
-  lisp::ListIterator iter(slisp);
+  lisp::ListIterator iter(&slisp);
   while(iter.next()) {
     const std::string& token = iter.item();
     if(token == "name") {
index 4b0268e..5526e8d 100644 (file)
 #define HEADER_SUPERTUX_SUPERTUX_SPAWN_POINT_HPP
 
 #include "math/vector.hpp"
-namespace lisp { class Lisp; }
+#include "util/reader_fwd.hpp"
 
 class SpawnPoint
 {
 public:
   SpawnPoint();
   SpawnPoint(const SpawnPoint& other);
-  SpawnPoint(const lisp::Lisp* lisp);
+  SpawnPoint(const Reader& lisp);
 
   std::string name;
   Vector pos;
index 450f03d..3526602 100644 (file)
@@ -51,7 +51,7 @@ public:
   /// read statistics from lisp file
   //void parse(const Reader& lisp);
   /// write statistics to lisp file
-  //void write(lisp::Writer& writer);
+  //void write(Writer& writer);
 
   /**
    * serialize statistics object as squirrel table "statistics"
index acbd690..a8fda6b 100644 (file)
@@ -23,6 +23,7 @@
 #include "supertux/player_status.hpp"
 #include "supertux/world.hpp"
 #include "util/file_system.hpp"
+#include "util/reader.hpp"
 #include "worldmap/worldmap.hpp"
 
 static bool has_suffix(const std::string& data, const std::string& suffix)
@@ -225,7 +226,7 @@ World::load_state()
 
     sq_pushstring(global_vm, "state", -1);
     sq_newtable(global_vm);
-    load_squirrel_table(global_vm, -1, state);
+    load_squirrel_table(global_vm, -1, *state);
     if(SQ_FAILED(sq_createslot(global_vm, -3)))
       throw std::runtime_error("Couldn't create state table");
     sq_pop(global_vm, 1);
index 2f44ac2..59091f7 100644 (file)
@@ -20,6 +20,7 @@
 #include "supertux/game_session.hpp"
 #include "supertux/object_factory.hpp"
 #include "trigger/door.hpp"
+#include "util/reader.hpp"
 
 Door::Door(const Reader& reader) :
   state(CLOSED),
index fb0c37d..e93824d 100644 (file)
@@ -26,7 +26,7 @@ public:
   ScriptTrigger(const Vector& pos, const std::string& script);
   ~ScriptTrigger();
 
-  void write(lisp::Writer& writer);
+  void write(Writer& writer);
   void event(Player& player, EventType type);
 
 private:
index 8a4330e..3529a4c 100644 (file)
 #include "sprite/sprite_manager.hpp"
 #include "util/file_system.hpp"
 #include "util/log.hpp"
+#include "util/reader.hpp"
 #include "video/drawing_context.hpp"
 #include "worldmap/level.hpp"
 
 namespace WorldMapNS {
 
-LevelTile::LevelTile(const std::string& basedir, const lisp::Lisp* lisp) :
+LevelTile::LevelTile(const std::string& basedir, const Reader& lisp) :
   pos(),
   title(),
   solved(false), 
@@ -40,16 +41,16 @@ LevelTile::LevelTile(const std::string& basedir, const lisp::Lisp* lisp) :
   picture_cached(false),
   picture(0)
 {
-  lisp->get("name", name);
-  lisp->get("x", pos.x);
-  lisp->get("y", pos.y);
-  lisp->get("auto-play", auto_play);
+  lisp.get("name", name);
+  lisp.get("x", pos.x);
+  lisp.get("y", pos.y);
+  lisp.get("auto-play", auto_play);
 
   std::string spritefile = "images/worldmap/common/leveldot.sprite";
-  lisp->get("sprite", spritefile);
+  lisp.get("sprite", spritefile);
   sprite = sprite_manager->create(spritefile);
 
-  lisp->get("extro-script", extro_script);
+  lisp.get("extro-script", extro_script);
 
   if (!PHYSFS_exists((basedir + name).c_str()))
   {
index 9d9db4f..8c3e859 100644 (file)
@@ -33,7 +33,7 @@ namespace WorldMapNS {
 class LevelTile : public GameObject
 {
 public:
-  LevelTile(const std::string& basedir, const lisp::Lisp* lisp);
+  LevelTile(const std::string& basedir, const Reader& lisp);
   virtual ~LevelTile();
 
   virtual void draw(DrawingContext& context);
index 1590501..e805fc0 100644 (file)
@@ -18,6 +18,7 @@
 
 #include "lisp/list_iterator.hpp"
 #include "util/log.hpp"
+#include "util/reader.hpp"
 #include "worldmap/spawn_point.hpp"
 
 namespace WorldMapNS {
@@ -25,14 +26,14 @@ namespace WorldMapNS {
 // from worldmap.cpp
 Direction string_to_direction(const std::string& directory);
 
-SpawnPoint::SpawnPoint(const lisp::Lisp* slisp) : 
+SpawnPoint::SpawnPoint(const Reader& slisp) : 
   name(),
   pos(),
   auto_dir(D_NONE)
 {
   pos.x = -1;
   pos.y = -1;
-  lisp::ListIterator iter(slisp);
+  lisp::ListIterator iter(&slisp);
   while(iter.next()) {
     const std::string& token = iter.item();
     if(token == "name") {
index 0a6237b..ba98c9f 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <string>
 
-#include "lisp/lisp.hpp"
+#include "util/reader_fwd.hpp"
 #include "math/vector.hpp"
 #include "supertux/game_object.hpp"
 #include "worldmap/direction.hpp"
@@ -29,7 +29,7 @@ namespace WorldMapNS {
 class SpawnPoint
 {
 public:
-  SpawnPoint(const lisp::Lisp* lisp);
+  SpawnPoint(const Reader& lisp);
 
   std::string name;
   Vector pos;
index 9bc419d..9fba90b 100644 (file)
 
 #include "sprite/sprite.hpp"
 #include "sprite/sprite_manager.hpp"
+#include "util/reader.hpp"
 #include "video/drawing_context.hpp"
 #include "worldmap/special_tile.hpp"
 
 namespace WorldMapNS {
 
-SpecialTile::SpecialTile(const lisp::Lisp* lisp) :
+SpecialTile::SpecialTile(const Reader& lisp) :
   pos(),
   sprite(),
   map_message(),
@@ -35,22 +36,22 @@ SpecialTile::SpecialTile(const lisp::Lisp* lisp) :
   apply_action_south(true), 
   apply_action_west(true)
 {
-  lisp->get("x", pos.x);
-  lisp->get("y", pos.y);
-  lisp->get("invisible-tile", invisible);
+  lisp.get("x", pos.x);
+  lisp.get("y", pos.y);
+  lisp.get("invisible-tile", invisible);
 
   if(!invisible) {
     std::string spritefile = "";
-    lisp->get("sprite", spritefile);
+    lisp.get("sprite", spritefile);
     sprite = sprite_manager->create(spritefile);
   }
 
-  lisp->get("map-message", map_message);
-  lisp->get("passive-message", passive_message);
-  lisp->get("script", script);
+  lisp.get("map-message", map_message);
+  lisp.get("passive-message", passive_message);
+  lisp.get("script", script);
 
   std::string apply_direction;
-  lisp->get("apply-to-direction", apply_direction);
+  lisp.get("apply-to-direction", apply_direction);
   if(!apply_direction.empty()) {
     apply_action_north = false;
     apply_action_south = false;
index b2ea7ff..b17abe5 100644 (file)
@@ -21,7 +21,7 @@
 #include <memory>
 #include <string>
 
-#include "lisp/lisp.hpp"
+#include "util/reader_fwd.hpp"
 #include "math/vector.hpp"
 #include "supertux/game_object.hpp"
 
@@ -32,7 +32,7 @@ namespace WorldMapNS {
 class SpecialTile : public GameObject
 {
 public:
-  SpecialTile(const lisp::Lisp* lisp);
+  SpecialTile(const Reader& lisp);
   virtual ~SpecialTile();
 
   virtual void draw(DrawingContext& context);
index 18c10cf..48c425a 100644 (file)
 
 #include "sprite/sprite.hpp"
 #include "sprite/sprite_manager.hpp"
+#include "util/reader.hpp"
 #include "video/drawing_context.hpp"
 #include "worldmap/sprite_change.hpp"
 
 namespace WorldMapNS {
 
-SpriteChange::SpriteChange(const lisp::Lisp* lisp) :
+SpriteChange::SpriteChange(const Reader& lisp) :
   pos(),
   change_on_touch(false), 
   sprite(),
@@ -30,18 +31,18 @@ SpriteChange::SpriteChange(const lisp::Lisp* lisp) :
   stay_group(),
   in_stay_action(false)
 {
-  lisp->get("x", pos.x);
-  lisp->get("y", pos.y);
-  lisp->get("change-on-touch", change_on_touch);
+  lisp.get("x", pos.x);
+  lisp.get("y", pos.y);
+  lisp.get("change-on-touch", change_on_touch);
 
   std::string spritefile = "";
-  lisp->get("sprite", spritefile);
+  lisp.get("sprite", spritefile);
   sprite = sprite_manager->create(spritefile);
 
-  lisp->get("stay-action", stay_action);
-  lisp->get("initial-stay-action", in_stay_action);
+  lisp.get("stay-action", stay_action);
+  lisp.get("initial-stay-action", in_stay_action);
 
-  lisp->get("stay-group", stay_group);
+  lisp.get("stay-group", stay_group);
 
   all_sprite_changes.push_back(this);
 }
index 4f22ae1..fc9b9a2 100644 (file)
@@ -21,7 +21,7 @@
 #include <memory>
 #include <string>
 
-#include "lisp/lisp.hpp"
+#include "util/reader_fwd.hpp"
 #include "math/vector.hpp"
 #include "supertux/game_object.hpp"
 
@@ -32,7 +32,7 @@ namespace WorldMapNS {
 class SpriteChange : public GameObject
 {
 public:
-  SpriteChange(const lisp::Lisp* lisp);
+  SpriteChange(const Reader& lisp);
   virtual ~SpriteChange();
 
   virtual void draw(DrawingContext& context);
index 832fd6b..620a500 100644 (file)
 
 #include "sprite/sprite.hpp"
 #include "sprite/sprite_manager.hpp"
+#include "util/reader.hpp"
 #include "video/drawing_context.hpp"
 #include "worldmap/teleporter.hpp"
 
 namespace WorldMapNS {
 
-Teleporter::Teleporter(const lisp::Lisp* lisp) :
+Teleporter::Teleporter(const Reader& lisp) :
   pos(),
   sprite(),
   worldmap(),
@@ -30,18 +31,18 @@ Teleporter::Teleporter(const lisp::Lisp* lisp) :
   automatic(false),
   message()
 {
-  lisp->get("x", pos.x);
-  lisp->get("y", pos.y);
+  lisp.get("x", pos.x);
+  lisp.get("y", pos.y);
 
   std::string spritefile = "";
-  if (lisp->get("sprite", spritefile)) {
+  if (lisp.get("sprite", spritefile)) {
     sprite = sprite_manager->create(spritefile);
   }
 
-  lisp->get("worldmap", worldmap);
-  lisp->get("spawnpoint", spawnpoint);
-  lisp->get("automatic", automatic);
-  lisp->get("message", message);
+  lisp.get("worldmap", worldmap);
+  lisp.get("spawnpoint", spawnpoint);
+  lisp.get("automatic", automatic);
+  lisp.get("message", message);
 }
 
 void
index 0ab3d25..18c4236 100644 (file)
@@ -20,9 +20,9 @@
 #include <memory>
 #include <string>
 
-#include "lisp/lisp.hpp"
 #include "math/vector.hpp"
 #include "supertux/game_object.hpp"
+#include "util/reader_fwd.hpp"
 
 class Sprite;
 
@@ -31,7 +31,7 @@ namespace WorldMapNS {
 class Teleporter : public GameObject
 {
 public:
-  Teleporter(const lisp::Lisp* lisp);
+  Teleporter(const Reader& lisp);
 
   virtual void draw(DrawingContext& context);
   virtual void update(float elapsed_time);
index cbf550f..7ee24fc 100644 (file)
@@ -58,7 +58,7 @@
 #include "util/file_system.hpp"
 #include "util/gettext.hpp"
 #include "util/log.hpp"
-#include "util/log.hpp"
+#include "util/reader.hpp"
 #include "video/drawing_context.hpp"
 #include "video/surface.hpp"
 #include "worldmap/level.hpp"
@@ -356,22 +356,22 @@ WorldMap::load(const std::string& filename)
       } else if(iter.item() == "init-script") {
         iter.value()->get(init_script);
       } else if(iter.item() == "worldmap-spawnpoint") {
-        SpawnPoint* sp = new SpawnPoint(iter.lisp());
+        SpawnPoint* sp = new SpawnPoint(*iter.lisp());
         spawn_points.push_back(sp);
       } else if(iter.item() == "level") {
-        LevelTile* level = new LevelTile(levels_path, iter.lisp());
+        LevelTile* level = new LevelTile(levels_path, *iter.lisp());
         levels.push_back(level);
         add_object(level);
       } else if(iter.item() == "special-tile") {
-        SpecialTile* special_tile = new SpecialTile(iter.lisp());
+        SpecialTile* special_tile = new SpecialTile(*iter.lisp());
         special_tiles.push_back(special_tile);
         add_object(special_tile);
       } else if(iter.item() == "sprite-change") {
-        SpriteChange* sprite_change = new SpriteChange(iter.lisp());
+        SpriteChange* sprite_change = new SpriteChange(*iter.lisp());
         sprite_changes.push_back(sprite_change);
         add_object(sprite_change);
       } else if(iter.item() == "teleporter") {
-        Teleporter* teleporter = new Teleporter(iter.lisp());
+        Teleporter* teleporter = new Teleporter(*iter.lisp());
         teleporters.push_back(teleporter);
         add_object(teleporter);
       } else if(iter.item() == "ambient-light") {
index 8ca3bb3..b22cea1 100644 (file)
@@ -22,7 +22,7 @@
 #include <vector>
 
 #include "control/controller.hpp"
-#include "lisp/lisp.hpp"
+#include "util/reader_fwd.hpp"
 #include "math/vector.hpp"
 #include "supertux/console.hpp"
 #include "supertux/game_object.hpp"