X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=b5c5fcee6771397befef3e9f6710bf32f26f2e1b;hb=6cf6b75d5b9c84476a121cfd2ff11a0351ecba47;hp=d11f71b4bf56962f43c34efe73da8c9cd0230bf4;hpb=33775032e403b28c89ee7c60b64a456d30a013fb;p=rocksndiamonds.git diff --git a/src/libgame/system.h b/src/libgame/system.h index d11f71b4..b5c5fcee 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -83,11 +83,16 @@ #endif /* values for touch control */ +#define TOUCH_CONTROL_OFF "off" #define TOUCH_CONTROL_VIRTUAL_BUTTONS "virtual_buttons" #define TOUCH_CONTROL_WIPE_GESTURES "wipe_gestures" #define TOUCH_CONTROL_FOLLOW_FINGER "follow_finger" +#if defined(PLATFORM_ANDROID) #define TOUCH_CONTROL_DEFAULT TOUCH_CONTROL_VIRTUAL_BUTTONS +#else +#define TOUCH_CONTROL_DEFAULT TOUCH_CONTROL_OFF +#endif #define TOUCH_MOVE_DISTANCE_DEFAULT 2 #define TOUCH_DROP_DISTANCE_DEFAULT 5 @@ -101,7 +106,6 @@ #define SCREEN_KEYBOARD_POS(h) ((h) / 2) #endif - /* default input keys */ #define DEFAULT_KEY_LEFT KSYM_Left #define DEFAULT_KEY_RIGHT KSYM_Right @@ -447,6 +451,45 @@ #define MAX_GLOBAL_ANIMS 32 #define MAX_GLOBAL_ANIM_PARTS 32 +/* minimum/maximum/default x/y grid size for virtual buttons */ +#define MIN_GRID_XSIZE 3 +#define MIN_GRID_YSIZE 3 +#define MAX_GRID_XSIZE 32 +#define MAX_GRID_YSIZE 32 +#define GRID_REAL_WIDTH MAX(video.screen_width, \ + video.screen_height) +#define GRID_REAL_HEIGHT MIN(video.screen_width, \ + video.screen_height) +#define DEFAULT_GRID_XSIZE_0 18 +#define DEFAULT_GRID_YSIZE_0 MIN(MAX(MIN_GRID_YSIZE, \ + DEFAULT_GRID_XSIZE_0 * \ + GRID_REAL_HEIGHT / \ + GRID_REAL_WIDTH), \ + MAX_GRID_YSIZE) +#define DEFAULT_GRID_XSIZE_1 13 +#define DEFAULT_GRID_YSIZE_1 MIN(MAX(MIN_GRID_YSIZE, \ + DEFAULT_GRID_XSIZE_1 * \ + GRID_REAL_WIDTH / \ + GRID_REAL_HEIGHT), \ + MAX_GRID_YSIZE) + +#define DEFAULT_GRID_XSIZE(n) (n == 0 ? DEFAULT_GRID_XSIZE_0 : \ + DEFAULT_GRID_XSIZE_1) +#define DEFAULT_GRID_YSIZE(n) (n == 0 ? DEFAULT_GRID_YSIZE_0 : \ + DEFAULT_GRID_YSIZE_1) + +#define GRID_ACTIVE_NR() (video.screen_width > \ + video.screen_height ? 0 : 1) + +/* values for grid button characters for virtual buttons */ +#define CHAR_GRID_BUTTON_NONE ' ' +#define CHAR_GRID_BUTTON_LEFT '<' +#define CHAR_GRID_BUTTON_RIGHT '>' +#define CHAR_GRID_BUTTON_UP '^' +#define CHAR_GRID_BUTTON_DOWN 'v' +#define CHAR_GRID_BUTTON_SNAP '1' +#define CHAR_GRID_BUTTON_DROP '2' + /* default name for empty highscore entry */ #define EMPTY_PLAYER_NAME "no name" @@ -591,10 +634,15 @@ /* macros for version handling */ -#define VERSION_MAJOR(x) ((x) / 1000000) -#define VERSION_MINOR(x) (((x) % 1000000) / 10000) -#define VERSION_PATCH(x) (((x) % 10000) / 100) -#define VERSION_BUILD(x) ((x) % 100) +#define VERSION_PART_1(x) ((x) / 1000000) +#define VERSION_PART_2(x) (((x) % 1000000) / 10000) +#define VERSION_PART_3(x) (((x) % 10000) / 100) +#define VERSION_PART_4(x) ((x) % 100) + +#define VERSION_SUPER(x) VERSION_PART_1(x) +#define VERSION_MAJOR(x) VERSION_PART_2(x) +#define VERSION_MINOR(x) VERSION_PART_3(x) +#define VERSION_PATCH(x) VERSION_PART_4(x) #define VERSION_IDENT(a,b,c,d) ((a) * 1000000 + (b) * 10000 + (c) * 100 + (d)) @@ -775,10 +823,10 @@ struct ProgramInfo FILE *log_file[NUM_LOGS]; /* log file handles for out/err files */ FILE *log_file_default[NUM_LOGS]; /* default log file handles (out/err) */ + int version_super; int version_major; int version_minor; int version_patch; - int version_build; int version_ident; char *version_string; @@ -944,14 +992,40 @@ struct GfxInfo void (*draw_busy_anim_function)(void); void (*draw_global_anim_function)(int, int); void (*draw_global_border_function)(int); + void (*draw_tile_cursor_function)(int); int cursor_mode; }; +struct TileCursorInfo +{ + boolean enabled; /* tile cursor generally enabled or disabled */ + boolean active; /* tile cursor activated (depending on game) */ + boolean moving; /* tile cursor moving to target position */ + + int xpos, ypos; /* tile cursor level playfield position */ + int x, y; /* tile cursor current screen position */ + int target_x, target_y; /* tile cursor target screen position */ + + int sx, sy; /* tile cursor screen start position */ +}; + struct OverlayInfo { boolean enabled; /* overlay generally enabled or disabled */ boolean active; /* overlay activated (depending on game mode) */ + + boolean show_grid; + boolean show_grid_buttons; + + int grid_xsize_all[2]; + int grid_ysize_all[2]; + int grid_xsize; + int grid_ysize; + + char grid_button_all[2][MAX_GRID_XSIZE][MAX_GRID_YSIZE]; + char grid_button[MAX_GRID_XSIZE][MAX_GRID_YSIZE]; + char grid_button_highlight; }; struct JoystickInfo @@ -1434,6 +1508,7 @@ struct MouseActionInfo { int lx, ly; int button; + int button_hint; }; struct LevelStats @@ -1452,6 +1527,7 @@ extern struct OptionInfo options; extern struct VideoSystemInfo video; extern struct AudioSystemInfo audio; extern struct GfxInfo gfx; +extern struct TileCursorInfo tile_cursor; extern struct OverlayInfo overlay; extern struct AnimInfo anim; extern struct ArtworkInfo artwork; @@ -1506,11 +1582,19 @@ void InitGfxClipRegion(boolean, int, int, int, int); void InitGfxDrawBusyAnimFunction(void (*draw_busy_anim_function)(void)); void InitGfxDrawGlobalAnimFunction(void (*draw_global_anim_function)(int, int)); void InitGfxDrawGlobalBorderFunction(void (*draw_global_border_function)(int)); +void InitGfxDrawTileCursorFunction(void (*draw_tile_cursor_function)(int)); void InitGfxCustomArtworkInfo(); void InitGfxOtherSettings(); +void InitTileCursorInfo(); void InitOverlayInfo(); +void SetTileCursorEnabled(boolean); +void SetTileCursorActive(boolean); +void SetTileCursorTargetXY(int, int); +void SetTileCursorXY(int, int); +void SetTileCursorSXSY(int, int); void SetOverlayEnabled(boolean); void SetOverlayActive(boolean); +void SetOverlayShowGrid(boolean); boolean GetOverlayActive(); void SetDrawDeactivationMask(int); int GetDrawDeactivationMask(void);