X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=4c05596d4231bc5b6e335ae26be4d1927a37a97e;hb=a765d70dda7da4500e7005ffa5913e24cd32c0fa;hp=bc434d362208c8c28c65fa1bcf0ade268381aa6b;hpb=ecd387d33963ae80311924143b2f49eb29642e7f;p=rocksndiamonds.git diff --git a/src/libgame/system.h b/src/libgame/system.h index bc434d36..4c05596d 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -95,6 +95,14 @@ #define NUM_DIRECTIONS 4 +/* diagonal movement directions are used in a different contect than buttons */ +#define MV_BIT_UPLEFT 4 +#define MV_BIT_UPRIGHT 5 +#define MV_BIT_DOWNLEFT 6 +#define MV_BIT_DOWNRIGHT 7 + +#define NUM_DIRECTIONS_FULL 8 + /* values for special "button" bitmasks */ #define BUTTON_1 4 #define BUTTON_2 5 @@ -106,6 +114,11 @@ #define MV_UP (1 << MV_BIT_UP) #define MV_DOWN (1 << MV_BIT_DOWN) +#define MV_UPLEFT (MV_UP | MV_LEFT) +#define MV_UPRIGHT (MV_UP | MV_RIGHT) +#define MV_DOWNLEFT (MV_DOWN | MV_LEFT) +#define MV_DOWNRIGHT (MV_DOWN | MV_RIGHT) + #define MV_HORIZONTAL (MV_LEFT | MV_RIGHT) #define MV_VERTICAL (MV_UP | MV_DOWN) #define MV_ALL_DIRECTIONS (MV_LEFT | MV_RIGHT | MV_UP | MV_DOWN) @@ -118,15 +131,32 @@ #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) - -#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_NONE) - +#define MV_DIR_FROM_BIT(x) ((x) < NUM_DIRECTIONS ? 1 << (x) : \ + (x) == MV_BIT_UPLEFT ? MV_UPLEFT : \ + (x) == MV_BIT_UPRIGHT ? MV_UPRIGHT : \ + (x) == MV_BIT_DOWNLEFT ? MV_DOWNLEFT : \ + (x) == MV_BIT_DOWNRIGHT ? MV_DOWNRIGHT : \ + MV_NONE) + +#define MV_DIR_TO_BIT(x) ((x) == MV_LEFT ? MV_BIT_LEFT : \ + (x) == MV_RIGHT ? MV_BIT_RIGHT : \ + (x) == MV_UP ? MV_BIT_UP : \ + (x) == MV_DOWN ? MV_BIT_DOWN : \ + (x) == MV_UPLEFT ? MV_BIT_UPLEFT : \ + (x) == MV_UPRIGHT ? MV_BIT_UPRIGHT : \ + (x) == MV_DOWNLEFT ? MV_BIT_DOWNLEFT : \ + (x) == MV_DOWNRIGHT ? MV_BIT_DOWNRIGHT : \ + MV_BIT_DOWN) + +#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 : \ + (x) == MV_UPLEFT ? MV_DOWNRIGHT : \ + (x) == MV_UPRIGHT ? MV_DOWNLEFT : \ + (x) == MV_DOWNLEFT ? MV_UPRIGHT : \ + (x) == MV_DOWNRIGHT ? MV_UPLEFT : \ + MV_NONE) /* values for animation mode (frame order and direction) */ #define ANIM_NONE 0 @@ -142,6 +172,7 @@ /* 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_DEFAULT ANIM_LOOP @@ -182,6 +213,10 @@ #define CURSOR_PLAYFIELD 1 +/* maximum playfield size supported by libgame functions */ +#define MAX_PLAYFIELD_WIDTH 128 +#define MAX_PLAYFIELD_HEIGHT 128 + /* maximum number of parallel players supported by libgame functions */ #define MAX_PLAYERS 4 @@ -649,6 +684,7 @@ struct SetupInfo boolean time_limit; boolean fullscreen; boolean ask_on_escape; + boolean quick_switch; char *graphics_set; char *sounds_set; @@ -855,6 +891,7 @@ extern struct ArtworkInfo artwork; extern struct JoystickInfo joystick; extern struct SetupInfo setup; +extern LevelDirTree *leveldir_first_all; extern LevelDirTree *leveldir_first; extern LevelDirTree *leveldir_current; extern int level_nr;