X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=d5027aecd803aedaa1543eb07bebe01fb748d927;hp=90e8bca7af8f4d39dff18f6ab32a2d26bd6e5b39;hb=f1f15272242355ab7bc94028b4fa4b2e0f8152b5;hpb=e863b9777df452d4d666e63b4dca8ae957cddd6b diff --git a/src/libgame/system.h b/src/libgame/system.h index 90e8bca7..d5027aec 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -1,15 +1,13 @@ -/*********************************************************** -* Artsoft Retro-Game Library * -*----------------------------------------------------------* -* (c) 1994-2006 Artsoft Entertainment * -* Holger Schemel * -* Detmolder Strasse 189 * -* 33604 Bielefeld * -* Germany * -* e-mail: info@artsoft.org * -*----------------------------------------------------------* -* system.h * -***********************************************************/ +// ============================================================================ +// Artsoft Retro-Game Library +// ---------------------------------------------------------------------------- +// (c) 1995-2014 by Artsoft Entertainment +// Holger Schemel +// info@artsoft.org +// http://www.artsoft.org/ +// ---------------------------------------------------------------------------- +// system.h +// ============================================================================ #ifndef SYSTEM_H #define SYSTEM_H @@ -22,17 +20,11 @@ #include "macosx.h" #elif defined(PLATFORM_WIN32) #include "windows.h" -#elif defined(PLATFORM_MSDOS) -#include "msdos.h" #elif defined(PLATFORM_ANDROID) #include "android.h" #endif -#if defined(TARGET_SDL) #include "sdl.h" -#elif defined(TARGET_X11) -#include "x11.h" -#endif /* the additional 'b' is needed for Win32 to open files in binary mode */ @@ -315,17 +307,10 @@ 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 +/* on modern graphics systems and when using the SDL target, the old 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_FIELD_PLAY(x, y) (x >= gfx.sx && x < gfx.sx + gfx.sxsize && \ y >= gfx.sy && y < gfx.sy + gfx.sysize) @@ -415,15 +400,9 @@ #define DOCS_DIRECTORY "docs" #define CACHE_DIRECTORY "cache" -#if !defined(PLATFORM_MSDOS) #define GFX_CLASSIC_SUBDIR "gfx_classic" #define SND_CLASSIC_SUBDIR "snd_classic" #define MUS_CLASSIC_SUBDIR "mus_classic" -#else -#define GFX_CLASSIC_SUBDIR "gfx_orig" -#define SND_CLASSIC_SUBDIR "snd_orig" -#define MUS_CLASSIC_SUBDIR "mus_orig" -#endif #if defined(CREATE_SPECIAL_EDITION_RND_JUE) #define GFX_DEFAULT_SUBDIR "jue0" @@ -442,7 +421,6 @@ #endif /* file names and filename extensions */ -#if !defined(PLATFORM_MSDOS) #define LEVELSETUP_DIRECTORY "levelsetup" #define SETUP_FILENAME "setup.conf" #define LEVELSETUP_FILENAME "levelsetup.conf" @@ -458,23 +436,6 @@ #define LEVELFILE_EXTENSION "level" #define TAPEFILE_EXTENSION "tape" #define SCOREFILE_EXTENSION "score" -#else -#define LEVELSETUP_DIRECTORY "lvlsetup" -#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" -#define GRAPHICSINFO_FILENAME "gfxinfo.cnf" -#define SOUNDSINFO_FILENAME "sndinfo.cnf" -#define MUSICINFO_FILENAME "musinfo.cnf" -#define ARTWORKINFO_CACHE_FILE "artinfo.cac" -#define LEVELFILE_EXTENSION "lvl" -#define TAPEFILE_EXTENSION "tap" -#define SCOREFILE_EXTENSION "sco" -#endif #define ERROR_BASENAME "stderr.txt" @@ -487,7 +448,7 @@ #define STRING_NEWLINE_UNIX "\n" #define STRING_NEWLINE_DOS "\r\n" -#if defined(PLATFORM_WIN32) || defined(PLATFORM_MSDOS) +#if defined(PLATFORM_WIN32) #define CHAR_PATH_SEPARATOR CHAR_PATH_SEPARATOR_DOS #define STRING_PATH_SEPARATOR STRING_PATH_SEPARATOR_DOS #define STRING_NEWLINE STRING_NEWLINE_DOS @@ -706,13 +667,9 @@ struct ProgramInfo char *window_title; char *icon_title; - char *x11_icon_filename; - char *x11_iconmask_filename; char *sdl_icon_filename; - char *msdos_cursor_filename; char *cookie_prefix; - char *filename_prefix; /* prefix to cut off from DOS filenames */ char *error_filename; /* filename where to write error messages to */ FILE *error_file; /* (used instead of 'stderr' on some systems) */ @@ -720,6 +677,8 @@ struct ProgramInfo int version_major; int version_minor; int version_patch; + int version_build; + int version_ident; char *(*window_title_function)(void); void (*exit_message_function)(char *, va_list); @@ -748,7 +707,6 @@ struct OptionInfo boolean network; boolean verbose; boolean debug; - boolean debug_x11_sync; }; struct ScreenModeInfo @@ -804,10 +762,6 @@ struct FontBitmapInfo int num_chars; int num_chars_per_line; - -#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND) - Pixmap *clip_mask; /* single-char-only clip mask array for X11 */ -#endif }; struct GfxInfo @@ -818,6 +772,8 @@ struct GfxInfo int full_sxsize, full_sysize; int scrollbuffer_width, scrollbuffer_height; + int game_tile_size, standard_tile_size; + int dx, dy; int dxsize, dysize; @@ -832,6 +788,8 @@ struct GfxInfo int draw_deactivation_mask; int draw_background_mask; + boolean drawing_area_changed; + Bitmap *field_save_buffer; Bitmap *background_bitmap; @@ -1246,13 +1204,15 @@ struct DoorPartPosInfo struct TextPosInfo { int x, y; + int xoffset; /* special case for tape date and time */ + int xoffset2; /* special case for tape date */ int width, height; int align, valign; - int size; + int size; /* also used for suffix ".digits" */ int font, font_alt; boolean draw_masked; boolean draw_player; /* special case for network player buttons */ - int sort_priority; + int sort_priority; /* also used for suffix ".draw_order" */ int id; }; @@ -1284,11 +1244,6 @@ extern int level_nr; extern struct LevelStats level_stats[]; -extern Display *display; -extern Visual *visual; -extern int screen; -extern Colormap cmap; - extern DrawWindow *window; extern DrawBuffer *backbuffer; extern DrawBuffer *drawto; @@ -1307,13 +1262,8 @@ extern int FrameCounter; /* function definitions */ -#if 1 -void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *, - char *, char *, char *, char *, int); -#else void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *, - char *, char *, char *, char *, char *, int); -#endif + int); void SetWindowTitle(); @@ -1324,6 +1274,7 @@ void InitPlatformDependentStuff(void); void ClosePlatformDependentStuff(void); void InitGfxFieldInfo(int, int, int, int, int, int, int, int, Bitmap *); +void InitGfxTileSizeInfo(int, int); void InitGfxDoor1Info(int, int, int, int); void InitGfxDoor2Info(int, int, int, int); void InitGfxDoor3Info(int, int, int, int); @@ -1354,10 +1305,9 @@ void FadeRectangle(Bitmap *bitmap, int, int, int, int, int, int, int, void FillRectangle(Bitmap *, int, int, int, int, Pixel); void ClearRectangle(Bitmap *, int, int, int, int); void ClearRectangleOnBackground(Bitmap *, int, int, int, int); -void SetClipMask(Bitmap *, GC, Pixmap); -void SetClipOrigin(Bitmap *, GC, int, int); void BlitBitmapMasked(Bitmap *, Bitmap *, int, int, int, int, int, int); boolean DrawingOnBackground(int, int); +boolean DrawingAreaChanged(); void BlitBitmapOnBackground(Bitmap *, Bitmap *, int, int, int, int, int, int); void DrawSimpleBlackLine(Bitmap *, int, int, int, int); void DrawSimpleWhiteLine(Bitmap *, int, int, int, int); @@ -1366,8 +1316,6 @@ Pixel GetPixel(Bitmap *, int, int); Pixel GetPixelFromRGB(Bitmap *, unsigned int,unsigned int,unsigned int); Pixel GetPixelFromRGBcompact(Bitmap *, unsigned int); -void FlushDisplay(void); -void SyncDisplay(void); void KeyboardAutoRepeatOn(void); void KeyboardAutoRepeatOff(void); boolean PointerInWindow(DrawWindow *); @@ -1379,8 +1327,9 @@ Bitmap *LoadCustomImage(char *); void ReloadCustomImage(Bitmap *, char *); Bitmap *ZoomBitmap(Bitmap *, int, int); -void CreateBitmapWithSmallBitmaps(Bitmap *, int); -void ScaleBitmap(Bitmap *, int); +void ReCreateGameTileSizeBitmap(Bitmap **); +void CreateBitmapWithSmallBitmaps(Bitmap **, int, int); +void ScaleBitmap(Bitmap **, int); void SetMouseCursor(int);