#include <stdint.h>
#include "video/surface.hpp"
#include "math/rect.hpp"
-#include "lisp/lisp.hpp"
+namespace lisp { class Lisp; }
+
+class TileSet;
class DrawingContext;
/**
WATER = 0x0200,
/** a tile that hurts the player if he touches it */
HURTS = 0x0400,
+ /** for lava: WATER, HURTS, FIRE */
+ FIRE = 0x0800
};
/// worldmap flags
WORLDMAP_SOUTH = 0x0002,
WORLDMAP_EAST = 0x0004,
WORLDMAP_WEST = 0x0008,
+ WORLDMAP_DIR_MASK = 0x000f,
WORLDMAP_STOP = 0x0010,
};
private:
- unsigned int id;
-
+ const TileSet *tileset;
std::vector<ImageSpec> imagespecs;
- std::vector<Surface*> images;
+ std::vector<Surface*> images;
/// tile attributes
uint32_t attributes;
/** Draw a tile on the screen */
void draw(DrawingContext& context, const Vector& pos, int z_pos) const;
- unsigned int getID() const
- { return id; }
-
uint32_t getAttributes() const
{ return attributes; }
}
protected:
- friend class TileManager;
- Tile();
- Tile(unsigned int id, Uint32 attributes, const ImageSpec& imagespec);
+ friend class TileSet;
+ Tile(const TileSet *tileset);
+ Tile(const TileSet *tileset, Uint32 attributes, const ImageSpec& imagespec);
- void load_images(const std::string& tilesetpath);
+ void load_images();
/// parses the tile and returns it's id number
- void parse(const lisp::Lisp& reader);
+ uint32_t parse(const lisp::Lisp& reader);
void parse_images(const lisp::Lisp& cur);
};