supertux/sector.cpp: Add support for "south", "west" and "east" unisolid tiles.
[supertux.git] / src / supertux / tile.hpp
index 690aef3..805d85b 100644 (file)
 #include "video/surface.hpp"
 #include "util/reader_fwd.hpp"
 
-class TileSet;
 class DrawingContext;
 
 class Tile
 {
 public:
+  static bool draw_editor_images;
   /// bitset for tile attributes
   enum {
     /** solid tile that is indestructible by Tux */
@@ -91,10 +91,20 @@ public:
     Rectf rect;
   };
 
+  enum
+  {
+    UNI_DIR_NORTH = 0,
+    UNI_DIR_SOUTH = 1,
+    UNI_DIR_WEST  = 2,
+    UNI_DIR_EAST  = 3,
+    UNI_DIR_MASK  = 3
+  };
+
 private:
-  const TileSet&         tileset;
   std::vector<ImageSpec> imagespecs;
-  std::vector<Surface*>  images;
+  std::vector<SurfacePtr>  images;
+  std::vector<ImageSpec> editor_imagespecs;
+  std::vector<SurfacePtr>  editor_images;
 
   /// tile attributes
   uint32_t attributes;
@@ -102,12 +112,12 @@ private:
   /** General purpose data attached to a tile (content of a box, type of coin)*/
   int data;
 
-  float anim_fps;
+  float fps;
 
 public:
-  Tile(const TileSet& tileset);
-  Tile(const TileSet& tileset, const std::vector<ImageSpec>& images,
-       uint32_t attributes, uint32_t data, float animfps);
+  Tile();
+  Tile(const std::vector<ImageSpec>& images, const std::vector<ImageSpec>& editor_images,
+       uint32_t attributes, uint32_t data, float fps);
   ~Tile();
 
   /** load Surfaces, if not already loaded */
@@ -122,6 +132,16 @@ public:
   int getData() const
   { return data; }
 
+  bool is_slope (void) const
+  {
+    return ((attributes & SLOPE) != 0);
+  }
+
+  bool is_unisolid (void) const
+  {
+    return ((attributes & UNISOLID) != 0);
+  }
+
   void print_debug(int id) const;
 
 private: