added option to disable warning about read-only levels when entering editor
[rocksndiamonds.git] / src / libgame / system.h
index 0d74426f92be24ccb9a3cd3e36832fe72903da6a..0ec8a491bb113cb185891f8caf038d49e9d548ea 100644 (file)
 #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 ANIM_DEFAULT           ANIM_LOOP
 
-// values for special drawing styles (currently only for crumbled graphics)
+// values for special drawing styles and event handling
 #define STYLE_NONE             0
+
+// values used for crumbled graphics
 #define STYLE_ACCURATE_BORDERS (1 << 0)
 #define STYLE_INNER_CORNERS    (1 << 1)
+
+// values used for game panel graphics
 #define STYLE_REVERSE          (1 << 2)
+#define STYLE_LEFTMOST_POSITION        (1 << 3)
 
-// values for special event handling style (used for global animation)
-#define STYLE_BLOCK            (1 << 3)
-#define STYLE_PASSTHROUGH      (1 << 4)
-#define STYLE_MULTIPLE_ACTIONS (1 << 5)
+// values used for global animations
+#define STYLE_BLOCK            (1 << 4)
+#define STYLE_PASSTHROUGH      (1 << 5)
+#define STYLE_MULTIPLE_ACTIONS (1 << 6)
 
 #define STYLE_DEFAULT          STYLE_NONE
 
 // maximum number of parallel players supported by libgame functions
 #define MAX_PLAYERS            4
 
+// maximum number of player names
+#define MAX_PLAYER_NAMES       12
+
 // maximum allowed length of player name
 #define MAX_PLAYER_NAME_LEN    10
 
 #define CACHE_DIRECTORY                "cache"
 #define CONF_DIRECTORY         "conf"
 #define NETWORK_DIRECTORY      "network"
+#define USERS_DIRECTORY                "users"
 
 #define GFX_CLASSIC_SUBDIR     "gfx_classic"
 #define SND_CLASSIC_SUBDIR     "snd_classic"
 // file names and filename extensions
 #define LEVELSETUP_DIRECTORY   "levelsetup"
 #define SETUP_FILENAME         "setup.conf"
+#define USERSETUP_FILENAME     "usersetup.conf"
 #define AUTOSETUP_FILENAME     "autosetup.conf"
 #define LEVELSETUP_FILENAME    "levelsetup.conf"
 #define EDITORSETUP_FILENAME   "editorsetup.conf"
 #define TREE_TYPE_MUSIC_DIR    ARTWORK_TYPE_MUSIC
 #define TREE_TYPE_LEVEL_DIR    3
 #define TREE_TYPE_LEVEL_NR     4
+#define TREE_TYPE_PLAYER_NAME  5
 
 #define NUM_BASE_TREE_TYPES    4
-#define NUM_TREE_TYPES         5
+#define NUM_TREE_TYPES         6
 
 #define INFOTEXT_UNDEFINED     ""
 #define INFOTEXT_GRAPHICS_DIR  "Custom Graphics"
 #define INFOTEXT_MUSIC_DIR     "Custom Music"
 #define INFOTEXT_LEVEL_DIR     "Level Sets"
 #define INFOTEXT_LEVEL_NR      "Levels"
+#define INFOTEXT_PLAYER_NAME   "Players & Teams"
 
-#define TREE_INFOTEXT(t)       ((t) == TREE_TYPE_LEVEL_NR ?            \
+#define TREE_INFOTEXT(t)       ((t) == TREE_TYPE_PLAYER_NAME ?         \
+                                INFOTEXT_PLAYER_NAME :                 \
+                                (t) == TREE_TYPE_LEVEL_NR ?            \
                                 INFOTEXT_LEVEL_NR :                    \
                                 (t) == TREE_TYPE_LEVEL_DIR ?           \
                                 INFOTEXT_LEVEL_DIR :                   \
                                 (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 :    \
@@ -1159,6 +1189,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
@@ -1252,6 +1284,8 @@ struct SetupEditorInfo
 
   boolean show_element_token;
 
+  boolean show_read_only_warning;
+
   boolean use_template_for_new_levels;
 };
 
@@ -1364,12 +1398,16 @@ 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
 {
   char *player_name;
 
+  boolean multiple_users;
+
   boolean sound;
   boolean sound_loops;
   boolean sound_music;
@@ -1403,6 +1441,7 @@ struct SetupInfo
   boolean input_on_focus;
   boolean prefer_aga_graphics;
   boolean prefer_lowpass_sounds;
+  boolean prefer_extra_panel_items;
   boolean game_speed_extended;
   int game_frame_delay;
   boolean sp_show_border_elements;
@@ -1437,6 +1476,11 @@ struct SetupInfo
   struct OptionInfo options;
 };
 
+struct UserInfo
+{
+  int nr;
+};
+
 struct TreeInfo
 {
   struct TreeInfo **node_top;          // topmost node in tree
@@ -1757,6 +1801,7 @@ extern struct AnimInfo            anim;
 extern struct ArtworkInfo      artwork;
 extern struct JoystickInfo     joystick;
 extern struct SetupInfo                setup;
+extern struct UserInfo         user;
 
 extern LevelDirTree           *leveldir_first_all;
 extern LevelDirTree           *leveldir_first;