changed name of preprocessor constant
[rocksndiamonds.git] / src / libgame / system.h
index b512d1cf513eaf211b86d654f5b0632dda74ed1b..065d8836a86ecdc0d6d5af95cd95849d9b09fcef 100644 (file)
 #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"
+
+#if defined(TESTING)
+#undef API_SERVER_HOSTNAME
+#define API_SERVER_HOSTNAME            "api-test.artsoft.org"
+#define TEST_PREFIX                    "test."
+#else
+#define TEST_PREFIX                    ""
+#endif
 
 // values for touch control
 #define TOUCH_CONTROL_OFF              "off"
 #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)
 // default shortcut keys
 #define DEFAULT_KEY_SAVE_GAME          KSYM_F1
 #define DEFAULT_KEY_LOAD_GAME          KSYM_F2
+#define DEFAULT_KEY_RESTART_GAME       KSYM_F3
+#define DEFAULT_KEY_PAUSE_BEFORE_END   KSYM_F4
 #define DEFAULT_KEY_TOGGLE_PAUSE       KSYM_space
 #define DEFAULT_KEY_FOCUS_PLAYER_1     KSYM_F5
 #define DEFAULT_KEY_FOCUS_PLAYER_2     KSYM_F6
 #define ANIM_STATIC_PANEL      (1 << 13)
 #define ANIM_ALL               (1 << 14)
 #define ANIM_ONCE              (1 << 15)
+#define ANIM_TILED             (1 << 16)
+#define ANIM_RANDOM_STATIC     (1 << 17)
 
 #define ANIM_DEFAULT           ANIM_LOOP
 
 #define TAPES_DIRECTORY                "tapes"
 #define SCORES_DIRECTORY       "scores"
 #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 USERSETUP_FILENAME     "usersetup.conf"
 #define AUTOSETUP_FILENAME     "autosetup.conf"
 #define LEVELSETUP_FILENAME    "levelsetup.conf"
+#define SERVERSETUP_FILENAME   "serversetup.conf"
 #define EDITORSETUP_FILENAME   "editorsetup.conf"
 #define EDITORCASCADE_FILENAME "editorcascade.conf"
 #define HELPANIM_FILENAME      "helpanim.conf"
 #define MUSICINFO_FILENAME     "musicinfo.conf"
 #define ARTWORKINFO_CACHE_FILE "artworkinfo.cache"
 #define LEVELTEMPLATE_FILENAME "template.level"
+#define UPLOADED_FILENAME      ".uploaded"
 #define LEVELFILE_EXTENSION    "level"
 #define TAPEFILE_EXTENSION     "tape"
 #define SCOREFILE_EXTENSION    "score"
 #define TREE_TYPE_LEVEL_DIR    3
 #define TREE_TYPE_LEVEL_NR     4
 #define TREE_TYPE_PLAYER_NAME  5
+#define TREE_TYPE_SCORE_ENTRY  6
 
 #define NUM_BASE_TREE_TYPES    4
-#define NUM_TREE_TYPES         6
+#define NUM_TREE_TYPES         7
 
 #define TREE_TYPE_IS_DIR(type) ((type) == TREE_TYPE_GRAPHICS_DIR ||    \
                                 (type) == TREE_TYPE_SOUNDS_DIR ||      \
 #define INFOTEXT_LEVEL_DIR     "Level Sets"
 #define INFOTEXT_LEVEL_NR      "Levels"
 #define INFOTEXT_PLAYER_NAME   "Players & Teams"
+#define INFOTEXT_SCORE_ENTRY   "Hall of Fame"
 
 #define BACKLINK_TEXT_MAIN     ".. (main menu)"
 #define BACKLINK_TEXT_SETUP    ".. (setup menu)"
 #define BACKLINK_TEXT_PARENT   ".. (parent directory)"
+#define BACKLINK_TEXT_BACK     "back"
 
-#define TREE_INFOTEXT(t)       ((t) == TREE_TYPE_PLAYER_NAME ?         \
+#define TREE_INFOTEXT(t)       ((t) == TREE_TYPE_SCORE_ENTRY ?         \
+                                INFOTEXT_SCORE_ENTRY :                 \
+                                (t) == TREE_TYPE_PLAYER_NAME ?         \
                                 INFOTEXT_PLAYER_NAME :                 \
                                 (t) == TREE_TYPE_LEVEL_NR ?            \
                                 INFOTEXT_LEVEL_NR :                    \
                                 INFOTEXT_MUSIC_DIR :                   \
                                 INFOTEXT_UNDEFINED)
 
-#define TREE_BACKLINK_TEXT(t)  ((t) == TREE_TYPE_LEVEL_DIR ?           \
+#define TREE_BACKLINK_TEXT(t)  ((t) == TREE_TYPE_SCORE_ENTRY ?         \
+                                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);                \
 }
 
 
@@ -1014,6 +1046,8 @@ struct ProgramInfo
   void (*exit_message_function)(char *, va_list);
   void (*exit_function)(int);
 
+  int api_thread_count;
+
   boolean headless;
 };
 
@@ -1034,7 +1068,7 @@ struct RuntimeInfo
 {
   boolean uses_touch_device;
 
-  boolean api_server;
+  boolean use_api_server;
 };
 
 struct OptionInfo
@@ -1057,6 +1091,8 @@ struct OptionInfo
   char *debug_mode;
 
   char *player_name;
+  char *identifier;
+  char *level_nr;
 
   boolean mytapes;
   boolean serveronly;
@@ -1190,7 +1226,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);
@@ -1338,6 +1374,7 @@ struct SetupEditorCascadeInfo
   boolean el_steel_chars;
   boolean el_ce;
   boolean el_ge;
+  boolean el_es;
   boolean el_ref;
   boolean el_user;
   boolean el_dynamic;
@@ -1347,6 +1384,8 @@ struct SetupShortcutInfo
 {
   Key save_game;
   Key load_game;
+  Key restart_game;
+  Key pause_before_end;
   Key toggle_pause;
 
   Key focus_player[MAX_PLAYERS];
@@ -1417,6 +1456,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
@@ -1434,6 +1482,7 @@ struct SetupInfo
 {
   char *player_name;
   char *player_uuid;
+  int player_version;
 
   boolean multiple_users;
 
@@ -1449,6 +1498,7 @@ struct SetupInfo
   int engine_snapshot_memory;
   boolean fade_screens;
   boolean autorecord;
+  boolean auto_pause_on_start;
   boolean show_titlescreen;
   boolean quick_doors;
   boolean team_mode;
@@ -1480,7 +1530,7 @@ struct SetupInfo
   boolean small_game_graphics;
   boolean show_load_save_buttons;
   boolean show_undo_redo_buttons;
-  boolean only_show_local_scores;
+  char *scores_in_highscore_list;
 
   char *graphics_set;
   char *sounds_set;
@@ -1497,11 +1547,14 @@ struct SetupInfo
   int network_player_nr;
   char *network_server_hostname;
 
-  boolean api_server;
+  boolean use_api_server;
   char *api_server_hostname;
   char *api_server_password;
   boolean ask_for_uploading_tapes;
+  boolean ask_for_remaining_tapes;
   boolean provide_uploading_tapes;
+  boolean ask_for_using_api_server;
+  boolean has_remaining_tapes;
 
   struct SetupAutoSetupInfo auto_setup;
   struct SetupLevelSetupInfo level_setup;
@@ -1570,10 +1623,14 @@ 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)
   int sort_priority;   // sort levels by 'sort_priority' and then by name
+  int pos;             // custom position information of node in tree
 
   boolean latest_engine;// force level set to use the latest game engine
 
@@ -1892,7 +1949,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));
@@ -1992,6 +2049,7 @@ KeyMod GetKeyModStateFromEvents(void);
 void StartTextInput(int, int, int, int);
 void StopTextInput(void);
 void PushUserEvent(int, int, int);
+boolean PendingEscapeKeyEvent(void);
 
 void InitJoysticks(void);
 boolean ReadJoystick(int, int *, int *, boolean *, boolean *);