added API functions to get score tape from score server
[rocksndiamonds.git] / src / main.h
index 96658376bab2cad281c29b03ded8794644527d98..00ce3cd258883d8ec0e909b5417fee53e7ef8692 100644 (file)
 #define MAX_ANDROID_ELEMENTS   32
 #define MAX_ANDROID_ELEMENTS_OLD 16    // (extended since version 4.2.0.0)
 
+#define MAX_ISO_DATE_LEN       10
+#define MAX_PLATFORM_TEXT_LEN  16
+#define MAX_VERSION_TEXT_LEN   16
+#define MAX_COUNTRY_CODE_LEN   2
+#define MAX_COUNTRY_NAME_LEN   64
+
 // values for elements with content
 #define MIN_ELEMENT_CONTENTS   1
 #define STD_ELEMENT_CONTENTS   4
@@ -2293,6 +2299,7 @@ enum
 enum
 {
   GFX_SPECIAL_ARG_DEFAULT = 0,
+  GFX_SPECIAL_ARG_LOADING_INITIAL,
   GFX_SPECIAL_ARG_LOADING,
   GFX_SPECIAL_ARG_TITLE_INITIAL,
   GFX_SPECIAL_ARG_TITLE_INITIAL_1,
@@ -2311,6 +2318,7 @@ enum
   GFX_SPECIAL_ARG_LEVELS,
   GFX_SPECIAL_ARG_LEVELNR,
   GFX_SPECIAL_ARG_SCORES,
+  GFX_SPECIAL_ARG_SCOREINFO,
   GFX_SPECIAL_ARG_EDITOR,
   GFX_SPECIAL_ARG_INFO,
   GFX_SPECIAL_ARG_SETUP,
@@ -2322,6 +2330,7 @@ enum
   GFX_SPECIAL_ARG_CRUMBLED,
   GFX_SPECIAL_ARG_MAINONLY,
   GFX_SPECIAL_ARG_NAMESONLY,
+  GFX_SPECIAL_ARG_SCORESONLY,
   GFX_SPECIAL_ARG_TYPENAME,
   GFX_SPECIAL_ARG_TYPENAMES,
   GFX_SPECIAL_ARG_SUBMENU,
@@ -2544,6 +2553,7 @@ enum
 
 // values for game_status (must match special image configuration suffixes)
 #define GAME_MODE_DEFAULT              GFX_SPECIAL_ARG_DEFAULT
+#define GAME_MODE_LOADING_INITIAL      GFX_SPECIAL_ARG_LOADING_INITIAL
 #define GAME_MODE_LOADING              GFX_SPECIAL_ARG_LOADING
 #define GAME_MODE_TITLE_INITIAL                GFX_SPECIAL_ARG_TITLE_INITIAL
 #define GAME_MODE_TITLE_INITIAL_1      GFX_SPECIAL_ARG_TITLE_INITIAL_1
@@ -2562,6 +2572,7 @@ enum
 #define GAME_MODE_LEVELS               GFX_SPECIAL_ARG_LEVELS
 #define GAME_MODE_LEVELNR              GFX_SPECIAL_ARG_LEVELNR
 #define GAME_MODE_SCORES               GFX_SPECIAL_ARG_SCORES
+#define GAME_MODE_SCOREINFO            GFX_SPECIAL_ARG_SCOREINFO
 #define GAME_MODE_EDITOR               GFX_SPECIAL_ARG_EDITOR
 #define GAME_MODE_INFO                 GFX_SPECIAL_ARG_INFO
 #define GAME_MODE_SETUP                        GFX_SPECIAL_ARG_SETUP
@@ -2573,6 +2584,7 @@ enum
 #define GAME_MODE_PSEUDO_CRUMBLED      GFX_SPECIAL_ARG_CRUMBLED
 #define GAME_MODE_PSEUDO_MAINONLY      GFX_SPECIAL_ARG_MAINONLY
 #define GAME_MODE_PSEUDO_NAMESONLY     GFX_SPECIAL_ARG_NAMESONLY
+#define GAME_MODE_PSEUDO_SCORESONLY    GFX_SPECIAL_ARG_SCORESONLY
 #define GAME_MODE_PSEUDO_TYPENAME      GFX_SPECIAL_ARG_TYPENAME
 #define GAME_MODE_PSEUDO_TYPENAMES     GFX_SPECIAL_ARG_TYPENAMES
 #define GAME_MODE_PSEUDO_SUBMENU       GFX_SPECIAL_ARG_SUBMENU
@@ -2802,6 +2814,9 @@ struct MenuScoresButtonInfo
 {
   struct MenuPosInfo prev_level;
   struct MenuPosInfo next_level;
+  struct MenuPosInfo prev_score;
+  struct MenuPosInfo next_score;
+  struct MenuPosInfo play_tape;
 };
 
 struct MenuScoresInfo
@@ -2839,6 +2854,7 @@ struct TitleMessageInfo
 
 struct InitInfo
 {
+  struct MenuPosInfo busy_initial;
   struct MenuPosInfo busy;
 };
 
@@ -3083,6 +3099,14 @@ struct ScoreEntry
   char name[MAX_PLAYER_NAME_LEN + 1];
   int score;
   int time;            // time (in frames) or steps played
+
+  // additional score information for score info screen
+  int id;
+  char tape_date[MAX_ISO_DATE_LEN + 1];
+  char platform[MAX_PLATFORM_TEXT_LEN + 1];
+  char version[MAX_VERSION_TEXT_LEN + 1];
+  char country_code[MAX_COUNTRY_CODE_LEN + 1];
+  char country_name[MAX_COUNTRY_NAME_LEN + 1];
 };
 
 struct ScoreInfo
@@ -3097,9 +3121,11 @@ struct ScoreInfo
   int last_added;
   int last_added_local;
   int last_level_nr;
+  int last_entry_nr;
 
   boolean updated;
   boolean uploaded;
+  boolean tape_downloaded;
   boolean force_last_added;
 
   struct ScoreEntry entry[MAX_SCORE_ENTRIES];
@@ -3692,7 +3718,7 @@ struct MusicFileInfo
 
   boolean is_sound;
 
-  struct MusicFileInfo *next;
+  struct MusicFileInfo *prev, *next;
 };
 
 struct ElementActionInfo