projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
removed support for 'real' (non-desktop) fullscreen mode for SDL2 target
[rocksndiamonds.git]
/
src
/
libgame
/
system.h
diff --git
a/src/libgame/system.h
b/src/libgame/system.h
index f7259356ee8eb5932f8d76d43605975a4eccaf59..98aa9c734422c31ac6b867feab2dc92539e49ccb 100644
(file)
--- a/
src/libgame/system.h
+++ b/
src/libgame/system.h
@@
-136,6
+136,10
@@
(b) <= MB_WHEEL_DOWN)
#define DEFAULT_WHEEL_STEPS 3
(b) <= MB_WHEEL_DOWN)
#define DEFAULT_WHEEL_STEPS 3
+#define BUTTON_STEPSIZE(b) ((b) == MB_LEFTBUTTON ? 1 : \
+ (b) == MB_MIDDLEBUTTON ? 5 : \
+ (b) == MB_RIGHTBUTTON ? 10 : 1)
+
/* values for move directions */
#define MV_BIT_LEFT 0
#define MV_BIT_RIGHT 1
/* values for move directions */
#define MV_BIT_LEFT 0
#define MV_BIT_RIGHT 1
@@
-161,6
+165,16
@@
/* values for special "focus player" bitmasks */
#define BIT_SET_FOCUS 6
/* values for special "focus player" bitmasks */
#define BIT_SET_FOCUS 6
+/* values for drawing stages for global animations */
+#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 move directions and special "button" key bitmasks */
#define MV_NONE 0
#define MV_LEFT (1 << MV_BIT_LEFT)
/* values for move directions and special "button" key bitmasks */
#define MV_NONE 0
#define MV_LEFT (1 << MV_BIT_LEFT)
@@
-217,6
+231,7
@@
MV_NONE)
/* values for animation mode (frame order and direction) */
MV_NONE)
/* values for animation mode (frame order and direction) */
+/* (stored in level files -- never change existing values) */
#define ANIM_NONE 0
#define ANIM_LOOP (1 << 0)
#define ANIM_LINEAR (1 << 1)
#define ANIM_NONE 0
#define ANIM_LOOP (1 << 0)
#define ANIM_LINEAR (1 << 1)
@@
-230,10
+245,13
@@
#define ANIM_OPAQUE_PLAYER (1 << 9)
/* values for special (non game element) animation modes */
#define ANIM_OPAQUE_PLAYER (1 << 9)
/* values for special (non game element) animation modes */
+/* (not stored in level files -- can be changed, if needed) */
#define ANIM_HORIZONTAL (1 << 10)
#define ANIM_VERTICAL (1 << 11)
#define ANIM_CENTERED (1 << 12)
#define ANIM_STATIC_PANEL (1 << 13)
#define ANIM_HORIZONTAL (1 << 10)
#define ANIM_VERTICAL (1 << 11)
#define ANIM_CENTERED (1 << 12)
#define ANIM_STATIC_PANEL (1 << 13)
+#define ANIM_ALL (1 << 14)
+#define ANIM_ONCE (1 << 15)
#define ANIM_DEFAULT ANIM_LOOP
#define ANIM_DEFAULT ANIM_LOOP
@@
-251,7
+269,8
@@
#define FADE_TYPE_TRANSFORM (1 << 2)
#define FADE_TYPE_CROSSFADE (1 << 3)
#define FADE_TYPE_MELT (1 << 4)
#define FADE_TYPE_TRANSFORM (1 << 2)
#define FADE_TYPE_CROSSFADE (1 << 3)
#define FADE_TYPE_MELT (1 << 4)
-#define FADE_TYPE_SKIP (1 << 5)
+#define FADE_TYPE_CURTAIN (1 << 5)
+#define FADE_TYPE_SKIP (1 << 6)
#define FADE_MODE_NONE (FADE_TYPE_NONE)
#define FADE_MODE_FADE_IN (FADE_TYPE_FADE_IN)
#define FADE_MODE_NONE (FADE_TYPE_NONE)
#define FADE_MODE_FADE_IN (FADE_TYPE_FADE_IN)
@@
-260,11
+279,23
@@
#define FADE_MODE_TRANSFORM (FADE_TYPE_TRANSFORM | FADE_TYPE_FADE_IN)
#define FADE_MODE_CROSSFADE (FADE_MODE_TRANSFORM | FADE_TYPE_CROSSFADE)
#define FADE_MODE_MELT (FADE_MODE_TRANSFORM | FADE_TYPE_MELT)
#define FADE_MODE_TRANSFORM (FADE_TYPE_TRANSFORM | FADE_TYPE_FADE_IN)
#define FADE_MODE_CROSSFADE (FADE_MODE_TRANSFORM | FADE_TYPE_CROSSFADE)
#define FADE_MODE_MELT (FADE_MODE_TRANSFORM | FADE_TYPE_MELT)
+#define FADE_MODE_CURTAIN (FADE_MODE_TRANSFORM | FADE_TYPE_CURTAIN)
#define FADE_MODE_SKIP_FADE_IN (FADE_TYPE_SKIP | FADE_TYPE_FADE_IN)
#define FADE_MODE_SKIP_FADE_OUT (FADE_TYPE_SKIP | FADE_TYPE_FADE_OUT)
#define FADE_MODE_DEFAULT FADE_MODE_FADE
#define FADE_MODE_SKIP_FADE_IN (FADE_TYPE_SKIP | FADE_TYPE_FADE_IN)
#define FADE_MODE_SKIP_FADE_OUT (FADE_TYPE_SKIP | FADE_TYPE_FADE_OUT)
#define FADE_MODE_DEFAULT FADE_MODE_FADE
+/* values for toon positions */
+#define POS_UNDEFINED -1
+#define POS_LEFT 0
+#define POS_RIGHT 1
+#define POS_TOP 2
+#define POS_UPPER 3
+#define POS_MIDDLE 4
+#define POS_LOWER 5
+#define POS_BOTTOM 6
+#define POS_ANY 7
+
/* values for text alignment */
#define ALIGN_LEFT (1 << 0)
#define ALIGN_RIGHT (1 << 1)
/* values for text alignment */
#define ALIGN_LEFT (1 << 0)
#define ALIGN_RIGHT (1 << 1)
@@
-287,30
+318,14
@@
#define REDRAW_NONE (0)
#define REDRAW_ALL (1 << 0)
#define REDRAW_FIELD (1 << 1)
#define REDRAW_NONE (0)
#define REDRAW_ALL (1 << 0)
#define REDRAW_FIELD (1 << 1)
-#define REDRAW_TILES (1 << 2)
-#define REDRAW_DOOR_1 (1 << 3)
-#define REDRAW_VIDEO_1 (1 << 4)
-#define REDRAW_VIDEO_2 (1 << 5)
-#define REDRAW_VIDEO_3 (1 << 6)
-#define REDRAW_MICROLEVEL (1 << 7)
-#define REDRAW_MICROLABEL (1 << 8)
-#define REDRAW_FROM_BACKBUFFER (1 << 9)
-#define REDRAW_DOOR_2 (REDRAW_VIDEO_1 | \
- REDRAW_VIDEO_2 | \
- REDRAW_VIDEO_3)
-#define REDRAW_DOOR_3 (1 << 10)
+#define REDRAW_DOOR_1 (1 << 2)
+#define REDRAW_DOOR_2 (1 << 3)
+#define REDRAW_DOOR_3 (1 << 4)
+#define REDRAW_FPS (1 << 5)
+
#define REDRAW_DOORS (REDRAW_DOOR_1 | \
REDRAW_DOOR_2 | \
REDRAW_DOOR_3)
#define REDRAW_DOORS (REDRAW_DOOR_1 | \
REDRAW_DOOR_2 | \
REDRAW_DOOR_3)
-#define REDRAW_MAIN (REDRAW_FIELD | \
- REDRAW_TILES | \
- REDRAW_MICROLEVEL)
-#define REDRAW_FPS (1 << 11)
-
-/* 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
#define IN_GFX_FIELD_PLAY(x, y) (x >= gfx.sx && x < gfx.sx + gfx.sxsize && \
y >= gfx.sy && y < gfx.sy + gfx.sysize)
#define IN_GFX_FIELD_PLAY(x, y) (x >= gfx.sx && x < gfx.sx + gfx.sxsize && \
y >= gfx.sy && y < gfx.sy + gfx.sysize)
@@
-368,6
+383,9
@@
/* default value for undefined filename */
#define UNDEFINED_FILENAME "[NONE]"
/* default value for undefined filename */
#define UNDEFINED_FILENAME "[NONE]"
+/* default value for undefined levelset */
+#define UNDEFINED_LEVELSET "[NONE]"
+
/* default value for undefined parameter */
#define ARG_DEFAULT "[DEFAULT]"
/* default value for undefined parameter */
#define ARG_DEFAULT "[DEFAULT]"
@@
-404,21
+422,15
@@
#define SND_CLASSIC_SUBDIR "snd_classic"
#define MUS_CLASSIC_SUBDIR "mus_classic"
#define SND_CLASSIC_SUBDIR "snd_classic"
#define MUS_CLASSIC_SUBDIR "mus_classic"
-#if defined(CREATE_SPECIAL_EDITION_RND_JUE)
-#define GFX_DEFAULT_SUBDIR "jue0"
-#define SND_DEFAULT_SUBDIR "jue0"
-#define MUS_DEFAULT_SUBDIR "jue0"
-#else
-#define GFX_DEFAULT_SUBDIR GFX_CLASSIC_SUBDIR
-#define SND_DEFAULT_SUBDIR SND_CLASSIC_SUBDIR
-#define MUS_DEFAULT_SUBDIR MUS_CLASSIC_SUBDIR
-#endif
+#define GFX_DEFAULT_SUBDIR (setup.internal.default_graphics_set)
+#define SND_DEFAULT_SUBDIR (setup.internal.default_sounds_set)
+#define MUS_DEFAULT_SUBDIR (setup.internal.default_music_set)
-#
if defined(CREATE_SPECIAL_EDITION
)
-#define
GFX_FALLBACK_FILENAME "fallback.pcx"
-#define
SND_FALLBACK_FILENAME "fallback.wav"
-#define MUS_FALLBACK_FILENAME "fallback.wav"
-#
endif
+#
define GFX_FALLBACK_FILENAME (setup.internal.fallback_graphics_file
)
+#define
SND_FALLBACK_FILENAME (setup.internal.fallback_sounds_file)
+#define
MUS_FALLBACK_FILENAME (setup.internal.fallback_music_file)
+
+#
define DEFAULT_LEVELSET (setup.internal.default_level_series)
/* file names and filename extensions */
#define LEVELSETUP_DIRECTORY "levelsetup"
/* file names and filename extensions */
#define LEVELSETUP_DIRECTORY "levelsetup"
@@
-437,7
+449,15
@@
#define TAPEFILE_EXTENSION "tape"
#define SCOREFILE_EXTENSION "score"
#define TAPEFILE_EXTENSION "tape"
#define SCOREFILE_EXTENSION "score"
-#define ERROR_BASENAME "stderr.txt"
+#define LOG_OUT_BASENAME "stdout.txt"
+#define LOG_ERR_BASENAME "stderr.txt"
+
+#define LOG_OUT_ID 0
+#define LOG_ERR_ID 1
+#define NUM_LOGS 2
+
+#define STRING_PARENT_DIRECTORY ".."
+#define STRING_TOP_DIRECTORY "/"
#define CHAR_PATH_SEPARATOR_UNIX '/'
#define CHAR_PATH_SEPARATOR_DOS '\\'
#define CHAR_PATH_SEPARATOR_UNIX '/'
#define CHAR_PATH_SEPARATOR_DOS '\\'
@@
-657,22
+677,24
@@
struct ProgramInfo
char *command_basepath; /* path to the program binary */
char *command_basename; /* base filename of the program binary */
char *command_basepath; /* path to the program binary */
char *command_basename; /* base filename of the program binary */
+ char *config_filename; /* optional global program config filename */
+
char *maindata_path; /* main game data (installation) directory */
char *userdata_subdir; /* personal user game data directory */
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 */
char *program_title;
char *window_title;
char *icon_title;
char *userdata_path; /* resulting full path to game data directory */
char *program_title;
char *window_title;
char *icon_title;
- char *
sdl_
icon_filename;
+ char *icon_filename;
char *cookie_prefix;
char *cookie_prefix;
- char *error_filename; /* filename where to write error messages to */
- FILE *error_file; /* (used instead of 'stderr' on some systems) */
+ char *log_filename[NUM_LOGS]; /* log filenames for out/err messages */
+ 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_major;
int version_minor;
int version_major;
int version_minor;
@@
-729,6
+751,8
@@
struct VideoSystemInfo
boolean window_scaling_available;
int window_scaling_percent;
char *window_scaling_quality;
boolean window_scaling_available;
int window_scaling_percent;
char *window_scaling_quality;
+
+ boolean initialized;
};
struct AudioSystemInfo
};
struct AudioSystemInfo
@@
-788,13
+812,23
@@
struct GfxInfo
int draw_deactivation_mask;
int draw_background_mask;
int draw_deactivation_mask;
int draw_background_mask;
- boolean drawing_area_changed;
-
Bitmap *field_save_buffer;
Bitmap *background_bitmap;
int background_bitmap_mask;
Bitmap *field_save_buffer;
Bitmap *background_bitmap;
int background_bitmap_mask;
+ Bitmap *fade_bitmap_source;
+ Bitmap *fade_bitmap_target;
+ Bitmap *fade_bitmap_black;
+
+ int fade_border_source_status;
+ int fade_border_target_status;
+ Bitmap *masked_border_bitmap_ptr;
+
+#if USE_FINAL_SCREEN_BITMAP
+ Bitmap *final_screen_bitmap;
+#endif
+
boolean clipping_enabled;
int clip_x, clip_y;
int clip_width, clip_height;
boolean clipping_enabled;
int clip_x, clip_y;
int clip_width, clip_height;
@@
-813,6
+847,10
@@
struct GfxInfo
int anim_random_frame;
void (*draw_busy_anim_function)(void);
int anim_random_frame;
void (*draw_busy_anim_function)(void);
+ void (*draw_global_anim_function)(int);
+ void (*draw_global_border_function)(int);
+
+ int cursor_mode;
};
struct JoystickInfo
};
struct JoystickInfo
@@
-926,6
+964,33
@@
struct SetupSystemInfo
int audio_fragment_size;
};
int audio_fragment_size;
};
+struct SetupInternalInfo
+{
+ char *program_title;
+ char *program_author;
+ char *program_email;
+ char *program_website;
+ char *program_copyright;
+ char *program_company;
+
+ char *program_icon_file;
+
+ char *default_graphics_set;
+ char *default_sounds_set;
+ char *default_music_set;
+
+ char *fallback_graphics_file;
+ char *fallback_sounds_file;
+ char *fallback_music_file;
+
+ char *default_level_series;
+
+ int default_window_width;
+ int default_window_height;
+
+ boolean choose_from_top_leveldir;
+};
+
struct SetupInfo
{
char *player_name;
struct SetupInfo
{
char *player_name;
@@
-937,7
+1002,7
@@
struct SetupInfo
boolean toons;
boolean scroll_delay;
boolean scroll_delay_value;
boolean toons;
boolean scroll_delay;
boolean scroll_delay_value;
-
boolean soft_scrolling
;
+
char *engine_snapshot_mode
;
boolean fade_screens;
boolean autorecord;
boolean show_titlescreen;
boolean fade_screens;
boolean autorecord;
boolean show_titlescreen;
@@
-958,6
+1023,7
@@
struct SetupInfo
int game_frame_delay;
boolean sp_show_border_elements;
boolean small_game_graphics;
int game_frame_delay;
boolean sp_show_border_elements;
boolean small_game_graphics;
+ boolean show_snapshot_buttons;
char *graphics_set;
char *sounds_set;
char *graphics_set;
char *sounds_set;
@@
-976,6
+1042,7
@@
struct SetupInfo
struct SetupInputInfo input[MAX_PLAYERS];
struct SetupTouchInfo touch;
struct SetupSystemInfo system;
struct SetupInputInfo input[MAX_PLAYERS];
struct SetupTouchInfo touch;
struct SetupSystemInfo system;
+ struct SetupInternalInfo internal;
struct OptionInfo options;
};
struct OptionInfo options;
};
@@
-1204,13
+1271,15
@@
struct DoorPartPosInfo
struct TextPosInfo
{
int x, y;
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 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 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;
};
int id;
};
@@
-1253,7
+1322,6
@@
extern boolean keyrepeat_status;
#endif
extern int redraw_mask;
#endif
extern int redraw_mask;
-extern int redraw_tiles;
extern int FrameCounter;
extern int FrameCounter;
@@
-1280,12
+1348,16
@@
void InitGfxWindowInfo(int, int);
void InitGfxScrollbufferInfo(int, int);
void InitGfxClipRegion(boolean, int, int, int, int);
void InitGfxDrawBusyAnimFunction(void (*draw_busy_anim_function)(void));
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 InitGfxDrawGlobalBorderFunction(void (*draw_global_border_function)(int));
void InitGfxCustomArtworkInfo();
void InitGfxCustomArtworkInfo();
+void InitGfxOtherSettings();
void SetDrawDeactivationMask(int);
void SetDrawBackgroundMask(int);
void SetWindowBackgroundBitmap(Bitmap *);
void SetMainBackgroundBitmap(Bitmap *);
void SetDoorBackgroundBitmap(Bitmap *);
void SetDrawDeactivationMask(int);
void SetDrawBackgroundMask(int);
void SetWindowBackgroundBitmap(Bitmap *);
void SetMainBackgroundBitmap(Bitmap *);
void SetDoorBackgroundBitmap(Bitmap *);
+void SetRedrawMaskFromArea(int, int, int, int);
void LimitScreenUpdates(boolean);
void LimitScreenUpdates(boolean);
@@
-1307,6
+1379,10
@@
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);
boolean DrawingOnBackground(int, int);
boolean DrawingAreaChanged();
void BlitBitmapOnBackground(Bitmap *, Bitmap *, int, int, int, int, int, int);
+void BlitTexture(Bitmap *, int, int, int, int, int, int);
+void BlitTextureMasked(Bitmap *, int, int, int, int, int, int);
+void BlitToScreen(Bitmap *, int, int, int, int, int, int);
+void BlitToScreenMasked(Bitmap *, int, int, int, int, int, int);
void DrawSimpleBlackLine(Bitmap *, int, int, int, int);
void DrawSimpleWhiteLine(Bitmap *, int, int, int, int);
void DrawLines(Bitmap *, struct XY *, int, Pixel);
void DrawSimpleBlackLine(Bitmap *, int, int, int, int);
void DrawSimpleWhiteLine(Bitmap *, int, int, int, int);
void DrawLines(Bitmap *, struct XY *, int, Pixel);
@@
-1316,7
+1392,6
@@
Pixel GetPixelFromRGBcompact(Bitmap *, unsigned int);
void KeyboardAutoRepeatOn(void);
void KeyboardAutoRepeatOff(void);
void KeyboardAutoRepeatOn(void);
void KeyboardAutoRepeatOff(void);
-boolean PointerInWindow(DrawWindow *);
boolean SetVideoMode(boolean);
boolean ChangeVideoModeIfNeeded(boolean);
boolean SetVideoMode(boolean);
boolean ChangeVideoModeIfNeeded(boolean);
@@
-1327,6
+1402,8
@@
void ReloadCustomImage(Bitmap *, char *);
Bitmap *ZoomBitmap(Bitmap *, int, int);
void ReCreateGameTileSizeBitmap(Bitmap **);
void CreateBitmapWithSmallBitmaps(Bitmap **, int, int);
Bitmap *ZoomBitmap(Bitmap *, int, int);
void ReCreateGameTileSizeBitmap(Bitmap **);
void CreateBitmapWithSmallBitmaps(Bitmap **, int, int);
+void CreateBitmapTextures(Bitmap **);
+void FreeBitmapTextures(Bitmap **);
void ScaleBitmap(Bitmap **, int);
void SetMouseCursor(int);
void ScaleBitmap(Bitmap **, int);
void SetMouseCursor(int);