improved code to set or change current artwork
[rocksndiamonds.git] / src / libgame / system.h
index 02f396d773bf79c30544e4fa26d53276732e328d..68a94cec543e27646cbc54344c64edcd974f1d49 100644 (file)
@@ -4,7 +4,7 @@
 // (c) 1995-2014 by Artsoft Entertainment
 //                         Holger Schemel
 //                 info@artsoft.org
-//                 http://www.artsoft.org/
+//                 https://www.artsoft.org/
 // ----------------------------------------------------------------------------
 // system.h
 // ============================================================================
 #define STR_SPECIAL_RENDERING_TARGET   "target_texture_only"
 #define STR_SPECIAL_RENDERING_DOUBLE   "stream_and_target_texture"
 
+#if defined(PLATFORM_EMSCRIPTEN)
+#define STR_SPECIAL_RENDERING_DEFAULT  STR_SPECIAL_RENDERING_BITMAP
+#else
 #define STR_SPECIAL_RENDERING_DEFAULT  STR_SPECIAL_RENDERING_DOUBLE
+#endif
 
 #define SPECIAL_RENDERING_OFF          0
 #define SPECIAL_RENDERING_BITMAP       1
 #define SPECIAL_RENDERING_TARGET       2
 #define SPECIAL_RENDERING_DOUBLE       3
 
-#define SPECIAL_RENDERING_DEFAULT      SPECIAL_RENDERING_DOUBLE
-
 // values for vertical screen retrace synchronization (vsync)
 #define STR_VSYNC_MODE_OFF             "off"
 #define STR_VSYNC_MODE_NORMAL          "normal"
 
 #define VSYNC_MODE_DEFAULT             VSYNC_MODE_OFF
 
+#define VSYNC_MODE_STR_TO_INT(s)                                       \
+  (strEqual((s), STR_VSYNC_MODE_NORMAL)                ? VSYNC_MODE_NORMAL :   \
+   strEqual((s), STR_VSYNC_MODE_ADAPTIVE)      ? VSYNC_MODE_ADAPTIVE : \
+   VSYNC_MODE_OFF)
+
+#define VSYNC_MODE_INT_TO_STR(i)                                       \
+  ((i) == VSYNC_MODE_NORMAL            ? STR_VSYNC_MODE_NORMAL :       \
+   (i) == VSYNC_MODE_ADAPTIVE          ? STR_VSYNC_MODE_ADAPTIVE :     \
+   STR_VSYNC_MODE_OFF)
+
 // values for network server settings
 #define STR_NETWORK_AUTO_DETECT                "auto_detect_network_server"
 #define STR_NETWORK_AUTO_DETECT_SETUP  "(auto detect network server)"
                                 (artwork).snd_first :                  \
                                 (artwork).mus_first)
 
+#define ARTWORK_CURRENT_PTR(artwork, type)                             \
+                               ((type) == ARTWORK_TYPE_GRAPHICS ?      \
+                                &(artwork).gfx_current :               \
+                                (type) == ARTWORK_TYPE_SOUNDS ?        \
+                                &(artwork).snd_current :               \
+                                &(artwork).mus_current)
+
+#define ARTWORK_CURRENT(artwork, type)                                 \
+                               ((type) == ARTWORK_TYPE_GRAPHICS ?      \
+                                (artwork).gfx_current :                \
+                                (type) == ARTWORK_TYPE_SOUNDS ?        \
+                                (artwork).snd_current :                \
+                                (artwork).mus_current)
+
 #define ARTWORK_CURRENT_IDENTIFIER_PTR(artwork, type)                  \
                                ((type) == ARTWORK_TYPE_GRAPHICS ?      \
                                 &(artwork).gfx_current_identifier :    \
@@ -967,6 +993,8 @@ struct NetworkInfo
   char *server_host;
   int server_port;
 
+  SDL_Thread *server_thread;
+  boolean is_server_thread;
 };
 
 struct RuntimeInfo
@@ -991,6 +1019,7 @@ struct OptionInfo
   char *execute_command;
 
   char *special_flags;
+  char *debug_mode;
 
   boolean mytapes;
   boolean serveronly;
@@ -1146,6 +1175,8 @@ struct TileCursorInfo
   int target_x, target_y;      // tile cursor target screen position
 
   int sx, sy;                  // tile cursor screen start position
+
+  boolean xsn_debug;           // enable or disable XSN debugging
 };
 
 struct OverlayInfo
@@ -1296,6 +1327,7 @@ struct SetupShortcutInfo
 
 struct SetupSystemInfo
 {
+  char *sdl_renderdriver;
   char *sdl_videodriver;
   char *sdl_audiodriver;
   int audio_fragment_size;
@@ -1350,6 +1382,8 @@ struct SetupDebugInfo
   boolean frame_delay_use_mod_key;
   boolean frame_delay_game_only;
   boolean show_frames_per_second;
+  int xsn_mode;
+  int xsn_percent;
 };
 
 struct SetupInfo
@@ -1799,6 +1833,7 @@ void InitGfxCustomArtworkInfo(void);
 void InitGfxOtherSettings(void);
 void InitTileCursorInfo(void);
 void InitOverlayInfo(void);
+void SetOverlayGridSizeAndButtons(void);
 void SetTileCursorEnabled(boolean);
 void SetTileCursorActive(boolean);
 void SetTileCursorTargetXY(int, int);