X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=5072584ee6441e9e1cdd6d68513b701072ede24b;hb=1290799ac0be42dc5db602dd113c5185df0a7e03;hp=920e464cfa12a5af0ab296bc879c4bbfdc6c88c0;hpb=87f531efe267aa3d6a27cc3a68c68c1a4df7b18b;p=rocksndiamonds.git diff --git a/src/libgame/system.h b/src/libgame/system.h index 920e464c..5072584e 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -67,17 +67,26 @@ #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 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 LOG_MV_DIR(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 @@ -131,6 +140,9 @@ /* 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" @@ -358,10 +370,14 @@ struct SetupInfo }; #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 { @@ -429,6 +445,47 @@ struct ArtworkInfo 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 */