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
{
GD_MV_LEFT = 7,
GD_MV_UP_LEFT = 8,
- /* to be able to type GD_MV_TWICE+GD_MV_DOWN, for example */
+ /* to be able to type GD_MV_TWICE + GD_MV_DOWN, for example */
GD_MV_TWICE = 8,
/* directions * 2 */
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 */