moved code to remove tree info node to separate function
[rocksndiamonds.git] / src / libgame / setup.h
index 64f51d1304e512f67833db278b958417555ac9a7..7877ccb23246ce42c5fff8d6ba508239359c0144 100644 (file)
@@ -4,7 +4,7 @@
 // (c) 1995-2014 by Artsoft Entertainment
 //                         Holger Schemel
 //                 info@artsoft.org
-//                 http://www.artsoft.org/
+//                 https://www.artsoft.org/
 // ----------------------------------------------------------------------------
 // setup.h
 // ============================================================================
 #define TYPE_EMPTY                     (1 << 20)
 #define TYPE_SKIPPABLE                 (1 << 21)
 #define TYPE_KEYTEXT                   (1 << 22)
+#define TYPE_HEADLINE                  (1 << 23)
 
-#define TYPE_GHOSTED                   (1 << 23)
-#define TYPE_QUERY                     (1 << 24)
+#define TYPE_GHOSTED                   (1 << 24)
+#define TYPE_QUERY                     (1 << 25)
 
 // additional values for internal purposes
-#define TYPE_BITFIELD                  (1 << 25)
-#define TYPE_CONTENT                   (1 << 26)
-#define TYPE_ELEMENT_LIST              (1 << 27)
-#define TYPE_CONTENT_LIST              (1 << 28)
+#define TYPE_BITFIELD                  (1 << 26)
+#define TYPE_CONTENT                   (1 << 27)
+#define TYPE_ELEMENT_LIST              (1 << 28)
+#define TYPE_CONTENT_LIST              (1 << 29)
 
 // derived values for setup file handling
 #define TYPE_BOOLEAN_STYLE             (TYPE_BOOLEAN | \
@@ -74,6 +75,7 @@
                                         TYPE_SKIPPABLE         | \
                                         TYPE_KEY               | \
                                         TYPE_STRING            | \
+                                        TYPE_HEADLINE          | \
                                         TYPE_GHOSTED)
 
 #define TYPE_ENTER                     (TYPE_ENTER_SCREEN      | \
@@ -226,6 +228,9 @@ typedef struct hashtable     SetupFileHash;
                         ARTWORKCLASS_UNDEFINED)
 
 
+char *getUserGraphicsDir(void);
+char *getUserSoundsDir(void);
+char *getUserMusicDir(void);
 char *setLevelArtworkDir(TreeInfo *);
 char *getProgramMainDataPath(char *, char *);
 char *getProgramConfigFilename(char *);
@@ -257,12 +262,13 @@ void InitLevelSetupDirectory(char *);
 TreeInfo *newTreeInfo(void);
 TreeInfo *newTreeInfo_setDefaults(int);
 void pushTreeInfo(TreeInfo **, TreeInfo *);
+void removeTreeInfo(TreeInfo **);
 int numTreeInfo(TreeInfo *);
 boolean validLevelSeries(TreeInfo *);
 TreeInfo *getFirstValidTreeInfoEntry(TreeInfo *);
 TreeInfo *getTreeInfoFirstGroupEntry(TreeInfo *);
 int numTreeInfoInGroup(TreeInfo *);
-int posTreeInfo(TreeInfo *);
+int getPosFromTreeInfo(TreeInfo *);
 TreeInfo *getTreeInfoFromPos(TreeInfo *, int);
 TreeInfo *getTreeInfoFromIdentifier(TreeInfo *, char *);
 void dumpTreeInfo(TreeInfo *, int);
@@ -275,14 +281,17 @@ void freeTreeInfo(TreeInfo *);
 char *getHomeDir(void);
 char *getCommonDataDir(void);
 char *getPersonalDataDir(void);
+char *getMainUserGameDataDir(void);
 char *getUserGameDataDir(void);
 char *getSetupDir(void);
+char *getLevelDirFromTreeInfo(TreeInfo *);
 char *getUserLevelDir(char *);
 char *getNetworkLevelDir(char *);
 char *getCurrentLevelDir(void);
 char *getNewUserLevelSubdir(void);
 
 void createDirectory(char *, char *, int);
+void InitMainUserDataDirectory(void);
 void InitUserDataDirectory(void);
 void SetFilePermissions(char *, int);
 
@@ -314,7 +323,14 @@ char *getSetupLine(struct TokenInfo *, char *, int);
 
 unsigned int get_hash_from_key(void *);
 
+int GetZipFileTreeType(char *);
+char *ExtractZipFileIntoDirectory(char *, char *, int);
+
 boolean AdjustGraphicsForEMC(void);
+boolean AdjustSoundsForEMC(void);
+
+void SetCurrentArtwork(int);
+void ChangeCurrentArtworkIfNeeded(int);
 
 void LoadLevelInfo(void);
 void LoadArtworkInfo(void);
@@ -324,9 +340,12 @@ char *getArtworkIdentifierForUserLevelSet(int);
 TreeInfo *getArtworkTreeInfoForUserLevelSet(int);
 boolean checkIfCustomArtworkExistsForCurrentLevelSet(void);
 void AddUserLevelSetToLevelInfo(char *);
+void AddTreeSetToTreeInfo(TreeInfo *, char *, char *, int);
 boolean UpdateUserLevelSet(char *, char *, char *, int);
 boolean CreateUserLevelSet(char *, char *, char *, int, boolean);
 
+void UpdateLastPlayedLevels_TreeInfo(void);
+
 void LoadLevelSetup_LastSeries(void);
 void SaveLevelSetup_LastSeries(void);
 void SaveLevelSetup_LastSeries_Deactivate(void);
@@ -340,4 +359,7 @@ void LevelStats_setSolved(int, int);
 void LevelStats_incPlayed(int);
 void LevelStats_incSolved(int);
 
+void LoadUserSetup(void);
+void SaveUserSetup(void);
+
 #endif // MISC_H