#define BUTTON_1 4
#define BUTTON_2 5
+/* values for special "focus player" bitmasks */
+#define BIT_SET_FOCUS 6
+
/* values for move directions and special "button" key bitmasks */
#define MV_NONE 0
#define MV_LEFT (1 << MV_BIT_LEFT)
#define KEY_BUTTON (KEY_BUTTON_1 | KEY_BUTTON_2)
#define KEY_ACTION (KEY_MOTION | KEY_BUTTON)
+#define KEY_SET_FOCUS (1 << BIT_SET_FOCUS)
+
#define MV_DIR_FROM_BIT(x) ((x) < NUM_DIRECTIONS ? 1 << (x) : \
(x) == MV_BIT_UPLEFT ? MV_UPLEFT : \
(x) == MV_BIT_UPRIGHT ? MV_UPRIGHT : \
#define ANIM_CE_VALUE (1 << 5)
#define ANIM_CE_SCORE (1 << 6)
#define ANIM_REVERSE (1 << 7)
+#define ANIM_OPAQUE_PLAYER (1 << 8)
/* values for special (non game element) animation modes */
-#define ANIM_HORIZONTAL (1 << 8)
-#define ANIM_VERTICAL (1 << 9)
-#define ANIM_STATIC_PANEL (1 << 10)
+#define ANIM_HORIZONTAL (1 << 9)
+#define ANIM_VERTICAL (1 << 10)
+#define ANIM_STATIC_PANEL (1 << 11)
#define ANIM_DEFAULT ANIM_LOOP
#define CURSOR_DEFAULT 0
#define CURSOR_PLAYFIELD 1
+/* fundamental game speed values */
+#define ONE_SECOND_DELAY 1000 /* delay value for one second */
+#define GAME_FRAME_DELAY 20 /* frame delay in milliseconds */
+#define FFWD_FRAME_DELAY 10 /* 200% speed for fast forward */
+#define FRAMES_PER_SECOND (ONE_SECOND_DELAY / GAME_FRAME_DELAY)
/* maximum playfield size supported by libgame functions */
#define MAX_PLAYFIELD_WIDTH 128
boolean ask_on_escape;
boolean ask_on_escape_editor;
boolean quick_switch;
+ boolean input_on_focus;
char *graphics_set;
char *sounds_set;