added marking nodes in "last played level sets" sub-tree as copy
[rocksndiamonds.git] / src / libgame / system.h
index 46124b82e231c27c48679ac19a9db3bbbd16ac3a..2db4961c53cbedd3c9d939c9e13339b8c7558025 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"
 #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 ?        \
@@ -1446,6 +1461,8 @@ struct SetupInfo
   boolean ask_on_escape;
   boolean ask_on_escape_editor;
   boolean ask_on_game_over;
+  boolean ask_on_quit_game;
+  boolean ask_on_quit_program;
   boolean quick_switch;
   boolean input_on_focus;
   boolean prefer_aga_graphics;
@@ -1548,6 +1565,7 @@ struct TreeInfo
 
   boolean level_group; // directory contains more level series directories
   boolean parent_link; // entry links back to parent directory
+  boolean is_copy;     // this entry is a copy of another entry in the tree
   boolean in_user_dir; // user defined levels are stored in home directory
   boolean user_defined;        // levels in user directory and marked as "private"
   boolean readonly;    // readonly levels can not be changed with editor