#include <stdint.h>
#include "video/surface.hpp"
#include "math/rect.hpp"
-#include "lisp/lisp.hpp"
+
+namespace lisp { class Lisp; }
class DrawingContext;
public:
/// bitset for tile attributes
enum {
- /** solid tile that is indestructable by Tux */
+ /** solid tile that is indestructable by Tux */
SOLID = 0x0001,
/** uni-directional solid tile */
UNISOLID = 0x0002,
/* interesting flags (the following are passed to gameobjects) */
FIRST_INTERESTING_FLAG = 0x0100,
-
+
/** an ice brick that makes tux sliding more than usual */
ICE = 0x0100,
- /** a water tile in which tux starts to swim */
+ /** a water tile in which tux starts to swim */
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,
WORLDMAP_CSEW = WORLDMAP_SOUTH | WORLDMAP_EAST | WORLDMAP_WEST,
WORLDMAP_CNSEW = WORLDMAP_NORTH | WORLDMAP_SOUTH | WORLDMAP_EAST | WORLDMAP_WEST
};
-
+
struct ImageSpec {
ImageSpec(const std::string& newfile, const Rect& newrect)
: file(newfile), rect(newrect)
std::vector<ImageSpec> imagespecs;
std::vector<Surface*> images;
- /** tile attributes */
+ /// tile attributes
uint32_t attributes;
-
+
/** General purpose data attached to a tile (content of a box, type of coin)*/
int data;
-
+
float anim_fps;
public:
~Tile();
-
+
/** Draw a tile on the screen */
- void draw(DrawingContext& context, const Vector& pos, int layer) const;
+ void draw(DrawingContext& context, const Vector& pos, int z_pos) const;
unsigned int getID() const
{ return id; }
/// returns the width of the tile in pixels
int getWidth() const
- {
+ {
if(!images.size())
return 0;
return (int) images[0]->get_width();