X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=42d0ee32b2972fb03fbcfbec79dc01c26396e129;hb=5b56a3369f281d29bbc45ec85443b1c3b2c27323;hp=6df8df049d31b2ddd092d2bf9885b6116031b572;hpb=04cfb5daeff6cbceef152fc01ad5852407c0c918;p=rocksndiamonds.git diff --git a/src/libgame/system.h b/src/libgame/system.h index 6df8df04..42d0ee32 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -196,22 +196,47 @@ #define ANIM_VERTICAL (1 << 11) #define ANIM_CENTERED (1 << 12) #define ANIM_STATIC_PANEL (1 << 13) -#define ANIM_FADE (1 << 14) -#define ANIM_CROSSFADE (1 << 15) #define ANIM_DEFAULT ANIM_LOOP +/* values for fade mode */ +#define FADE_TYPE_NONE 0 +#define FADE_TYPE_FADE_IN (1 << 0) +#define FADE_TYPE_FADE_OUT (1 << 1) +#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_MODE_NONE (FADE_TYPE_NONE) +#define FADE_MODE_FADE_IN (FADE_TYPE_FADE_IN) +#define FADE_MODE_FADE_OUT (FADE_TYPE_FADE_OUT) +#define FADE_MODE_FADE (FADE_TYPE_FADE_IN | FADE_TYPE_FADE_OUT) +#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_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 text alignment */ #define ALIGN_LEFT (1 << 0) #define ALIGN_RIGHT (1 << 1) #define ALIGN_CENTER (1 << 2) - #define ALIGN_DEFAULT ALIGN_LEFT -#define ALIGNED_XPOS(x,w,a) ((a) == ALIGN_CENTER ? (x) - (w) / 2 : \ - (a) == ALIGN_RIGHT ? (x) - (w) : (x)) -#define ALIGNED_TEXT_XPOS(p) ALIGNED_XPOS((p)->x, (p)->width, (p)->align) -#define ALIGNED_TEXT_YPOS(p) ((p)->y) +#define VALIGN_TOP (1 << 0) +#define VALIGN_BOTTOM (1 << 1) +#define VALIGN_MIDDLE (1 << 2) +#define VALIGN_DEFAULT VALIGN_TOP + +#define ALIGNED_XPOS(x,w,a) ((a) == ALIGN_CENTER ? (x) - (w) / 2 : \ + (a) == ALIGN_RIGHT ? (x) - (w) : (x)) +#define ALIGNED_YPOS(y,h,v) ((v) == VALIGN_MIDDLE ? (y) - (h) / 2 : \ + (v) == VALIGN_BOTTOM ? (y) - (h) : (y)) +#define ALIGNED_TEXT_XPOS(p) ALIGNED_XPOS((p)->x, (p)->width, (p)->align) +#define ALIGNED_TEXT_YPOS(p) ALIGNED_YPOS((p)->y, (p)->height, (p)->valign) /* values for redraw_mask */ #define REDRAW_NONE (0) @@ -238,10 +263,6 @@ #define REDRAW_FPS (1 << 11) #define REDRAWTILES_THRESHOLD (SCR_FIELDX * SCR_FIELDY / 2) -#define FADE_MODE_FADE_IN 0 -#define FADE_MODE_FADE_OUT 1 -#define FADE_MODE_CROSSFADE 2 - #define IN_GFX_SCREEN(x, y) (x >= gfx.sx && x < gfx.sx + gfx.sxsize && \ y >= gfx.sy && y < gfx.sy + gfx.sysize) #define IN_GFX_DOOR(x, y) (x >= gfx.dx && x < gfx.dx + gfx.dxsize && \ @@ -327,6 +348,22 @@ #define MUS_CLASSIC_SUBDIR "mus_orig" #endif +#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 + +#if defined(CREATE_SPECIAL_EDITION) +#define GFX_FALLBACK_FILENAME "fallback.pcx" +#define SND_FALLBACK_FILENAME "fallback.wav" +#define MUS_FALLBACK_FILENAME "fallback.wav" +#endif + /* file names and filename extensions */ #if !defined(PLATFORM_MSDOS) #define LEVELSETUP_DIRECTORY "levelsetup" @@ -504,6 +541,13 @@ (setup).override_level_sounds : \ (setup).override_level_music) +#define GFX_OVERRIDE_ARTWORK(type) \ + ((type) == ARTWORK_TYPE_GRAPHICS ? \ + gfx.override_level_graphics : \ + (type) == ARTWORK_TYPE_SOUNDS ? \ + gfx.override_level_sounds : \ + gfx.override_level_music) + #define ARTWORK_FIRST_NODE(artwork, type) \ ((type) == ARTWORK_TYPE_GRAPHICS ? \ (artwork).gfx_first : \ @@ -549,6 +593,12 @@ (type) == ARTWORK_TYPE_MUSIC ? \ options.music_directory : "") +#define UPDATE_BUSY_STATE() \ +{ \ + if (gfx.draw_busy_anim_function != NULL) \ + gfx.draw_busy_anim_function(); \ +} + /* type definitions */ typedef int (*EventFilter)(const Event *); @@ -606,6 +656,9 @@ struct OptionInfo boolean network; boolean verbose; boolean debug; + boolean debug_x11_sync; + + unsigned long cmd_switches; }; struct ScreenModeInfo @@ -675,6 +728,8 @@ struct GfxInfo int vx, vy; int vxsize, vysize; + int win_xsize, win_ysize; + int draw_deactivation_mask; int draw_background_mask; @@ -683,11 +738,20 @@ struct GfxInfo Bitmap *background_bitmap; int background_bitmap_mask; + boolean override_level_graphics; + boolean override_level_sounds; + boolean override_level_music; + + boolean draw_init_text; + int num_fonts; struct FontBitmapInfo *font_bitmap_info; int (*select_font_function)(int); + int (*get_font_from_token_function)(char *); int anim_random_frame; + + void (*draw_busy_anim_function)(void); }; struct JoystickInfo @@ -787,9 +851,8 @@ struct SetupInfo boolean sound_music; boolean sound_simple; boolean toons; - boolean double_buffering; - boolean direct_draw; /* !double_buffering (redundant!) */ boolean scroll_delay; + boolean scroll_delay_value; boolean soft_scrolling; boolean fade_screens; boolean autorecord; @@ -807,13 +870,14 @@ struct SetupInfo boolean input_on_focus; boolean prefer_aga_graphics; int game_frame_delay; + boolean sp_show_border_elements; char *graphics_set; char *sounds_set; char *music_set; - boolean override_level_graphics; - boolean override_level_sounds; - boolean override_level_music; + int override_level_graphics; /* not boolean -- can also be "AUTO" */ + int override_level_sounds; /* not boolean -- can also be "AUTO" */ + int override_level_music; /* not boolean -- can also be "AUTO" */ struct SetupEditorInfo editor; struct SetupEditorCascadeInfo editor_cascade; @@ -941,6 +1005,7 @@ struct FileInfo boolean redefined; boolean fallback_to_default; + boolean default_is_cloned; }; struct SetupFileList @@ -1019,16 +1084,19 @@ struct MenuPosInfo { int x, y; int width, height; - int align; + int align, valign; }; struct TextPosInfo { int x, y; int width, height; - int align; - int chars; + int align, valign; + int size; int font, font_alt; + boolean draw_masked; + int sort_priority; + int id; }; @@ -1081,7 +1149,10 @@ void ClosePlatformDependentStuff(void); void InitGfxFieldInfo(int, int, int, int, int, int, int, int, Bitmap *); void InitGfxDoor1Info(int, int, int, int); void InitGfxDoor2Info(int, int, int, int); +void InitGfxWindowInfo(int, int); void InitGfxScrollbufferInfo(int, int); +void InitGfxDrawBusyAnimFunction(void (*draw_busy_anim_function)(void)); +void InitGfxCustomArtworkInfo(); void SetDrawDeactivationMask(int); void SetDrawBackgroundMask(int); void SetWindowBackgroundBitmap(Bitmap *);