added generic support for handling user events
[rocksndiamonds.git] / src / libgame / system.c
index 0b9be20e1b4cd209e2bc51ac20aa80bac9140c7e..15e86a4afbc7084012132acac0f133577914085f 100644 (file)
@@ -30,6 +30,7 @@
 
 struct ProgramInfo     program;
 struct NetworkInfo     network;
+struct RuntimeInfo     runtime;
 struct OptionInfo      options;
 struct VideoSystemInfo video;
 struct AudioSystemInfo audio;
@@ -114,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);
@@ -311,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)
@@ -417,6 +425,11 @@ void SetOverlayShowGrid(boolean show_grid)
     SetOverlayEnabled(TRUE);
 }
 
+boolean GetOverlayEnabled(void)
+{
+  return overlay.enabled;
+}
+
 boolean GetOverlayActive(void)
 {
   return overlay.active;
@@ -1720,12 +1733,18 @@ void StopTextInput(void)
 #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);
 }