E_P_PLAYER, /* easier to find out if it is a player element */
E_P_MOVED_BY_CONVEYOR_TOP, /* can be moved by conveyor belt */
E_P_MOVED_BY_CONVEYOR_BOTTOM, /* can be moved UNDER the conveyor belt */
+
+ E_P_COLLECTIBLE, /* can be collected */
};
/* properties */
#define P_MOVED_BY_CONVEYOR_TOP (1 << E_P_MOVED_BY_CONVEYOR_TOP)
#define P_MOVED_BY_CONVEYOR_BOTTOM (1 << E_P_MOVED_BY_CONVEYOR_BOTTOM)
+#define P_COLLECTIBLE (1 << E_P_COLLECTIBLE)
+
/* These are states of the magic wall. */
typedef enum _magic_wall_state
{
boolean pneumatic_hammer_sound;
/* internal variables, used during the game. private data :) */
- GdElement* (*getp) (const struct _gd_cave*, int x, int y); /* returns a pointer to the element at x, y. this points to a perfect border or a line shifting get function. */
+
+ /* returns range corrected x/y position (points to perfect or line shifting get function) */
+ int (*getx) (const struct _gd_cave*, int x, int y);
+ int (*gety) (const struct _gd_cave*, int x, int y);
+
+ /* returns pointer to element at x, y (points to perfect border or a line shifting get function) */
+ GdElement* (*getp) (const struct _gd_cave*, int x, int y);
boolean hatched; /* hatching has happened. (timers may run, ...) */
boolean gate_open; /* self-explaining */