X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsystem.c;h=15e86a4afbc7084012132acac0f133577914085f;hp=702a86bc05e2f0881638fef4c38f0ef992b13644;hb=c38790fcee093efb156366bb4a02dbde55085ca4;hpb=12a8fd3a64d6bee5ca5f5b89e4a00b49d78bbd2c diff --git a/src/libgame/system.c b/src/libgame/system.c index 702a86bc..15e86a4a 100644 --- a/src/libgame/system.c +++ b/src/libgame/system.c @@ -30,6 +30,7 @@ struct ProgramInfo program; struct NetworkInfo network; +struct RuntimeInfo runtime; struct OptionInfo options; struct VideoSystemInfo video; struct AudioSystemInfo audio; @@ -55,9 +56,7 @@ DrawBuffer *drawto = NULL; int button_status = MB_NOT_PRESSED; boolean motion_status = FALSE; int wheel_steps = DEFAULT_WHEEL_STEPS; -#if defined(TARGET_SDL2) boolean keyrepeat_status = TRUE; -#endif int redraw_mask = REDRAW_NONE; @@ -116,6 +115,11 @@ void InitNetworkInfo(boolean enabled, boolean connected, boolean serveronly, network.server_port = server_port; } +void InitRuntimeInfo() +{ + runtime.uses_touch_device = FALSE; +} + void InitScoresInfo(void) { char *global_scores_dir = getPath2(getCommonDataDir(), SCORES_DIRECTORY); @@ -179,11 +183,7 @@ void InitPlatformDependentStuff(void) OpenLogFiles(); -#if defined(TARGET_SDL2) - int sdl_init_flags = SDL_INIT_EVENTS | SDL_INIT_NOPARACHUTE; -#else - int sdl_init_flags = SDL_INIT_EVENTTHREAD | SDL_INIT_NOPARACHUTE; -#endif + int sdl_init_flags = SDL_INIT_EVENTS | SDL_INIT_NOPARACHUTE; if (SDL_Init(sdl_init_flags) < 0) Error(ERR_EXIT, "SDL_Init() failed: %s", SDL_GetError()); @@ -252,9 +252,7 @@ void InitGfxWindowInfo(int win_xsize, int win_ysize) { ReCreateBitmap(&gfx.background_bitmap, win_xsize, win_ysize); -#if defined(TARGET_SDL2) ReCreateBitmap(&gfx.final_screen_bitmap, win_xsize, win_ysize); -#endif ReCreateBitmap(&gfx.fade_bitmap_backup, win_xsize, win_ysize); ReCreateBitmap(&gfx.fade_bitmap_source, win_xsize, win_ysize); @@ -319,6 +317,8 @@ void InitGfxCustomArtworkInfo(void) void InitGfxOtherSettings(void) { gfx.cursor_mode = CURSOR_DEFAULT; + gfx.mouse_x = 0; + gfx.mouse_y = 0; } void InitTileCursorInfo(void) @@ -425,6 +425,11 @@ void SetOverlayShowGrid(boolean show_grid) SetOverlayEnabled(TRUE); } +boolean GetOverlayEnabled(void) +{ + return overlay.enabled; +} + boolean GetOverlayActive(void) { return overlay.active; @@ -536,9 +541,7 @@ void InitVideoDisplay(void) return; SDLInitVideoDisplay(); -#if defined(TARGET_SDL2) SDLSetDisplaySize(); -#endif } void CloseVideoDisplay(void) @@ -810,7 +813,6 @@ void BlitBitmap(Bitmap *src_bitmap, Bitmap *dst_bitmap, src_x += dst_x - dst_x_unclipped; src_y += dst_y - dst_y_unclipped; -#if defined(TARGET_SDL2) // !!! 2013-12-11: An "old friend" is back. Same bug in SDL2 2.0.1 !!! // !!! 2009-03-30: Fixed by using self-compiled, patched SDL.dll !!! /* (This bug still exists in the actual (as of 2009-06-15) version 1.2.13, @@ -857,7 +859,6 @@ void BlitBitmap(Bitmap *src_bitmap, Bitmap *dst_bitmap, return; } -#endif sysCopyArea(src_bitmap, dst_bitmap, src_x, src_y, width, height, dst_x, dst_y, BLIT_OPAQUE); @@ -1093,23 +1094,12 @@ Pixel GetPixelFromRGBcompact(Bitmap *bitmap, unsigned int color) void KeyboardAutoRepeatOn(void) { -#if defined(TARGET_SDL2) keyrepeat_status = TRUE; -#else - SDL_EnableKeyRepeat(SDL_DEFAULT_REPEAT_DELAY / 2, - SDL_DEFAULT_REPEAT_INTERVAL / 2); - SDL_EnableUNICODE(1); -#endif } void KeyboardAutoRepeatOff(void) { -#if defined(TARGET_SDL2) keyrepeat_status = FALSE; -#else - SDL_EnableKeyRepeat(0, SDL_DEFAULT_REPEAT_INTERVAL); - SDL_EnableUNICODE(0); -#endif } boolean SetVideoMode(boolean fullscreen) @@ -1637,11 +1627,7 @@ void WaitEvent(Event *event) void PeekEvent(Event *event) { -#if defined(TARGET_SDL2) SDL_PeepEvents(event, 1, SDL_PEEKEVENT, SDL_FIRSTEVENT, SDL_LASTEVENT); -#else - SDL_PeepEvents(event, 1, SDL_PEEKEVENT, SDL_ALLEVENTS); -#endif } void CheckQuitEvent(void) @@ -1652,26 +1638,8 @@ void CheckQuitEvent(void) Key GetEventKey(KeyEvent *event, boolean with_modifiers) { -#if defined(TARGET_SDL2) // key up/down events in SDL2 do not return text characters anymore return event->keysym.sym; -#else - -#if ENABLE_UNUSED_CODE - printf("unicode == '%d', sym == '%d', mod == '0x%04x'\n", - (int)event->keysym.unicode, - (int)event->keysym.sym, - (int)SDL_GetModState()); -#endif - - if (with_modifiers && - event->keysym.unicode > 0x0000 && - event->keysym.unicode < 0x2000) - return event->keysym.unicode; - else - return event->keysym.sym; - -#endif } KeyMod HandleKeyModState(Key key, int key_status) @@ -1739,7 +1707,6 @@ KeyMod GetKeyModStateFromEvents(void) void StartTextInput(int x, int y, int width, int height) { -#if defined(TARGET_SDL2) #if defined(HAS_SCREEN_KEYBOARD) SDL_StartTextInput(); @@ -1750,12 +1717,10 @@ void StartTextInput(int x, int y, int width, int height) video.shifted_up = TRUE; } #endif -#endif } void StopTextInput(void) { -#if defined(TARGET_SDL2) #if defined(HAS_SCREEN_KEYBOARD) SDL_StopTextInput(); @@ -1766,15 +1731,20 @@ void StopTextInput(void) video.shifted_up = FALSE; } #endif -#endif } -boolean CheckCloseWindowEvent(ClientMessageEvent *event) +void PushUserEvent(int code, int value1, int value2) { - if (event->type != EVENT_CLIENTMESSAGE) - return FALSE; + UserEvent event; + + SDL_memset(&event, 0, sizeof(event)); + + event.type = EVENT_USER; + event.code = code; + event.value1 = value1; + event.value2 = value2; - return TRUE; // the only possible message here is SDL_QUIT + SDL_PushEvent((SDL_Event *)&event); }