X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsystem.c;h=00e9c7295edde77c0f1f3fd117c39a29bb69c72a;hp=d8c79937451ab0b05fa4b517a54c225c54c5fb21;hb=803637f901b7b228091ac27c4b60ba753219d043;hpb=3e3b2e2cbfb978e4a18276ddfe872eed61dc1d95 diff --git a/src/libgame/system.c b/src/libgame/system.c index d8c79937..00e9c729 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; @@ -97,6 +98,16 @@ void InitProgramInfo(char *argv0, char *config_filename, char *userdata_subdir, program.log_file[LOG_ERR_ID] = program.log_file_default[LOG_ERR_ID] = stderr; } +void InitScoresInfo() +{ + char *global_scores_dir = getPath2(getCommonDataDir(), SCORES_DIRECTORY); + + program.global_scores = directoryExists(global_scores_dir); + program.many_scores_per_name = !program.global_scores; + + free(global_scores_dir); +} + void SetWindowTitle() { program.window_title = program.window_title_function(); @@ -270,6 +281,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 +389,9 @@ void LimitScreenUpdates(boolean enable) void InitVideoDisplay(void) { SDLInitVideoDisplay(); +#if defined(TARGET_SDL2) + SDLSetDisplaySize(); +#endif } void CloseVideoDisplay(void) @@ -378,6 +407,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; @@ -386,6 +420,12 @@ void InitVideoBuffer(int width, int height, int depth, boolean fullscreen) video.frame_delay = 0; 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); video.initialized = TRUE; @@ -1395,16 +1435,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); @@ -1511,6 +1541,38 @@ KeyMod GetKeyModStateFromEvents() return HandleKeyModState(KSYM_UNDEFINED, 0); } +void StartTextInput(int x, int y, int width, int height) +{ +#if defined(TARGET_SDL2) + SDL_StartTextInput(); + +#if defined(HAS_SCREEN_KEYBOARD) + 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 +} + +void StopTextInput() +{ +#if defined(TARGET_SDL2) + SDL_StopTextInput(); + +#if defined(HAS_SCREEN_KEYBOARD) + if (video.shifted_up) + { + video.shifted_up_pos = 0; + video.shifted_up_delay = SDL_GetTicks(); + video.shifted_up = FALSE; + } +#endif +#endif +} + boolean CheckCloseWindowEvent(ClientMessageEvent *event) { if (event->type != EVENT_CLIENTMESSAGE)