X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=0b210ed01f0584645db71364b390fbfa5700432a;hb=de94c39950b38b1dd99f387cda61cb650214b59e;hp=98b508606d7d85f33b6126edff2e335eef30eae5;hpb=ec36fe263402351ac67b70400f11096a044365fe;p=rocksndiamonds.git diff --git a/src/libgame/system.h b/src/libgame/system.h index 98b50860..0b210ed0 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -110,6 +110,7 @@ #define MV_VERTICAL (MV_UP | MV_DOWN) #define MV_ALL_DIRECTIONS (MV_LEFT | MV_RIGHT | MV_UP | MV_DOWN) #define MV_ANY_DIRECTION (MV_ALL_DIRECTIONS) +#define MV_NO_DIRECTIONS (MV_NO_MOVING) #define KEY_BUTTON_1 (1 << BUTTON_1) #define KEY_BUTTON_2 (1 << BUTTON_2) @@ -336,6 +337,13 @@ /* values for artwork handling */ +#define LEVELDIR_ARTWORK_SET_PTR(leveldir, type) \ + ((type) == ARTWORK_TYPE_GRAPHICS ? \ + &(leveldir)->graphics_set : \ + (type) == ARTWORK_TYPE_SOUNDS ? \ + &(leveldir)->sounds_set : \ + &(leveldir)->music_set) + #define LEVELDIR_ARTWORK_SET(leveldir, type) \ ((type) == ARTWORK_TYPE_GRAPHICS ? \ (leveldir)->graphics_set : \ @@ -343,6 +351,13 @@ (leveldir)->sounds_set : \ (leveldir)->music_set) +#define LEVELDIR_ARTWORK_PATH_PTR(leveldir, type) \ + ((type) == ARTWORK_TYPE_GRAPHICS ? \ + &(leveldir)->graphics_path : \ + (type) == ARTWORK_TYPE_SOUNDS ? \ + &(leveldir)->sounds_path : \ + &(leveldir)->music_path) + #define LEVELDIR_ARTWORK_PATH(leveldir, type) \ ((type) == ARTWORK_TYPE_GRAPHICS ? \ (leveldir)->graphics_path : \ @@ -371,6 +386,13 @@ (artwork).snd_first : \ (artwork).mus_first) +#define ARTWORK_CURRENT_IDENTIFIER_PTR(artwork, type) \ + ((type) == ARTWORK_TYPE_GRAPHICS ? \ + &(artwork).gfx_current_identifier : \ + (type) == ARTWORK_TYPE_SOUNDS ? \ + &(artwork).snd_current_identifier : \ + &(artwork).mus_current_identifier) + #define ARTWORK_CURRENT_IDENTIFIER(artwork, type) \ ((type) == ARTWORK_TYPE_GRAPHICS ? \ (artwork).gfx_current_identifier : \ @@ -411,8 +433,9 @@ typedef int (*EventFilter)(const Event *); struct ProgramInfo { - char *command_basename; - char *userdata_directory; + char *command_basepath; /* directory that contains the program */ + char *command_basename; /* base filename of the program binary */ + char *userdata_directory; /* personal user data directory */ char *program_title; char *window_title; @@ -600,6 +623,7 @@ struct SetupInfo boolean quick_doors; boolean team_mode; boolean handicap; + boolean skip_levels; boolean time_limit; boolean fullscreen; boolean ask_on_escape; @@ -640,6 +664,7 @@ struct TreeInfo char *name_sorting; /* optional sorting name for correct name sorting */ char *author; /* level or artwork author name */ char *imported_from; /* optional comment for imported levels or artwork */ + char *imported_by; /* optional comment for imported levels or artwork */ char *graphics_set; /* optional custom graphics set (level tree only) */ char *sounds_set; /* optional custom sounds set (level tree only) */ @@ -660,9 +685,11 @@ struct TreeInfo boolean level_group; /* directory contains more level series directories */ boolean parent_link; /* entry links back to parent directory */ - boolean user_defined; /* user defined levels are stored in home directory */ + boolean in_user_dir; /* user defined levels are stored in home directory */ + boolean user_defined; /* levels in user directory and marked as "private" */ boolean readonly; /* readonly levels can not be changed with editor */ boolean handicap; /* level set has no handicap when set to "false" */ + boolean skip_levels; /* levels can be skipped when set to "true" */ int color; /* color to use on selection screen for this level */ char *class_desc; /* description of level series class */ @@ -726,6 +753,7 @@ struct FileInfo char **parameter; /* array of file parameters */ boolean redefined; + boolean fallback_to_default; }; struct SetupFileList @@ -890,6 +918,7 @@ inline void SetAudioMode(boolean); inline void InitEventFilter(EventFilter); inline boolean PendingEvent(void); inline void NextEvent(Event *event); +inline void PeekEvent(Event *event); inline Key GetEventKey(KeyEvent *, boolean); inline KeyMod HandleKeyModState(Key, int); inline KeyMod GetKeyModState();