#define DEFAULT_KEY_TOGGLE_PAUSE KSYM_space
/* values for move directions and special "button" keys */
+#define MV_BIT_LEFT 0
+#define MV_BIT_RIGHT 1
+#define MV_BIT_UP 2
+#define MV_BIT_DOWN 3
+#define NUM_MV_DIRECTIONS 4
+
#define MV_NO_MOVING 0
-#define MV_LEFT (1 << 0)
-#define MV_RIGHT (1 << 1)
-#define MV_UP (1 << 2)
-#define MV_DOWN (1 << 3)
+#define MV_LEFT (1 << MV_BIT_LEFT)
+#define MV_RIGHT (1 << MV_BIT_RIGHT)
+#define MV_UP (1 << MV_BIT_UP)
+#define MV_DOWN (1 << MV_BIT_DOWN)
#define KEY_BUTTON_1 (1 << 4)
#define KEY_BUTTON_2 (1 << 5)
#define KEY_MOTION (MV_LEFT | MV_RIGHT | MV_UP | MV_DOWN)
#define KEY_BUTTON (KEY_BUTTON_1 | KEY_BUTTON_2)
#define KEY_ACTION (KEY_MOTION | KEY_BUTTON)
+#define MV_DIR_BIT(x) ((x) == MV_LEFT ? MV_BIT_LEFT : \
+ (x) == MV_RIGHT ? MV_BIT_RIGHT : \
+ (x) == MV_UP ? MV_BIT_UP : MV_BIT_DOWN)
+
/* values for button status */
#define MB_NOT_PRESSED FALSE
#define MB_NOT_RELEASED TRUE
/* default text for non-existant artwork */
#define NOT_AVAILABLE "(not available)"
+/* default value for undefined filename */
+#define UNDEFINED_FILENAME "[NONE]"
+
/* default name for new levels */
#define NAMELESS_LEVEL_NAME "nameless level"
};
#define TREE_TYPE_GENERIC 0
-#define TREE_TYPE_LEVEL_DIR 1
-#define TREE_TYPE_GRAPHICS_DIR 2
-#define TREE_TYPE_SOUNDS_DIR 3
-#define TREE_TYPE_MUSIC_DIR 4
+#define TREE_TYPE_GRAPHICS_DIR 1
+#define TREE_TYPE_SOUNDS_DIR 2
+#define TREE_TYPE_MUSIC_DIR 3
+#define TREE_TYPE_LEVEL_DIR 4
+
+#define ARTWORK_TYPE_GRAPHICS TREE_TYPE_GRAPHICS_DIR
+#define ARTWORK_TYPE_SOUNDS TREE_TYPE_SOUNDS_DIR
+#define ARTWORK_TYPE_MUSIC TREE_TYPE_MUSIC_DIR
struct TreeInfo
{
char *mus_current_identifier;
};
+struct ConfigInfo
+{
+ char *token;
+ char *value;
+};
+
+struct FileInfo
+{
+ char *token;
+
+ char *default_filename;
+ char *filename;
+
+ int *default_parameter; /* array of file parameters */
+ int *parameter; /* array of file parameters */
+};
+
+struct ListNodeInfo
+{
+ char *source_filename; /* primary key for node list */
+ int num_references;
+};
+
+struct ArtworkListInfo
+{
+ int type; /* type of artwork */
+
+ int num_file_list_entries;
+ int num_suffix_list_entries;
+
+ struct FileInfo *file_list; /* static artwork file array */
+ struct ConfigInfo *suffix_list; /* parameter suffixes array */
+
+ struct ListNodeInfo **artwork_list; /* static artwork node array */
+
+ struct ListNode *content_list; /* dynamic artwork node list */
+
+ void *(*load_artwork)(char *); /* constructor function */
+ void (*free_artwork)(void *); /* destructor function */
+};
+
/* ========================================================================= */
/* exported variables */