X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsystem.c;h=5443e87da6ebd560a3ef446c8f45d4f107b4ed15;hp=df401b5a57a6ebea20d8f539f6eedff4be5076b9;hb=00383dd409fde133c6738231abfcee662c03087c;hpb=6c674ccdd458314ced75459649c6acf1489b6056 diff --git a/src/libgame/system.c b/src/libgame/system.c index df401b5a..5443e87d 100644 --- a/src/libgame/system.c +++ b/src/libgame/system.c @@ -33,6 +33,7 @@ struct OptionInfo options; struct VideoSystemInfo video; struct AudioSystemInfo audio; struct GfxInfo gfx; +struct OverlayInfo overlay; struct ArtworkInfo artwork; struct JoystickInfo joystick; struct SetupInfo setup; @@ -270,6 +271,21 @@ void InitGfxOtherSettings() gfx.cursor_mode = CURSOR_DEFAULT; } +void InitOverlayInfo() +{ + overlay.active = FALSE; +} + +void SetOverlayActive(boolean active) +{ + overlay.active = active; +} + +boolean GetOverlayActive() +{ + return overlay.active; +} + void SetDrawDeactivationMask(int draw_deactivation_mask) { gfx.draw_deactivation_mask = draw_deactivation_mask; @@ -363,6 +379,7 @@ void LimitScreenUpdates(boolean enable) void InitVideoDisplay(void) { SDLInitVideoDisplay(); + SDLSetDisplaySize(); } void CloseVideoDisplay(void) @@ -378,6 +395,11 @@ void InitVideoBuffer(int width, int height, int depth, boolean fullscreen) video.height = height; video.depth = GetRealDepth(depth); + video.screen_width = width; + video.screen_height = height; + video.screen_xoffset = 0; + video.screen_yoffset = 0; + video.fullscreen_available = FULLSCREEN_STATUS; video.fullscreen_enabled = FALSE; @@ -387,6 +409,10 @@ void InitVideoBuffer(int width, int height, int depth, boolean fullscreen) video.frame_delay_value = GAME_FRAME_DELAY; video.shifted_up = FALSE; + video.shifted_up_pos = 0; + video.shifted_up_pos_last = 0; + video.shifted_up_delay = 0; + video.shifted_up_delay_value = ONE_SECOND_DELAY / 4; SDLInitVideoBuffer(fullscreen); @@ -1397,16 +1423,6 @@ void SetAudioMode(boolean enabled) /* event functions */ /* ========================================================================= */ -void InitEventFilter(EventFilter filter_function) -{ - /* set event filter to filter out certain events */ -#if defined(TARGET_SDL2) - SDL_SetEventFilter(filter_function, NULL); -#else - SDL_SetEventFilter(filter_function); -#endif -} - boolean PendingEvent(void) { return (SDL_PollEvent(NULL) ? TRUE : FALSE); @@ -1513,14 +1529,18 @@ KeyMod GetKeyModStateFromEvents() return HandleKeyModState(KSYM_UNDEFINED, 0); } -void StartTextInput(int x, int y) +void StartTextInput(int x, int y, int width, int height) { #if defined(TARGET_SDL2) SDL_StartTextInput(); #if defined(HAS_SCREEN_KEYBOARD) - if (y > video.height / 2) + if (y + height > SCREEN_KEYBOARD_POS(video.height)) + { + video.shifted_up_pos = y + height - SCREEN_KEYBOARD_POS(video.height); + video.shifted_up_delay = SDL_GetTicks(); video.shifted_up = TRUE; + } #endif #endif } @@ -1531,7 +1551,12 @@ void StopTextInput() SDL_StopTextInput(); #if defined(HAS_SCREEN_KEYBOARD) - video.shifted_up = FALSE; + if (video.shifted_up) + { + video.shifted_up_pos = 0; + video.shifted_up_delay = SDL_GetTicks(); + video.shifted_up = FALSE; + } #endif #endif }