X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=a340b21844dc3dd12707617ac90ae1ab9473d8d0;hp=4c05596d4231bc5b6e335ae26be4d1927a37a97e;hb=56814df201c2d86273cf54e0e94c0448ce9bdd0f;hpb=a765d70dda7da4500e7005ffa5913e24cd32c0fa diff --git a/src/libgame/system.h b/src/libgame/system.h index 4c05596d..a340b218 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -1,7 +1,7 @@ /*********************************************************** * Artsoft Retro-Game Library * *----------------------------------------------------------* -* (c) 1994-2002 Artsoft Entertainment * +* (c) 1994-2006 Artsoft Entertainment * * Holger Schemel * * Detmolder Strasse 189 * * 33604 Bielefeld * @@ -34,78 +34,99 @@ /* the additional 'b' is needed for Win32 to open files in binary mode */ -#define MODE_READ "rb" -#define MODE_WRITE "wb" -#define MODE_APPEND "ab" +#define MODE_READ "rb" +#define MODE_WRITE "wb" +#define MODE_APPEND "ab" -#define DEFAULT_DEPTH 0 +#define DEFAULT_DEPTH 0 -#define BLIT_OPAQUE 0 -#define BLIT_MASKED 1 -#define BLIT_INVERSE 2 -#define BLIT_ON_BACKGROUND 3 +#define BLIT_OPAQUE 0 +#define BLIT_MASKED 1 +#define BLIT_INVERSE 2 +#define BLIT_ON_BACKGROUND 3 -#define FULLSCREEN_NOT_AVAILABLE FALSE -#define FULLSCREEN_AVAILABLE TRUE +#define FULLSCREEN_NOT_AVAILABLE FALSE +#define FULLSCREEN_AVAILABLE TRUE + +#define CREATE_SPECIAL_EDITION FALSE +#define CREATE_SPECIAL_EDITION_RND_JUE FALSE /* default input keys */ -#define DEFAULT_KEY_LEFT KSYM_Left -#define DEFAULT_KEY_RIGHT KSYM_Right -#define DEFAULT_KEY_UP KSYM_Up -#define DEFAULT_KEY_DOWN KSYM_Down +#define DEFAULT_KEY_LEFT KSYM_Left +#define DEFAULT_KEY_RIGHT KSYM_Right +#define DEFAULT_KEY_UP KSYM_Up +#define DEFAULT_KEY_DOWN KSYM_Down #if defined(PLATFORM_MACOSX) -#define DEFAULT_KEY_SNAP KSYM_Control_L -#define DEFAULT_KEY_DROP KSYM_KP_Enter +#define DEFAULT_KEY_SNAP KSYM_Control_L +#define DEFAULT_KEY_DROP KSYM_KP_Enter #else -#define DEFAULT_KEY_SNAP KSYM_Control_L -#define DEFAULT_KEY_DROP KSYM_Control_R +#define DEFAULT_KEY_SNAP KSYM_Control_L +#define DEFAULT_KEY_DROP KSYM_Control_R #endif -#define DEFAULT_KEY_OKAY KSYM_Return -#define DEFAULT_KEY_CANCEL KSYM_Escape +#define DEFAULT_KEY_OKAY KSYM_Return +#define DEFAULT_KEY_CANCEL KSYM_Escape /* default shortcut keys */ -#define DEFAULT_KEY_SAVE_GAME KSYM_F1 -#define DEFAULT_KEY_LOAD_GAME KSYM_F2 -#define DEFAULT_KEY_TOGGLE_PAUSE KSYM_space +#define DEFAULT_KEY_SAVE_GAME KSYM_F1 +#define DEFAULT_KEY_LOAD_GAME KSYM_F2 +#define DEFAULT_KEY_TOGGLE_PAUSE KSYM_space +#define DEFAULT_KEY_FOCUS_PLAYER_1 KSYM_F5 +#define DEFAULT_KEY_FOCUS_PLAYER_2 KSYM_F6 +#define DEFAULT_KEY_FOCUS_PLAYER_3 KSYM_F7 +#define DEFAULT_KEY_FOCUS_PLAYER_4 KSYM_F8 +#define DEFAULT_KEY_FOCUS_PLAYER_ALL KSYM_F9 /* values for key_status */ -#define KEY_NOT_PRESSED FALSE -#define KEY_RELEASED FALSE -#define KEY_PRESSED TRUE +#define KEY_NOT_PRESSED FALSE +#define KEY_RELEASED FALSE +#define KEY_PRESSED TRUE /* values for button status */ -#define MB_NOT_PRESSED FALSE -#define MB_NOT_RELEASED TRUE -#define MB_RELEASED FALSE -#define MB_PRESSED TRUE -#define MB_MENU_CHOICE FALSE -#define MB_MENU_MARK TRUE -#define MB_MENU_INITIALIZE (-1) -#define MB_MENU_LEAVE (-2) -#define MB_LEFTBUTTON 1 -#define MB_MIDDLEBUTTON 2 -#define MB_RIGHTBUTTON 3 - +#define MB_NOT_PRESSED FALSE +#define MB_NOT_RELEASED TRUE +#define MB_RELEASED FALSE +#define MB_PRESSED TRUE +#define MB_MENU_CHOICE FALSE +#define MB_MENU_MARK TRUE +#define MB_MENU_INITIALIZE (-1) +#define MB_MENU_LEAVE (-2) +#define MB_LEFTBUTTON 1 +#define MB_MIDDLEBUTTON 2 +#define MB_RIGHTBUTTON 3 +#define MB_WHEEL_UP 4 +#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 DEFAULT_WHEEL_STEPS 3 /* values for move directions */ -#define MV_BIT_LEFT 0 -#define MV_BIT_RIGHT 1 -#define MV_BIT_UP 2 -#define MV_BIT_DOWN 3 +#define MV_BIT_LEFT 0 +#define MV_BIT_RIGHT 1 +#define MV_BIT_UP 2 +#define MV_BIT_DOWN 3 -#define NUM_DIRECTIONS 4 +#define NUM_DIRECTIONS 4 /* diagonal movement directions are used in a different contect than buttons */ -#define MV_BIT_UPLEFT 4 -#define MV_BIT_UPRIGHT 5 -#define MV_BIT_DOWNLEFT 6 -#define MV_BIT_DOWNRIGHT 7 +#define MV_BIT_UPLEFT 4 +#define MV_BIT_UPRIGHT 5 +#define MV_BIT_DOWNLEFT 6 +#define MV_BIT_DOWNRIGHT 7 -#define NUM_DIRECTIONS_FULL 8 +#define NUM_DIRECTIONS_FULL 8 /* values for special "button" bitmasks */ -#define BUTTON_1 4 -#define BUTTON_2 5 +#define BUTTON_1 4 +#define BUTTON_2 5 + +/* values for special "focus player" bitmasks */ +#define BIT_SET_FOCUS 6 /* values for move directions and special "button" key bitmasks */ #define MV_NONE 0 @@ -131,6 +152,8 @@ #define KEY_BUTTON (KEY_BUTTON_1 | KEY_BUTTON_2) #define KEY_ACTION (KEY_MOTION | KEY_BUTTON) +#define KEY_SET_FOCUS (1 << BIT_SET_FOCUS) + #define MV_DIR_FROM_BIT(x) ((x) < NUM_DIRECTIONS ? 1 << (x) : \ (x) == MV_BIT_UPLEFT ? MV_UPLEFT : \ (x) == MV_BIT_UPRIGHT ? MV_UPRIGHT : \ @@ -167,15 +190,57 @@ #define ANIM_RANDOM (1 << 4) #define ANIM_CE_VALUE (1 << 5) #define ANIM_CE_SCORE (1 << 6) -#define ANIM_REVERSE (1 << 7) +#define ANIM_CE_DELAY (1 << 7) +#define ANIM_REVERSE (1 << 8) +#define ANIM_OPAQUE_PLAYER (1 << 9) /* values for special (non game element) animation modes */ -#define ANIM_HORIZONTAL (1 << 8) -#define ANIM_VERTICAL (1 << 9) -#define ANIM_STATIC_PANEL (1 << 10) +#define ANIM_HORIZONTAL (1 << 10) +#define ANIM_VERTICAL (1 << 11) +#define ANIM_CENTERED (1 << 12) +#define ANIM_STATIC_PANEL (1 << 13) #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 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) #define REDRAW_ALL (1 << 0) @@ -210,8 +275,14 @@ /* values for mouse cursor */ #define CURSOR_DEFAULT 0 -#define CURSOR_PLAYFIELD 1 +#define CURSOR_NONE 1 +#define CURSOR_PLAYFIELD 2 +/* fundamental game speed values */ +#define ONE_SECOND_DELAY 1000 /* delay value for one second */ +#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) /* maximum playfield size supported by libgame functions */ #define MAX_PLAYFIELD_WIDTH 128 @@ -268,17 +339,30 @@ #define TAPES_DIRECTORY "tapes" #define SCORES_DIRECTORY "scores" #define DOCS_DIRECTORY "docs" +#define CACHE_DIRECTORY "cache" #if !defined(PLATFORM_MSDOS) +#if CREATE_SPECIAL_EDITION_RND_JUE +#define GFX_CLASSIC_SUBDIR "jue0" +#define SND_CLASSIC_SUBDIR "jue0" +#define MUS_CLASSIC_SUBDIR "jue0" +#else #define GFX_CLASSIC_SUBDIR "gfx_classic" #define SND_CLASSIC_SUBDIR "snd_classic" #define MUS_CLASSIC_SUBDIR "mus_classic" +#endif #else #define GFX_CLASSIC_SUBDIR "gfx_orig" #define SND_CLASSIC_SUBDIR "snd_orig" #define MUS_CLASSIC_SUBDIR "mus_orig" #endif +#if 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" @@ -292,6 +376,7 @@ #define GRAPHICSINFO_FILENAME "graphicsinfo.conf" #define SOUNDSINFO_FILENAME "soundsinfo.conf" #define MUSICINFO_FILENAME "musicinfo.conf" +#define ARTWORKINFO_CACHE_FILE "artworkinfo.cache" #define LEVELFILE_EXTENSION "level" #define TAPEFILE_EXTENSION "tape" #define SCOREFILE_EXTENSION "score" @@ -307,11 +392,33 @@ #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" + +#define CHAR_PATH_SEPARATOR_UNIX '/' +#define CHAR_PATH_SEPARATOR_DOS '\\' + +#define STRING_PATH_SEPARATOR_UNIX "/" +#define STRING_PATH_SEPARATOR_DOS "\\" + +#define STRING_NEWLINE_UNIX "\n" +#define STRING_NEWLINE_DOS "\r\n" + +#if defined(PLATFORM_WIN32) || defined(PLATFORM_MSDOS) +#define CHAR_PATH_SEPARATOR CHAR_PATH_SEPARATOR_DOS +#define STRING_PATH_SEPARATOR STRING_PATH_SEPARATOR_DOS +#define STRING_NEWLINE STRING_NEWLINE_DOS +#else +#define CHAR_PATH_SEPARATOR CHAR_PATH_SEPARATOR_UNIX +#define STRING_PATH_SEPARATOR STRING_PATH_SEPARATOR_UNIX +#define STRING_NEWLINE STRING_NEWLINE_UNIX +#endif + /* areas in bitmap PIX_DOOR */ /* meaning in PIX_DB_DOOR: (3 PAGEs) @@ -374,6 +481,21 @@ #define NUM_TREE_TYPES 4 +#define INFOTEXT_UNDEFINED "" +#define INFOTEXT_GRAPHICS_DIR "Custom Graphics" +#define INFOTEXT_SOUNDS_DIR "Custom Sounds" +#define INFOTEXT_MUSIC_DIR "Custom Music" +#define INFOTEXT_LEVEL_DIR "Level Sets" + +#define TREE_INFOTEXT(t) ((t) == TREE_TYPE_LEVEL_DIR ? \ + INFOTEXT_LEVEL_DIR : \ + (t) == TREE_TYPE_GRAPHICS_DIR ? \ + INFOTEXT_GRAPHICS_DIR : \ + (t) == TREE_TYPE_SOUNDS_DIR ? \ + INFOTEXT_SOUNDS_DIR : \ + (t) == TREE_TYPE_MUSIC_DIR ? \ + INFOTEXT_MUSIC_DIR : \ + INFOTEXT_UNDEFINED) /* values for artwork handling */ #define LEVELDIR_ARTWORK_SET_PTR(leveldir, type) \ @@ -418,11 +540,18 @@ (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 : \ + (artwork).gfx_first : \ (type) == ARTWORK_TYPE_SOUNDS ? \ - (artwork).snd_first : \ + (artwork).snd_first : \ (artwork).mus_first) #define ARTWORK_CURRENT_IDENTIFIER_PTR(artwork, type) \ @@ -463,6 +592,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 *); @@ -474,7 +609,10 @@ struct ProgramInfo { char *command_basepath; /* directory that contains the program */ char *command_basename; /* base filename of the program binary */ - char *userdata_directory; /* personal user data 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; @@ -482,11 +620,15 @@ struct ProgramInfo 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) */ + int version_major; int version_minor; int version_patch; @@ -515,12 +657,20 @@ struct OptionInfo boolean debug; }; +struct ScreenModeInfo +{ + int width, height; +}; + struct VideoSystemInfo { int default_depth; int width, height, depth; + boolean fullscreen_available; boolean fullscreen_enabled; + struct ScreenModeInfo *fullscreen_modes; + char *fullscreen_mode_current; }; struct AudioSystemInfo @@ -545,9 +695,13 @@ struct AudioSystemInfo struct FontBitmapInfo { Bitmap *bitmap; + int src_x, src_y; /* start position of animation frames */ int width, height; /* width/height of each animation frame */ - int draw_x, draw_y; /* offset for drawing font characters */ + + int draw_xoffset; /* offset for drawing font characters */ + int draw_yoffset; /* offset for drawing font characters */ + int num_chars; int num_chars_per_line; @@ -578,11 +732,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 @@ -624,11 +787,17 @@ struct SetupEditorInfo boolean el_diamond_caves; boolean el_dx_boulderdash; boolean el_chars; + boolean el_steel_chars; boolean el_custom; boolean el_user_defined; boolean el_dynamic; boolean el_headlines; + + boolean el_by_game; + boolean el_by_type; + + boolean show_element_token; }; struct SetupEditorCascadeInfo @@ -642,10 +811,11 @@ struct SetupEditorCascadeInfo boolean el_dc; boolean el_dx; boolean el_chars; + boolean el_steel_chars; boolean el_ce; boolean el_ge; + boolean el_ref; boolean el_user; - boolean el_generic; boolean el_dynamic; }; @@ -654,10 +824,14 @@ struct SetupShortcutInfo Key save_game; Key load_game; Key toggle_pause; + + Key focus_player[MAX_PLAYERS]; + Key focus_player_all; }; struct SetupSystemInfo { + char *sdl_videodriver; char *sdl_audiodriver; int audio_fragment_size; }; @@ -671,20 +845,25 @@ 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 fading; + boolean fade_screens; boolean autorecord; + boolean show_titlescreen; boolean quick_doors; boolean team_mode; boolean handicap; boolean skip_levels; boolean time_limit; boolean fullscreen; + char *fullscreen_mode; boolean ask_on_escape; + boolean ask_on_escape_editor; boolean quick_switch; + boolean input_on_focus; + boolean prefer_aga_graphics; + int game_frame_delay; char *graphics_set; char *sounds_set; @@ -692,6 +871,9 @@ struct SetupInfo boolean override_level_graphics; boolean override_level_sounds; boolean override_level_music; +#if 1 + boolean override_classic_artwork; +#endif struct SetupEditorInfo editor; struct SetupEditorCascadeInfo editor_cascade; @@ -722,9 +904,13 @@ struct TreeInfo char *name; /* tree info name, as displayed in selection menues */ char *name_sorting; /* optional sorting name for correct name sorting */ char *author; /* level or artwork author name */ + char *year; /* optional year of creation for levels or artwork */ char *imported_from; /* optional comment for imported levels or artwork */ char *imported_by; /* optional comment for imported levels or artwork */ + char *tested_by; /* optional comment to name people who tested a set */ + char *graphics_set_ecs; /* special EMC custom graphics set (ECS graphics) */ + char *graphics_set_aga; /* special EMC custom graphics set (AGA graphics) */ char *graphics_set; /* optional custom graphics set (level tree only) */ char *sounds_set; /* optional custom sounds set (level tree only) */ char *music_set; /* optional custom music set (level tree only) */ @@ -753,6 +939,8 @@ struct TreeInfo int color; /* color to use on selection screen for this level */ char *class_desc; /* description of level series class */ int handicap_level; /* number of the lowest unsolved level */ + + char *infotext; /* optional text to describe the tree type (headline) */ }; typedef struct TreeInfo TreeInfo; @@ -813,6 +1001,7 @@ struct FileInfo boolean redefined; boolean fallback_to_default; + boolean default_is_cloned; }; struct SetupFileList @@ -876,6 +1065,36 @@ struct ArtworkListInfo void (*free_artwork)(void *); /* destructor function */ }; +struct XY +{ + int x, y; +}; + +struct Rect +{ + int x, y; + int width, height; +}; + +struct MenuPosInfo +{ + int x, y; + int width, height; + int align, valign; +}; + +struct TextPosInfo +{ + int x, y; + int width, height; + int align, valign; + int size; + int font, font_alt; + boolean draw_masked; + int sort_priority; + int id; +}; + /* ========================================================================= */ /* exported variables */ @@ -917,7 +1136,7 @@ extern int FrameCounter; /* function definitions */ void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *, - char *, char *, char *, int); + char *, char *, char *, char *, char *, int); void InitExitFunction(void (*exit_function)(int)); void InitPlatformDependentStuff(void); @@ -927,41 +1146,45 @@ void InitGfxFieldInfo(int, int, int, int, int, int, int, int, Bitmap *); void InitGfxDoor1Info(int, int, int, int); void InitGfxDoor2Info(int, int, 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 *); void SetMainBackgroundBitmap(Bitmap *); void SetDoorBackgroundBitmap(Bitmap *); -inline void InitVideoDisplay(void); -inline void CloseVideoDisplay(void); -inline void InitVideoBuffer(DrawBuffer **,DrawWindow **, int,int,int, boolean); -inline Bitmap *CreateBitmapStruct(void); -inline Bitmap *CreateBitmap(int, int, int); -inline void FreeBitmap(Bitmap *); -inline void BlitBitmap(Bitmap *, Bitmap *, int, int, int, int, int, int); -inline void FillRectangle(Bitmap *, int, int, int, int, Pixel); -inline void ClearRectangle(Bitmap *, int, int, int, int); -inline void ClearRectangleOnBackground(Bitmap *, int, int, int, int); -inline void SetClipMask(Bitmap *, GC, Pixmap); -inline void SetClipOrigin(Bitmap *, GC, int, int); -inline void BlitBitmapMasked(Bitmap *, Bitmap *, int, int, int, int, int, int); -inline boolean DrawingOnBackground(int, int); -inline void BlitBitmapOnBackground(Bitmap *, Bitmap *, int, int, int, int, int, - int); -inline void DrawSimpleBlackLine(Bitmap *, int, int, int, int); -inline void DrawSimpleWhiteLine(Bitmap *, int, int, int, int); -inline void DrawLines(Bitmap *, struct XY *, int, Pixel); -inline Pixel GetPixel(Bitmap *, int, int); -inline Pixel GetPixelFromRGB(Bitmap *, unsigned int,unsigned int,unsigned int); -inline Pixel GetPixelFromRGBcompact(Bitmap *, unsigned int); - -inline void FlushDisplay(void); -inline void SyncDisplay(void); -inline void KeyboardAutoRepeatOn(void); -inline void KeyboardAutoRepeatOff(void); -inline boolean PointerInWindow(DrawWindow *); -inline boolean SetVideoMode(boolean); -inline boolean ChangeVideoModeIfNeeded(boolean); +void InitVideoDisplay(void); +void CloseVideoDisplay(void); +void InitVideoBuffer(int, int, int, boolean); +Bitmap *CreateBitmapStruct(void); +Bitmap *CreateBitmap(int, int, int); +void FreeBitmap(Bitmap *); +void BlitBitmap(Bitmap *, Bitmap *, int, int, int, int, int, int); +void FadeRectangle(Bitmap *bitmap, 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 SetClipMask(Bitmap *, GC, Pixmap); +void SetClipOrigin(Bitmap *, GC, int, int); +void BlitBitmapMasked(Bitmap *, Bitmap *, int, int, int, int, int, int); +boolean DrawingOnBackground(int, int); +void BlitBitmapOnBackground(Bitmap *, 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); +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 *); +boolean SetVideoMode(boolean); +boolean ChangeVideoModeIfNeeded(boolean); Bitmap *LoadImage(char *); Bitmap *LoadCustomImage(char *); @@ -969,23 +1192,25 @@ void ReloadCustomImage(Bitmap *, char *); Bitmap *ZoomBitmap(Bitmap *, int, int); void CreateBitmapWithSmallBitmaps(Bitmap *, int); +void ScaleBitmap(Bitmap *, int); void SetMouseCursor(int); -inline void OpenAudio(void); -inline void CloseAudio(void); -inline void SetAudioMode(boolean); - -inline void InitEventFilter(EventFilter); -inline boolean PendingEvent(void); -inline void NextEvent(Event *event); -inline void PeekEvent(Event *event); -inline Key GetEventKey(KeyEvent *, boolean); -inline KeyMod HandleKeyModState(Key, int); -inline KeyMod GetKeyModState(); -inline boolean CheckCloseWindowEvent(ClientMessageEvent *); - -inline void InitJoysticks(); -inline boolean ReadJoystick(int, int *, int *, boolean *, boolean *); +void OpenAudio(void); +void CloseAudio(void); +void SetAudioMode(boolean); + +void InitEventFilter(EventFilter); +boolean PendingEvent(void); +void NextEvent(Event *event); +void PeekEvent(Event *event); +Key GetEventKey(KeyEvent *, boolean); +KeyMod HandleKeyModState(Key, int); +KeyMod GetKeyModState(); +KeyMod GetKeyModStateFromEvents(); +boolean CheckCloseWindowEvent(ClientMessageEvent *); + +void InitJoysticks(); +boolean ReadJoystick(int, int *, int *, boolean *, boolean *); #endif /* SYSTEM_H */