X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=bc434d362208c8c28c65fa1bcf0ade268381aa6b;hb=37a06df577bbfd00f4b361f92cacb0d97036ba93;hp=903c982ca238b49f6cf10a2f86f2b1649450c743;hpb=3fb9d9cf97f3d4da6066f3c6b2ce84c81b768982;p=rocksndiamonds.git diff --git a/src/libgame/system.h b/src/libgame/system.h index 903c982c..bc434d36 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -100,7 +100,7 @@ #define BUTTON_2 5 /* values for move directions and special "button" key bitmasks */ -#define MV_NO_MOVING 0 +#define MV_NONE 0 #define MV_LEFT (1 << MV_BIT_LEFT) #define MV_RIGHT (1 << MV_BIT_RIGHT) #define MV_UP (1 << MV_BIT_UP) @@ -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_DIRECTION (MV_NONE) #define KEY_BUTTON_1 (1 << BUTTON_1) #define KEY_BUTTON_2 (1 << BUTTON_2) @@ -124,7 +125,7 @@ #define MV_DIR_OPPOSITE(x) ((x) == MV_LEFT ? MV_RIGHT : \ (x) == MV_RIGHT ? MV_LEFT : \ (x) == MV_UP ? MV_DOWN : \ - (x) == MV_DOWN ? MV_UP : MV_NO_MOVING) + (x) == MV_DOWN ? MV_UP : MV_NONE) /* values for animation mode (frame order and direction) */ @@ -134,11 +135,13 @@ #define ANIM_PINGPONG (1 << 2) #define ANIM_PINGPONG2 (1 << 3) #define ANIM_RANDOM (1 << 4) -#define ANIM_REVERSE (1 << 5) +#define ANIM_CE_VALUE (1 << 5) +#define ANIM_CE_SCORE (1 << 6) +#define ANIM_REVERSE (1 << 7) /* values for special (non game element) animation modes */ -#define ANIM_HORIZONTAL (1 << 6) -#define ANIM_VERTICAL (1 << 7) +#define ANIM_HORIZONTAL (1 << 8) +#define ANIM_VERTICAL (1 << 9) #define ANIM_DEFAULT ANIM_LOOP @@ -247,6 +250,7 @@ #define SETUP_FILENAME "setup.conf" #define LEVELSETUP_FILENAME "levelsetup.conf" #define EDITORSETUP_FILENAME "editorsetup.conf" +#define EDITORCASCADE_FILENAME "editorcascade.conf" #define HELPANIM_FILENAME "helpanim.conf" #define HELPTEXT_FILENAME "helptext.conf" #define LEVELINFO_FILENAME "levelinfo.conf" @@ -261,6 +265,7 @@ #define SETUP_FILENAME "setup.cnf" #define LEVELSETUP_FILENAME "lvlsetup.cnf" #define EDITORSETUP_FILENAME "edsetup.cnf" +#define EDITORCASCADE_FILENAME "edcascad.conf" #define HELPANIM_FILENAME "helpanim.cnf" #define HELPTEXT_FILENAME "helptext.cnf" #define LEVELINFO_FILENAME "lvlinfo.cnf" @@ -336,6 +341,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 +355,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 +390,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 +437,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; @@ -563,12 +590,30 @@ struct SetupEditorInfo boolean el_dx_boulderdash; boolean el_chars; boolean el_custom; - boolean el_custom_more; boolean el_user_defined; + boolean el_dynamic; boolean el_headlines; }; +struct SetupEditorCascadeInfo +{ + boolean el_bd; + boolean el_em; + boolean el_emc; + boolean el_rnd; + boolean el_sb; + boolean el_sp; + boolean el_dc; + boolean el_dx; + boolean el_chars; + boolean el_ce; + boolean el_ge; + boolean el_user; + boolean el_generic; + boolean el_dynamic; +}; + struct SetupShortcutInfo { Key save_game; @@ -613,6 +658,7 @@ struct SetupInfo boolean override_level_music; struct SetupEditorInfo editor; + struct SetupEditorCascadeInfo editor_cascade; struct SetupShortcutInfo shortcut; struct SetupInputInfo input[MAX_PLAYERS]; struct SetupSystemInfo system; @@ -865,6 +911,7 @@ inline void BlitBitmapMasked(Bitmap *, Bitmap *, int, int, int, int, int, int); inline boolean DrawingOnBackground(int, int); inline void BlitBitmapOnBackground(Bitmap *, Bitmap *, int, int, int, int, int, int); +inline void DrawSimpleBlackLine(Bitmap *, int, int, int, int); inline void DrawSimpleWhiteLine(Bitmap *, int, int, int, int); inline void DrawLines(Bitmap *, struct XY *, int, Pixel); inline Pixel GetPixel(Bitmap *, int, int);