added support for fallback text file for element description files
[rocksndiamonds.git] / src / libgame / system.h
index 8c79f19d692c9a85d6b255b6da3f5f3ffe78f8cd..a3d94efd8159d5e7769f4d7f6d5dae55ba03c57f 100644 (file)
@@ -16,9 +16,9 @@
 #include "types.h"
 
 
-#if defined(PLATFORM_MACOSX)
+#if defined(PLATFORM_MAC)
 #include "macosx.h"
-#elif defined(PLATFORM_WIN32)
+#elif defined(PLATFORM_WINDOWS)
 #include "windows.h"
 #elif defined(PLATFORM_ANDROID)
 #include "android.h"
 #define API_SERVER_METHOD              "POST"
 #define API_SERVER_URI_ADD             "/api/scores/add"
 #define API_SERVER_URI_GET             "/api/scores/get"
+#define API_SERVER_URI_GETTAPE         "/api/scores/gettape"
 #define API_SERVER_URI_RENAME          "/api/players/rename"
 #define API_SERVER_URI_RESETUUID       "/api/players/resetuuid"
 
 #define USE_TOUCH_INPUT_OVERLAY
 #define USE_COMPLETE_DISPLAY
 #define HAS_SCREEN_KEYBOARD
-#define SCREEN_KEYBOARD_POS(h)         ((h) / 2)
+#define SCREEN_KEYBOARD_POS(h)         ((h) * 40 / 100)
 #endif
 
 // values for drag-and-drop support (some parts not added before SDL 2.0.5)
 #define DEFAULT_KEY_RIGHT              KSYM_Right
 #define DEFAULT_KEY_UP                 KSYM_Up
 #define DEFAULT_KEY_DOWN               KSYM_Down
-#if defined(PLATFORM_MACOSX)
+#if defined(PLATFORM_MAC)
 #define DEFAULT_KEY_SNAP               KSYM_Control_L
 #define DEFAULT_KEY_DROP               KSYM_KP_Enter
 #else
 #define MB_MENU_MARK                   TRUE
 #define MB_MENU_INITIALIZE             (-1)
 #define MB_MENU_LEAVE                  (-2)
+#define MB_MENU_CONTINUE               (-3)
 #define MB_LEFTBUTTON                  1
 #define MB_MIDDLEBUTTON                        2
 #define MB_RIGHTBUTTON                 3
 #define DOCS_DIRECTORY         "docs"
 #define ELEMENTS_DIRECTORY     "elements"
 #define CREDITS_DIRECTORY      "credits"
+#define PROGRAM_INFO_DIRECTORY "program"
 #define CACHE_DIRECTORY                "cache"
 #define CONF_DIRECTORY         "conf"
 #define NETWORK_DIRECTORY      "network"
 #define USERS_DIRECTORY                "users"
+#define PERSISTENT_DIRECTORY   "/persistent"
 
 #define GFX_CLASSIC_SUBDIR     "gfx_classic"
 #define SND_CLASSIC_SUBDIR     "snd_classic"
 
 #define GAMECONTROLLER_BASENAME        "gamecontrollerdb.txt"
 
+#define FALLBACK_TEXT_FILENAME "fallback.txt"
+
 #define LOG_OUT_BASENAME       "stdout.txt"
 #define LOG_ERR_BASENAME       "stderr.txt"
 
 #define STRING_NEWLINE_UNIX            "\n"
 #define STRING_NEWLINE_DOS             "\r\n"
 
-#if defined(PLATFORM_WIN32)
+#if defined(PLATFORM_WINDOWS)
 #define CHAR_PATH_SEPARATOR    CHAR_PATH_SEPARATOR_DOS
 #define STRING_PATH_SEPARATOR  STRING_PATH_SEPARATOR_DOS
 #define STRING_NEWLINE         STRING_NEWLINE_DOS
 #define BACKLINK_TEXT_MAIN     ".. (main menu)"
 #define BACKLINK_TEXT_SETUP    ".. (setup menu)"
 #define BACKLINK_TEXT_PARENT   ".. (parent directory)"
-#define BACKLINK_TEXT_SCORES   "back"
+#define BACKLINK_TEXT_BACK     "back"
+#define BACKLINK_TEXT_NEXT     "next"
 
 #define TREE_INFOTEXT(t)       ((t) == TREE_TYPE_SCORE_ENTRY ?         \
                                 INFOTEXT_SCORE_ENTRY :                 \
                                 INFOTEXT_UNDEFINED)
 
 #define TREE_BACKLINK_TEXT(t)  ((t) == TREE_TYPE_SCORE_ENTRY ?         \
-                                BACKLINK_TEXT_SCORES :                 \
+                                BACKLINK_TEXT_BACK :                   \
                                 (t) == TREE_TYPE_LEVEL_DIR ?           \
                                 BACKLINK_TEXT_MAIN :                   \
                                 BACKLINK_TEXT_SETUP)
 #define UPDATE_BUSY_STATE()                    \
 {                                              \
   if (gfx.draw_busy_anim_function != NULL)     \
-    gfx.draw_busy_anim_function();             \
+    gfx.draw_busy_anim_function(TRUE);         \
+}
+#define UPDATE_BUSY_STATE_NOT_LOADING()                \
+{                                              \
+  if (gfx.draw_busy_anim_function != NULL)     \
+    gfx.draw_busy_anim_function(FALSE);                \
 }
 
 
@@ -1218,7 +1230,7 @@ struct GfxInfo
 
   int anim_random_frame;
 
-  void (*draw_busy_anim_function)(void);
+  void (*draw_busy_anim_function)(boolean);
   void (*draw_global_anim_function)(int, int);
   void (*draw_global_border_function)(int);
   void (*draw_tile_cursor_function)(int);
@@ -1448,6 +1460,15 @@ struct SetupInternalInfo
   boolean menu_shortcuts;
   boolean menu_exit;
   boolean menu_save_and_exit;
+
+  boolean info_title;
+  boolean info_elements;
+  boolean info_music;
+  boolean info_credits;
+  boolean info_program;
+  boolean info_version;
+  boolean info_levelset;
+  boolean info_exit;
 };
 
 struct SetupDebugInfo
@@ -1606,6 +1627,9 @@ struct TreeInfo
 
   char *special_flags; // flags for special actions performed on level file
 
+  char *empty_level_name;   // name pattern if level title is "nameless level"
+  boolean force_level_name; // force also renaming non-nameless level titles
+
   int levels;          // number of levels in level series
   int first_level;     // first level number (to allow start with 0 or 1)
   int last_level;      // last level number (automatically calculated)
@@ -1929,7 +1953,7 @@ void InitGfxDoor3Info(int, int, int, int);
 void InitGfxWindowInfo(int, int);
 void InitGfxScrollbufferInfo(int, int);
 void InitGfxClipRegion(boolean, int, int, int, int);
-void InitGfxDrawBusyAnimFunction(void (*draw_busy_anim_function)(void));
+void InitGfxDrawBusyAnimFunction(void (*draw_busy_anim_function)(boolean));
 void InitGfxDrawGlobalAnimFunction(void (*draw_global_anim_function)(int, int));
 void InitGfxDrawGlobalBorderFunction(void (*draw_global_border_function)(int));
 void InitGfxDrawTileCursorFunction(void (*draw_tile_cursor_function)(int));