implemented a new object factory mechanism which is now really independent of the...
[supertux.git] / src / object / tilemap.cpp
index fd6c74d..fb0cb63 100644 (file)
@@ -33,6 +33,7 @@
 #include "app/globals.h"
 #include "lisp/lisp.h"
 #include "lisp/writer.h"
+#include "object_factory.h"
 
 TileMap::TileMap()
   : solid(false), speed(1), width(0), height(0), layer(LAYER_TILES),
@@ -144,7 +145,9 @@ TileMap::draw(DrawingContext& context)
   /** if we don't round here, we'll have a 1 pixel gap on screen sometimes.
    * I have no idea why */
   float start_x = roundf(context.get_translation().x);
+  if(start_x < 0) start_x = 0;
   float start_y = roundf(context.get_translation().y);
+  if(start_y < 0) start_y = 0;
   float end_x = std::min(start_x + screen->w, float(width * 32));
   float end_y = std::min(start_y + screen->h, float(height * 32));
   start_x -= int(start_x) % 32;
@@ -275,3 +278,5 @@ TileMap::change_at(const Vector& pos, uint32_t newtile)
 {
   change(int(pos.x)/32, int(pos.y)/32, newtile);
 }
+
+IMPLEMENT_FACTORY(TileMap, "tilemap");