added persistent personal game data for Emscripten platform
[rocksndiamonds.git] / src / libgame / system.h
index ce239f1d3a5c2ead14c370d2c3edd8546ed3b462..8ebd43dca41d15a869e75c98871f6ed1000c3636 100644 (file)
@@ -22,6 +22,8 @@
 #include "windows.h"
 #elif defined(PLATFORM_ANDROID)
 #include "android.h"
+#elif defined(PLATFORM_EMSCRIPTEN)
+#include "emscripten.h"
 #endif
 
 #include "sdl.h"
                                         JOY_BUTTON_2 :                  \
                                         JOY_NO_ACTION)
 
+// maximum number of level sets in the level set history
+#define MAX_LEVELDIR_HISTORY   12
+
 // default name for empty highscore entry
 #define EMPTY_PLAYER_NAME      "no name"
 
 #define NUM_BASE_TREE_TYPES    4
 #define NUM_TREE_TYPES         6
 
+#define TREE_TYPE_IS_DIR(type) ((type) == TREE_TYPE_GRAPHICS_DIR ||    \
+                                (type) == TREE_TYPE_SOUNDS_DIR ||      \
+                                (type) == TREE_TYPE_MUSIC_DIR ||       \
+                                (type) == TREE_TYPE_LEVEL_DIR)
+
 #define INFOTEXT_UNDEFINED     ""
 #define INFOTEXT_GRAPHICS_DIR  "Custom Graphics"
 #define INFOTEXT_SOUNDS_DIR    "Custom Sounds"
 #define INFOTEXT_LEVEL_NR      "Levels"
 #define INFOTEXT_PLAYER_NAME   "Players & Teams"
 
+#define BACKLINK_TEXT_MAIN     ".. (main menu)"
+#define BACKLINK_TEXT_SETUP    ".. (setup menu)"
+#define BACKLINK_TEXT_PARENT   ".. (parent directory)"
+
 #define TREE_INFOTEXT(t)       ((t) == TREE_TYPE_PLAYER_NAME ?         \
                                 INFOTEXT_PLAYER_NAME :                 \
                                 (t) == TREE_TYPE_LEVEL_NR ?            \
                                 INFOTEXT_MUSIC_DIR :                   \
                                 INFOTEXT_UNDEFINED)
 
+#define TREE_BACKLINK_TEXT(t)  ((t) == TREE_TYPE_LEVEL_DIR ?           \
+                                BACKLINK_TEXT_MAIN :                   \
+                                BACKLINK_TEXT_SETUP)
+
 #define TREE_USERDIR(t)                ((t) == TREE_TYPE_LEVEL_DIR ?           \
                                 getUserLevelDir(NULL) :                \
                                 (t) == TREE_TYPE_GRAPHICS_DIR ?        \
@@ -1284,6 +1302,8 @@ struct SetupEditorInfo
 
   boolean show_element_token;
 
+  boolean show_read_only_warning;
+
   boolean use_template_for_new_levels;
 };
 
@@ -1292,6 +1312,11 @@ struct SetupAutoSetupInfo
   int editor_zoom_tilesize;
 };
 
+struct SetupLevelSetupInfo
+{
+  char *last_level_series[MAX_LEVELDIR_HISTORY + 1];
+};
+
 struct SetupEditorCascadeInfo
 {
   boolean el_bd;
@@ -1425,7 +1450,8 @@ struct SetupInfo
   boolean skip_levels;
   boolean increment_levels;
   boolean auto_play_next_level;
-  boolean skip_scores_after_game;
+  boolean count_score_after_game;
+  boolean show_scores_after_game;
   boolean time_limit;
   boolean fullscreen;
   int window_scaling_percent;
@@ -1462,6 +1488,8 @@ struct SetupInfo
   char *network_server_hostname;
 
   struct SetupAutoSetupInfo auto_setup;
+  struct SetupLevelSetupInfo level_setup;
+
   struct SetupEditorInfo editor;
   struct SetupEditorCascadeInfo editor_cascade;
   struct SetupShortcutInfo shortcut;