#include <stdint.h>
#include "video/surface.hpp"
#include "math/rect.hpp"
-#include "lisp/lisp.hpp"
+namespace lisp { class Lisp; }
+
+class TileSet;
class DrawingContext;
/**
public:
/// bitset for tile attributes
enum {
- /** solid tile that is indestructable by Tux */
+ /** solid tile that is indestructible by Tux */
SOLID = 0x0001,
/** uni-directional solid tile */
UNISOLID = 0x0002,
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, std::vector<std::string> images, Rect rect,
+ Uint32 attributes = 0, Uint32 data = 0, float animfps = 1.0);
- 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);
+
+ //Correct small oddities in attributes that naive people
+ //might miss (and rebuke them for it)
+ void correct_attributes();
};
#endif