X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=2f6c2809fff688814c214e9030b4975d5e5e3f16;hp=eff5452583bbe16db554dbe8c49e7ab8707930de;hb=25c22434b11938e230719d6f73df4ed7813570be;hpb=9fa601d400aa71f38fcdc19eaf107f42e0d2a2a3 diff --git a/src/libgame/system.h b/src/libgame/system.h index eff54525..2f6c2809 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -47,9 +47,9 @@ #define WINDOW_SCALING_NOT_AVAILABLE FALSE #define WINDOW_SCALING_AVAILABLE TRUE -#define MIN_WINDOW_SCALING_PERCENT 50 +#define MIN_WINDOW_SCALING_PERCENT 30 #define STD_WINDOW_SCALING_PERCENT 100 -#define MAX_WINDOW_SCALING_PERCENT 300 +#define MAX_WINDOW_SCALING_PERCENT 400 #define STEP_WINDOW_SCALING_PERCENT 10 /* values for window scaling quality */ @@ -59,9 +59,33 @@ #define SCALING_QUALITY_DEFAULT SCALING_QUALITY_LINEAR +/* values for screen rendering mode */ +#define STR_SPECIAL_RENDERING_OFF "stream_texture_only" +#define STR_SPECIAL_RENDERING_BITMAP "bitmap_and_stream_texture" +#define STR_SPECIAL_RENDERING_TARGET "target_texture_only" +#define STR_SPECIAL_RENDERING_DOUBLE "stream_and_target_texture" + +#if defined(TARGET_SDL2) +#define STR_SPECIAL_RENDERING_DEFAULT STR_SPECIAL_RENDERING_DOUBLE +#else +#define STR_SPECIAL_RENDERING_DEFAULT STR_SPECIAL_RENDERING_BITMAP +#endif + +#define SPECIAL_RENDERING_OFF 0 +#define SPECIAL_RENDERING_BITMAP 1 +#define SPECIAL_RENDERING_TARGET 2 +#define SPECIAL_RENDERING_DOUBLE 3 + +#if defined(TARGET_SDL2) +#define SPECIAL_RENDERING_DEFAULT SPECIAL_RENDERING_DOUBLE +#else +#define SPECIAL_RENDERING_DEFAULT SPECIAL_RENDERING_BITMAP +#endif + /* values for touch control */ #define TOUCH_CONTROL_VIRTUAL_BUTTONS "virtual_buttons" #define TOUCH_CONTROL_WIPE_GESTURES "wipe_gestures" +#define TOUCH_CONTROL_FOLLOW_FINGER "follow_finger" #define TOUCH_CONTROL_DEFAULT TOUCH_CONTROL_VIRTUAL_BUTTONS @@ -69,6 +93,15 @@ #define TOUCH_DROP_DISTANCE_DEFAULT 5 +/* values for special settings for mobile devices */ +#if defined(PLATFORM_ANDROID) +#define USE_TOUCH_INPUT_OVERLAY +#define USE_COMPLETE_DISPLAY +#define HAS_SCREEN_KEYBOARD +#define SCREEN_KEYBOARD_POS(h) ((h) / 2) +#endif + + /* default input keys */ #define DEFAULT_KEY_LEFT KSYM_Left #define DEFAULT_KEY_RIGHT KSYM_Right @@ -107,6 +140,34 @@ #define DEFAULT_KEY_SNAP_UP KSYM_UNDEFINED #define DEFAULT_KEY_SNAP_DOWN KSYM_UNDEFINED +/* default debug setup keys and values */ +#define DEFAULT_FRAME_DELAY_0 20 // 100 % speed +#define DEFAULT_FRAME_DELAY_1 500 // 4 % speed +#define DEFAULT_FRAME_DELAY_2 250 // 8 % speed +#define DEFAULT_FRAME_DELAY_3 125 // 16 % speed +#define DEFAULT_FRAME_DELAY_4 60 // 33 % speed +#define DEFAULT_FRAME_DELAY_5 40 // 50 % speed +#define DEFAULT_FRAME_DELAY_6 30 // 66 % speed +#define DEFAULT_FRAME_DELAY_7 10 // 200 % speed +#define DEFAULT_FRAME_DELAY_8 5 // 400 % speed +#define DEFAULT_FRAME_DELAY_9 0 // maximum speed + +#define DEFAULT_KEY_FRAME_DELAY_0 KSYM_0 +#define DEFAULT_KEY_FRAME_DELAY_1 KSYM_1 +#define DEFAULT_KEY_FRAME_DELAY_2 KSYM_2 +#define DEFAULT_KEY_FRAME_DELAY_3 KSYM_3 +#define DEFAULT_KEY_FRAME_DELAY_4 KSYM_4 +#define DEFAULT_KEY_FRAME_DELAY_5 KSYM_5 +#define DEFAULT_KEY_FRAME_DELAY_6 KSYM_6 +#define DEFAULT_KEY_FRAME_DELAY_7 KSYM_7 +#define DEFAULT_KEY_FRAME_DELAY_8 KSYM_8 +#define DEFAULT_KEY_FRAME_DELAY_9 KSYM_9 + +#define NUM_DEBUG_FRAME_DELAY_KEYS 10 + +#define DEFAULT_FRAME_DELAY_USE_MOD_KEY FALSE +#define DEFAULT_FRAME_DELAY_GAME_ONLY TRUE + /* values for key_status */ #define KEY_NOT_PRESSED FALSE #define KEY_RELEASED FALSE @@ -128,12 +189,12 @@ #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 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) (IS_WHEEL_BUTTON_VERTICAL(b) || \ + IS_WHEEL_BUTTON_HORIZONTAL(b)) #define DEFAULT_WHEEL_STEPS 3 #define BUTTON_STEPSIZE(b) ((b) == MB_LEFTBUTTON ? 1 : \ @@ -165,6 +226,17 @@ /* 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 (various functions) */ +#define DRAW_TO_BACKBUFFER 0 +#define DRAW_TO_FIELDBUFFER 1 +#define DRAW_TO_SCREEN 2 +#define DRAW_TO_FADE_SOURCE 3 +#define DRAW_TO_FADE_TARGET 4 + /* values for move directions and special "button" key bitmasks */ #define MV_NONE 0 #define MV_LEFT (1 << MV_BIT_LEFT) @@ -221,6 +293,7 @@ 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) @@ -234,10 +307,13 @@ #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_ALL (1 << 14) +#define ANIM_ONCE (1 << 15) #define ANIM_DEFAULT ANIM_LOOP @@ -248,6 +324,19 @@ #define STYLE_DEFAULT STYLE_NONE +/* values for special global animation events */ +#define ANIM_EVENT_NONE 0 +#define ANIM_EVENT_SELF (1 << 16) +#define ANIM_EVENT_ANY (1 << 17) + +#define ANIM_EVENT_ANIM_BIT 0 +#define ANIM_EVENT_PART_BIT 8 + +#define ANIM_EVENT_ANIM_MASK (0xff << ANIM_EVENT_ANIM_BIT) +#define ANIM_EVENT_PART_MASK (0xff << ANIM_EVENT_PART_BIT) + +#define ANIM_EVENT_DEFAULT ANIM_EVENT_NONE + /* values for fade mode */ #define FADE_TYPE_NONE 0 #define FADE_TYPE_FADE_IN (1 << 0) @@ -255,7 +344,8 @@ #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) @@ -264,11 +354,24 @@ #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 +/* 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 +#define POS_LAST 8 + /* values for text alignment */ #define ALIGN_LEFT (1 << 0) #define ALIGN_RIGHT (1 << 1) @@ -291,30 +394,14 @@ #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_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) @@ -336,6 +423,7 @@ /* fundamental game speed values */ #define ONE_SECOND_DELAY 1000 /* delay value for one second */ +#define MENU_FRAME_DELAY 20 /* frame delay in milliseconds */ #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) @@ -354,6 +442,10 @@ /* maximum number of levels in a level set */ #define MAX_LEVELS 1000 +/* maximum number of global animation and parts */ +#define MAX_GLOBAL_ANIMS 32 +#define MAX_GLOBAL_ANIM_PARTS 32 + /* default name for empty highscore entry */ #define EMPTY_PLAYER_NAME "no name" @@ -372,6 +464,9 @@ /* 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]" @@ -403,26 +498,21 @@ #define SCORES_DIRECTORY "scores" #define DOCS_DIRECTORY "docs" #define CACHE_DIRECTORY "cache" +#define CONF_DIRECTORY "conf" #define GFX_CLASSIC_SUBDIR "gfx_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" @@ -437,11 +527,19 @@ #define SOUNDSINFO_FILENAME "soundsinfo.conf" #define MUSICINFO_FILENAME "musicinfo.conf" #define ARTWORKINFO_CACHE_FILE "artworkinfo.cache" +#define LEVELTEMPLATE_FILENAME "template.level" #define LEVELFILE_EXTENSION "level" #define TAPEFILE_EXTENSION "tape" #define SCOREFILE_EXTENSION "score" -#define ERROR_BASENAME "stderr.txt" +#define GAMECONTROLLER_BASENAME "gamecontrollerdb.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 "/" @@ -649,14 +747,6 @@ } -/* type definitions */ -#if defined(TARGET_SDL2) -typedef int (*EventFilter)(void *, Event *); -#else -typedef int (*EventFilter)(const Event *); -#endif - - /* structure definitions */ struct ProgramInfo @@ -664,22 +754,24 @@ struct ProgramInfo 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 *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 *sdl_icon_filename; + char *icon_filename; 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; @@ -690,11 +782,15 @@ struct ProgramInfo char *(*window_title_function)(void); void (*exit_message_function)(char *, va_list); void (*exit_function)(int); + + boolean global_scores; + boolean many_scores_per_name; + + boolean headless; }; struct OptionInfo { - char *display_name; char *server_host; int server_port; @@ -705,37 +801,45 @@ struct OptionInfo char *sounds_directory; char *music_directory; char *docs_directory; + char *conf_directory; char *execute_command; char *special_flags; + boolean mytapes; boolean serveronly; boolean network; boolean verbose; boolean debug; }; -struct ScreenModeInfo -{ - int width, height; -}; - struct VideoSystemInfo { int default_depth; int width, height, depth; int window_width, window_height; + int display_width, display_height; + int screen_width, screen_height; + int screen_xoffset, screen_yoffset; boolean fullscreen_available; boolean fullscreen_enabled; boolean fullscreen_initial; - struct ScreenModeInfo *fullscreen_modes; - char *fullscreen_mode_current; boolean window_scaling_available; int window_scaling_percent; char *window_scaling_quality; + int screen_rendering_mode; + + unsigned int frame_delay; + unsigned int frame_delay_value; + + boolean shifted_up; + int shifted_up_pos; + int shifted_up_pos_last; + unsigned int shifted_up_delay; + unsigned int shifted_up_delay_value; boolean initialized; }; @@ -797,13 +901,22 @@ struct GfxInfo int draw_deactivation_mask; int draw_background_mask; - boolean drawing_area_changed; - Bitmap *field_save_buffer; Bitmap *background_bitmap; int background_bitmap_mask; + Bitmap *fade_bitmap_backup; + 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; + + Bitmap *final_screen_bitmap; + boolean clipping_enabled; int clip_x, clip_y; int clip_width, clip_height; @@ -822,14 +935,22 @@ struct GfxInfo int anim_random_frame; void (*draw_busy_anim_function)(void); + void (*draw_global_anim_function)(int, int); + void (*draw_global_border_function)(int); int cursor_mode; }; +struct OverlayInfo +{ + boolean enabled; /* overlay generally enabled or disabled */ + boolean active; /* overlay activated (depending on game mode) */ +}; + struct JoystickInfo { int status; - int fd[MAX_PLAYERS]; /* file descriptor of player's joystick */ + int nr[MAX_PLAYERS]; /* joystick number for each player */ }; struct SetupJoystickInfo @@ -873,6 +994,8 @@ struct SetupEditorInfo boolean el_dx_boulderdash; boolean el_chars; boolean el_steel_chars; + + boolean el_classic; boolean el_custom; boolean el_user_defined; boolean el_dynamic; @@ -883,6 +1006,8 @@ struct SetupEditorInfo boolean el_by_type; boolean show_element_token; + + boolean use_template_for_new_levels; }; struct SetupEditorCascadeInfo @@ -937,6 +1062,41 @@ struct SetupSystemInfo 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 SetupDebugInfo +{ + int frame_delay[10]; + Key frame_delay_key[10]; + boolean frame_delay_use_mod_key; + boolean frame_delay_game_only; +}; + struct SetupInfo { char *player_name; @@ -949,7 +1109,7 @@ struct SetupInfo boolean scroll_delay; boolean scroll_delay_value; char *engine_snapshot_mode; - boolean soft_scrolling; + int engine_snapshot_memory; boolean fade_screens; boolean autorecord; boolean show_titlescreen; @@ -957,11 +1117,12 @@ struct SetupInfo boolean team_mode; boolean handicap; boolean skip_levels; + boolean increment_levels; boolean time_limit; boolean fullscreen; - char *fullscreen_mode; int window_scaling_percent; char *window_scaling_quality; + char *screen_rendering_mode; boolean ask_on_escape; boolean ask_on_escape_editor; boolean quick_switch; @@ -970,6 +1131,7 @@ struct SetupInfo int game_frame_delay; boolean sp_show_border_elements; boolean small_game_graphics; + boolean show_snapshot_buttons; char *graphics_set; char *sounds_set; @@ -988,6 +1150,9 @@ struct SetupInfo struct SetupInputInfo input[MAX_PLAYERS]; struct SetupTouchInfo touch; struct SetupSystemInfo system; + struct SetupInternalInfo internal; + struct SetupDebugInfo debug; + struct OptionInfo options; }; @@ -1180,6 +1345,12 @@ struct XY int x, y; }; +struct XYTileSize +{ + int x, y; + int tile_size; +}; + struct Rect { int x, y; @@ -1244,6 +1415,7 @@ extern struct OptionInfo options; extern struct VideoSystemInfo video; extern struct AudioSystemInfo audio; extern struct GfxInfo gfx; +extern struct OverlayInfo overlay; extern struct AnimInfo anim; extern struct ArtworkInfo artwork; extern struct JoystickInfo joystick; @@ -1262,12 +1434,12 @@ extern DrawBuffer *drawto; extern int button_status; extern boolean motion_status; +extern int wheel_steps; #if defined(TARGET_SDL2) extern boolean keyrepeat_status; #endif extern int redraw_mask; -extern int redraw_tiles; extern int FrameCounter; @@ -1277,6 +1449,7 @@ extern int FrameCounter; void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *, int); +void InitScoresInfo(); void SetWindowTitle(); void InitWindowTitleFunction(char *(*window_title_function)(void)); @@ -1294,13 +1467,20 @@ void InitGfxWindowInfo(int, int); 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, int)); +void InitGfxDrawGlobalBorderFunction(void (*draw_global_border_function)(int)); void InitGfxCustomArtworkInfo(); void InitGfxOtherSettings(); +void InitOverlayInfo(); +void SetOverlayEnabled(boolean); +void SetOverlayActive(boolean); +boolean GetOverlayActive(); void SetDrawDeactivationMask(int); void SetDrawBackgroundMask(int); void SetWindowBackgroundBitmap(Bitmap *); void SetMainBackgroundBitmap(Bitmap *); void SetDoorBackgroundBitmap(Bitmap *); +void SetRedrawMaskFromArea(int, int, int, int); void LimitScreenUpdates(boolean); @@ -1309,19 +1489,24 @@ void CloseVideoDisplay(void); void InitVideoBuffer(int, int, int, boolean); Bitmap *CreateBitmapStruct(void); Bitmap *CreateBitmap(int, int, int); -void ReCreateBitmap(Bitmap **, int, int, int); +void ReCreateBitmap(Bitmap **, int, int); void FreeBitmap(Bitmap *); void BlitBitmap(Bitmap *, Bitmap *, int, int, int, int, int, int); void BlitBitmapTiled(Bitmap *, Bitmap *, int, int, int, int, int, int, int,int); -void FadeRectangle(Bitmap *bitmap, int, int, int, int, int, int, int, +void FadeRectangle(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 BlitBitmapMasked(Bitmap *, Bitmap *, int, int, int, int, int, int); +boolean DrawingDeactivated(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); @@ -1331,17 +1516,19 @@ Pixel GetPixelFromRGBcompact(Bitmap *, unsigned int); void KeyboardAutoRepeatOn(void); void KeyboardAutoRepeatOff(void); -boolean PointerInWindow(DrawWindow *); boolean SetVideoMode(boolean); +void SetVideoFrameDelay(unsigned int); +unsigned int GetVideoFrameDelay(); boolean ChangeVideoModeIfNeeded(boolean); Bitmap *LoadImage(char *); Bitmap *LoadCustomImage(char *); void ReloadCustomImage(Bitmap *, char *); -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); @@ -1350,7 +1537,6 @@ void OpenAudio(void); void CloseAudio(void); void SetAudioMode(boolean); -void InitEventFilter(EventFilter); boolean PendingEvent(void); void NextEvent(Event *event); void PeekEvent(Event *event); @@ -1358,9 +1544,13 @@ Key GetEventKey(KeyEvent *, boolean); KeyMod HandleKeyModState(Key, int); KeyMod GetKeyModState(); KeyMod GetKeyModStateFromEvents(); +void StartTextInput(int, int, int, int); +void StopTextInput(); boolean CheckCloseWindowEvent(ClientMessageEvent *); void InitJoysticks(); boolean ReadJoystick(int, int *, int *, boolean *, boolean *); +boolean CheckJoystickOpened(int); +void ClearJoystickState(); #endif /* SYSTEM_H */