X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=9f997cf16d63d7f6d4603389a880b7f67b259cfe;hb=297ee9b33dab3bca9433befc81d7c7ce91450dd0;hp=df95c9d336ff7ed064fb095c09572b5149b947b0;hpb=0c6144aa1196e8121ba38716f9f95836d0ccbb9e;p=rocksndiamonds.git diff --git a/src/libgame/system.h b/src/libgame/system.h index df95c9d3..9f997cf1 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -24,6 +24,8 @@ #include "windows.h" #elif defined(PLATFORM_MSDOS) #include "msdos.h" +#elif defined(PLATFORM_ANDROID) +#include "android.h" #endif #if defined(TARGET_SDL) @@ -285,7 +287,18 @@ REDRAW_TILES | \ REDRAW_MICROLEVEL) #define REDRAW_FPS (1 << 11) + +#if defined(TARGET_X11) +/* on old-style, classic and potentially slow graphics systems, redraw single + tiles instead of the whole playfield unless a certain threshold is reached; + when using the X11 target, this method should still be fast on all systems */ #define REDRAWTILES_THRESHOLD (SCR_FIELDX * SCR_FIELDY / 2) +#else +/* on modern graphics systems and when using the SDL target, this tile redraw + optimization can slow things down a lot due to many small blits compared to + one single playfield-sized blit (especially observed on Mac OS X with SDL) */ +#define REDRAWTILES_THRESHOLD 0 +#endif #define IN_GFX_SCREEN(x, y) (x >= gfx.sx && x < gfx.sx + gfx.sxsize && \ y >= gfx.sy && y < gfx.sy + gfx.sysize) @@ -633,16 +646,22 @@ /* type definitions */ +#if defined(TARGET_SDL2) +typedef int (*EventFilter)(void *, Event *); +#else typedef int (*EventFilter)(const Event *); +#endif /* structure definitions */ struct ProgramInfo { - char *command_basepath; /* directory that contains the program */ + char *command_basepath; /* path to the program binary */ char *command_basename; /* base filename of the program binary */ + char *maindata_path; /* main game data (installation) directory */ + char *userdata_subdir; /* personal user game data directory */ char *userdata_subdir_unix; /* personal user game data directory (Unix) */ char *userdata_path; /* resulting full path to game data directory */ @@ -666,6 +685,7 @@ struct ProgramInfo int version_minor; int version_patch; + void (*exit_message_function)(char *, va_list); void (*exit_function)(int); }; @@ -933,6 +953,10 @@ struct SetupInfo int override_level_sounds; /* not boolean -- can also be "AUTO" */ int override_level_music; /* not boolean -- can also be "AUTO" */ + int volume_simple; + int volume_loops; + int volume_music; + struct SetupEditorInfo editor; struct SetupEditorCascadeInfo editor_cascade; struct SetupShortcutInfo shortcut; @@ -1201,6 +1225,9 @@ extern DrawBuffer *drawto; extern int button_status; extern boolean motion_status; +#if defined(TARGET_SDL2) +extern boolean keyrepeat_status; +#endif extern int redraw_mask; extern int redraw_tiles; @@ -1213,6 +1240,7 @@ extern int FrameCounter; void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, char *, int); +void InitExitMessageFunction(void (*exit_message_function)(char *, va_list)); void InitExitFunction(void (*exit_function)(int)); void InitPlatformDependentStuff(void); void ClosePlatformDependentStuff(void);