X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=ad6976c8781cf13e424e5eea556c9aa8eb5ef9b4;hp=9193f8a915cdca70f0470ba33e74df53bcd0a779;hb=5c5685a92a0ca8060018c4d035e6b37fea7e0f5a;hpb=8fbf8a2b1afed9d7b6fec76463eeff17405608a7 diff --git a/src/libgame/system.h b/src/libgame/system.h index 9193f8a9..ad6976c8 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -85,6 +85,7 @@ /* values for touch control */ #define TOUCH_CONTROL_VIRTUAL_BUTTONS "virtual_buttons" #define TOUCH_CONTROL_WIPE_GESTURES "wipe_gestures" +#define TOUCH_CONTROL_FOLLOW_FINGER "follow_finger" #define TOUCH_CONTROL_DEFAULT TOUCH_CONTROL_VIRTUAL_BUTTONS @@ -92,6 +93,15 @@ #define TOUCH_DROP_DISTANCE_DEFAULT 5 +/* values for special settings for mobile devices */ +#if defined(PLATFORM_ANDROID) +#define USE_TOUCH_INPUT_OVERLAY +#define USE_COMPLETE_DISPLAY +#define HAS_SCREEN_KEYBOARD +#define SCREEN_KEYBOARD_POS(h) ((h) / 2) +#endif + + /* default input keys */ #define DEFAULT_KEY_LEFT KSYM_Left #define DEFAULT_KEY_RIGHT KSYM_Right @@ -130,6 +140,34 @@ #define DEFAULT_KEY_SNAP_UP KSYM_UNDEFINED #define DEFAULT_KEY_SNAP_DOWN KSYM_UNDEFINED +/* default debug setup keys and values */ +#define DEFAULT_FRAME_DELAY_0 20 // 100 % speed +#define DEFAULT_FRAME_DELAY_1 500 // 4 % speed +#define DEFAULT_FRAME_DELAY_2 250 // 8 % speed +#define DEFAULT_FRAME_DELAY_3 125 // 16 % speed +#define DEFAULT_FRAME_DELAY_4 60 // 33 % speed +#define DEFAULT_FRAME_DELAY_5 40 // 50 % speed +#define DEFAULT_FRAME_DELAY_6 30 // 66 % speed +#define DEFAULT_FRAME_DELAY_7 10 // 200 % speed +#define DEFAULT_FRAME_DELAY_8 5 // 400 % speed +#define DEFAULT_FRAME_DELAY_9 0 // maximum speed + +#define DEFAULT_KEY_FRAME_DELAY_0 KSYM_0 +#define DEFAULT_KEY_FRAME_DELAY_1 KSYM_1 +#define DEFAULT_KEY_FRAME_DELAY_2 KSYM_2 +#define DEFAULT_KEY_FRAME_DELAY_3 KSYM_3 +#define DEFAULT_KEY_FRAME_DELAY_4 KSYM_4 +#define DEFAULT_KEY_FRAME_DELAY_5 KSYM_5 +#define DEFAULT_KEY_FRAME_DELAY_6 KSYM_6 +#define DEFAULT_KEY_FRAME_DELAY_7 KSYM_7 +#define DEFAULT_KEY_FRAME_DELAY_8 KSYM_8 +#define DEFAULT_KEY_FRAME_DELAY_9 KSYM_9 + +#define NUM_DEBUG_FRAME_DELAY_KEYS 10 + +#define DEFAULT_FRAME_DELAY_USE_MOD_KEY FALSE +#define DEFAULT_FRAME_DELAY_GAME_ONLY TRUE + /* values for key_status */ #define KEY_NOT_PRESSED FALSE #define KEY_RELEASED FALSE @@ -151,12 +189,12 @@ #define MB_WHEEL_DOWN 5 #define MB_WHEEL_LEFT 6 #define MB_WHEEL_RIGHT 7 -#define IS_WHEEL_BUTTON_VERTICAL(b) ((b) >= MB_WHEEL_UP && \ - (b) <= MB_WHEEL_DOWN) -#define IS_WHEEL_BUTTON_HORIZONTAL(b) ((b) >= MB_WHEEL_LEFT && \ - (b) <= MB_WHEEL_RIGHT) -#define IS_WHEEL_BUTTON(b) ((b) >= MB_WHEEL_UP && \ - (b) <= MB_WHEEL_DOWN) +#define IS_WHEEL_BUTTON_VERTICAL(b) ((b) == MB_WHEEL_UP || \ + (b) == MB_WHEEL_DOWN) +#define IS_WHEEL_BUTTON_HORIZONTAL(b) ((b) == MB_WHEEL_LEFT || \ + (b) == MB_WHEEL_RIGHT) +#define IS_WHEEL_BUTTON(b) (IS_WHEEL_BUTTON_VERTICAL(b) || \ + IS_WHEEL_BUTTON_HORIZONTAL(b)) #define DEFAULT_WHEEL_STEPS 3 #define BUTTON_STEPSIZE(b) ((b) == MB_LEFTBUTTON ? 1 : \ @@ -192,11 +230,12 @@ #define DRAW_GLOBAL_ANIM_STAGE_1 1 #define DRAW_GLOBAL_ANIM_STAGE_2 2 -/* values for drawing target for global border */ -#define DRAW_BORDER_TO_BACKBUFFER 0 -#define DRAW_BORDER_TO_SCREEN 1 -#define DRAW_BORDER_TO_FADE_SOURCE 2 -#define DRAW_BORDER_TO_FADE_TARGET 3 +/* values for drawing target (various functions) */ +#define DRAW_TO_BACKBUFFER 0 +#define DRAW_TO_FIELDBUFFER 1 +#define DRAW_TO_SCREEN 2 +#define DRAW_TO_FADE_SOURCE 3 +#define DRAW_TO_FADE_TARGET 4 /* values for move directions and special "button" key bitmasks */ #define MV_NONE 0 @@ -370,6 +409,7 @@ /* fundamental game speed values */ #define ONE_SECOND_DELAY 1000 /* delay value for one second */ +#define MENU_FRAME_DELAY 20 /* frame delay in milliseconds */ #define GAME_FRAME_DELAY 20 /* frame delay in milliseconds */ #define FFWD_FRAME_DELAY 10 /* 200% speed for fast forward */ #define FRAMES_PER_SECOND (ONE_SECOND_DELAY / GAME_FRAME_DELAY) @@ -468,6 +508,7 @@ #define SOUNDSINFO_FILENAME "soundsinfo.conf" #define MUSICINFO_FILENAME "musicinfo.conf" #define ARTWORKINFO_CACHE_FILE "artworkinfo.cache" +#define LEVELTEMPLATE_FILENAME "template.level" #define LEVELFILE_EXTENSION "level" #define TAPEFILE_EXTENSION "tape" #define SCOREFILE_EXTENSION "score" @@ -685,14 +726,6 @@ } -/* type definitions */ -#if defined(TARGET_SDL2) -typedef int (*EventFilter)(void *, Event *); -#else -typedef int (*EventFilter)(const Event *); -#endif - - /* structure definitions */ struct ProgramInfo @@ -728,6 +761,9 @@ struct ProgramInfo char *(*window_title_function)(void); void (*exit_message_function)(char *, va_list); void (*exit_function)(int); + + boolean global_scores; + boolean many_scores_per_name; }; struct OptionInfo @@ -747,6 +783,7 @@ struct OptionInfo char *special_flags; + boolean mytapes; boolean serveronly; boolean network; boolean verbose; @@ -758,6 +795,9 @@ struct VideoSystemInfo int default_depth; int width, height, depth; int window_width, window_height; + int display_width, display_height; + int screen_width, screen_height; + int screen_xoffset, screen_yoffset; boolean fullscreen_available; boolean fullscreen_enabled; @@ -771,6 +811,12 @@ struct VideoSystemInfo unsigned int frame_delay; unsigned int frame_delay_value; + boolean shifted_up; + int shifted_up_pos; + int shifted_up_pos_last; + unsigned int shifted_up_delay; + unsigned int shifted_up_delay_value; + boolean initialized; }; @@ -836,6 +882,7 @@ struct GfxInfo Bitmap *background_bitmap; int background_bitmap_mask; + Bitmap *fade_bitmap_backup; Bitmap *fade_bitmap_source; Bitmap *fade_bitmap_target; Bitmap *fade_bitmap_black; @@ -864,12 +911,17 @@ struct GfxInfo int anim_random_frame; void (*draw_busy_anim_function)(void); - void (*draw_global_anim_function)(int); + void (*draw_global_anim_function)(int, int); void (*draw_global_border_function)(int); int cursor_mode; }; +struct OverlayInfo +{ + boolean active; +}; + struct JoystickInfo { int status; @@ -917,6 +969,8 @@ struct SetupEditorInfo boolean el_dx_boulderdash; boolean el_chars; boolean el_steel_chars; + + boolean el_classic; boolean el_custom; boolean el_user_defined; boolean el_dynamic; @@ -1008,6 +1062,14 @@ struct SetupInternalInfo boolean choose_from_top_leveldir; }; +struct SetupDebugInfo +{ + int frame_delay[10]; + Key frame_delay_key[10]; + boolean frame_delay_use_mod_key; + boolean frame_delay_game_only; +}; + struct SetupInfo { char *player_name; @@ -1020,6 +1082,7 @@ struct SetupInfo boolean scroll_delay; boolean scroll_delay_value; char *engine_snapshot_mode; + int engine_snapshot_memory; boolean fade_screens; boolean autorecord; boolean show_titlescreen; @@ -1060,6 +1123,8 @@ struct SetupInfo struct SetupTouchInfo touch; struct SetupSystemInfo system; struct SetupInternalInfo internal; + struct SetupDebugInfo debug; + struct OptionInfo options; }; @@ -1252,6 +1317,12 @@ struct XY int x, y; }; +struct XYTileSize +{ + int x, y; + int tile_size; +}; + struct Rect { int x, y; @@ -1316,6 +1387,7 @@ extern struct OptionInfo options; extern struct VideoSystemInfo video; extern struct AudioSystemInfo audio; extern struct GfxInfo gfx; +extern struct OverlayInfo overlay; extern struct AnimInfo anim; extern struct ArtworkInfo artwork; extern struct JoystickInfo joystick; @@ -1334,6 +1406,7 @@ extern DrawBuffer *drawto; extern int button_status; extern boolean motion_status; +extern int wheel_steps; #if defined(TARGET_SDL2) extern boolean keyrepeat_status; #endif @@ -1348,6 +1421,7 @@ extern int FrameCounter; void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *, int); +void InitScoresInfo(); void SetWindowTitle(); void InitWindowTitleFunction(char *(*window_title_function)(void)); @@ -1365,10 +1439,13 @@ void InitGfxWindowInfo(int, int); void InitGfxScrollbufferInfo(int, int); void InitGfxClipRegion(boolean, int, int, int, int); void InitGfxDrawBusyAnimFunction(void (*draw_busy_anim_function)(void)); -void InitGfxDrawGlobalAnimFunction(void (*draw_global_anim_function)(int)); +void InitGfxDrawGlobalAnimFunction(void (*draw_global_anim_function)(int, int)); void InitGfxDrawGlobalBorderFunction(void (*draw_global_border_function)(int)); void InitGfxCustomArtworkInfo(); void InitGfxOtherSettings(); +void InitOverlayInfo(); +void SetOverlayActive(boolean); +boolean GetOverlayActive(); void SetDrawDeactivationMask(int); void SetDrawBackgroundMask(int); void SetWindowBackgroundBitmap(Bitmap *); @@ -1383,16 +1460,17 @@ void CloseVideoDisplay(void); void InitVideoBuffer(int, int, int, boolean); Bitmap *CreateBitmapStruct(void); Bitmap *CreateBitmap(int, int, int); -void ReCreateBitmap(Bitmap **, int, int, int); +void ReCreateBitmap(Bitmap **, int, int); void FreeBitmap(Bitmap *); void BlitBitmap(Bitmap *, Bitmap *, int, int, int, int, int, int); void BlitBitmapTiled(Bitmap *, Bitmap *, int, int, int, int, int, int, int,int); -void FadeRectangle(Bitmap *bitmap, int, int, int, int, int, int, int, +void FadeRectangle(int, int, int, int, int, int, int, void (*draw_border_function)(void)); void FillRectangle(Bitmap *, int, int, int, int, Pixel); void ClearRectangle(Bitmap *, int, int, int, int); void ClearRectangleOnBackground(Bitmap *, int, int, int, int); void BlitBitmapMasked(Bitmap *, Bitmap *, int, int, int, int, int, int); +boolean DrawingDeactivated(int, int, int, int); boolean DrawingOnBackground(int, int); boolean DrawingAreaChanged(); void BlitBitmapOnBackground(Bitmap *, Bitmap *, int, int, int, int, int, int); @@ -1418,7 +1496,6 @@ Bitmap *LoadImage(char *); Bitmap *LoadCustomImage(char *); void ReloadCustomImage(Bitmap *, char *); -Bitmap *ZoomBitmap(Bitmap *, int, int); void ReCreateGameTileSizeBitmap(Bitmap **); void CreateBitmapWithSmallBitmaps(Bitmap **, int, int); void CreateBitmapTextures(Bitmap **); @@ -1431,7 +1508,6 @@ void OpenAudio(void); void CloseAudio(void); void SetAudioMode(boolean); -void InitEventFilter(EventFilter); boolean PendingEvent(void); void NextEvent(Event *event); void PeekEvent(Event *event); @@ -1439,6 +1515,8 @@ Key GetEventKey(KeyEvent *, boolean); KeyMod HandleKeyModState(Key, int); KeyMod GetKeyModState(); KeyMod GetKeyModStateFromEvents(); +void StartTextInput(int, int, int, int); +void StopTextInput(); boolean CheckCloseWindowEvent(ClientMessageEvent *); void InitJoysticks();