X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsetup.h;h=40e2a9641b33b06b2b96701d205d8a3abf76eca0;hp=5fad3752fb6e8a46e2eebfe7d906cfa4aa432dce;hb=f11d2545f41637e871283f7624dccc8243d05138;hpb=56e8cd68c1f2489bbf98ca1e604925b699ae0a44 diff --git a/src/libgame/setup.h b/src/libgame/setup.h index 5fad3752..40e2a964 100644 --- a/src/libgame/setup.h +++ b/src/libgame/setup.h @@ -16,7 +16,7 @@ #include "hash.h" -/* values for setup file handling */ +// values for setup file handling #define TYPE_BOOLEAN (1 << 0) #define TYPE_SWITCH (1 << 1) #define TYPE_SWITCH3 (1 << 2) @@ -27,35 +27,38 @@ #define TYPE_KEY_X11 (1 << 7) #define TYPE_INTEGER (1 << 8) #define TYPE_STRING (1 << 9) -#define TYPE_ELEMENT (1 << 10) -#define TYPE_GRAPHIC (1 << 11) - -/* additional values for setup screen */ -#define TYPE_ENTER_SCREEN (1 << 12) -#define TYPE_LEAVE_SCREEN (1 << 13) -#define TYPE_ENTER_MENU (1 << 14) -#define TYPE_LEAVE_MENU (1 << 15) -#define TYPE_ENTER_LIST (1 << 16) -#define TYPE_LEAVE_LIST (1 << 17) -#define TYPE_EMPTY (1 << 18) -#define TYPE_KEYTEXT (1 << 19) - -#define TYPE_GHOSTED (1 << 20) -#define TYPE_QUERY (1 << 21) - -/* additional values for internal purposes */ -#define TYPE_BITFIELD (1 << 22) -#define TYPE_CONTENT (1 << 23) -#define TYPE_ELEMENT_LIST (1 << 24) -#define TYPE_CONTENT_LIST (1 << 25) - -/* derived values for setup file handling */ +#define TYPE_PLAYER (1 << 10) +#define TYPE_ELEMENT (1 << 11) +#define TYPE_GRAPHIC (1 << 12) + +// additional values for setup screen +#define TYPE_ENTER_SCREEN (1 << 13) +#define TYPE_LEAVE_SCREEN (1 << 14) +#define TYPE_ENTER_MENU (1 << 15) +#define TYPE_LEAVE_MENU (1 << 16) +#define TYPE_ENTER_LIST (1 << 17) +#define TYPE_LEAVE_LIST (1 << 18) +#define TYPE_TEXT_INPUT (1 << 19) +#define TYPE_EMPTY (1 << 20) +#define TYPE_SKIPPABLE (1 << 21) +#define TYPE_KEYTEXT (1 << 22) + +#define TYPE_GHOSTED (1 << 23) +#define TYPE_QUERY (1 << 24) + +// 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) + +// derived values for setup file handling #define TYPE_BOOLEAN_STYLE (TYPE_BOOLEAN | \ TYPE_SWITCH | \ TYPE_YES_NO | \ TYPE_ECS_AGA ) -/* derived values for setup screen */ +// derived values for setup screen #define TYPE_VALUE (TYPE_BOOLEAN_STYLE | \ TYPE_SWITCH3 | \ TYPE_YES_NO_AUTO | \ @@ -63,10 +66,12 @@ TYPE_KEY_X11 | \ TYPE_INTEGER | \ TYPE_STRING | \ + TYPE_PLAYER | \ TYPE_ELEMENT | \ TYPE_GRAPHIC) #define TYPE_SKIP_ENTRY (TYPE_EMPTY | \ + TYPE_SKIPPABLE | \ TYPE_KEY | \ TYPE_STRING | \ TYPE_GHOSTED) @@ -88,7 +93,7 @@ struct TokenInfo char *text; }; -/* some definitions for list and hash handling */ +// some definitions for list and hash handling typedef struct SetupFileList SetupFileList; typedef struct hashtable SetupFileHash; @@ -107,7 +112,7 @@ typedef struct hashtable SetupFileHash; } \ -/* sort priorities of level series (also used as level series classes) */ +// sort priorities of level series (also used as level series classes) #define LEVELCLASS_TUTORIAL_START 10 #define LEVELCLASS_TUTORIAL_END 99 #define LEVELCLASS_CLASSICS_START 100 @@ -184,7 +189,7 @@ typedef struct hashtable SetupFileHash; IS_LEVELCLASS_SB(n) ? LEVELCLASS_SB : \ LEVELCLASS_UNDEFINED) -/* sort priorities of artwork */ +// sort priorities of artwork #define ARTWORKCLASS_CLASSICS_START 100 #define ARTWORKCLASS_CLASSICS_END 199 #define ARTWORKCLASS_CONTRIB_START 200 @@ -221,6 +226,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 *); @@ -246,9 +254,10 @@ char *getCustomMusicDirectory(void); void InitTapeDirectory(char *); void InitScoreDirectory(char *); void InitUserLevelDirectory(char *); +void InitNetworkLevelDirectory(char *); void InitLevelSetupDirectory(char *); -TreeInfo *newTreeInfo(); +TreeInfo *newTreeInfo(void); TreeInfo *newTreeInfo_setDefaults(int); void pushTreeInfo(TreeInfo **, TreeInfo *); int numTreeInfo(TreeInfo *); @@ -272,6 +281,7 @@ char *getPersonalDataDir(void); char *getUserGameDataDir(void); char *getSetupDir(void); char *getUserLevelDir(char *); +char *getNetworkLevelDir(char *); char *getCurrentLevelDir(void); char *getNewUserLevelSubdir(void); @@ -295,7 +305,7 @@ SetupFileList *setListEntry(SetupFileList *, char *, char *); SetupFileList *addListEntry(SetupFileList *, char *, char *); SetupFileList *loadSetupFileList(char *); -SetupFileHash *newSetupFileHash(); +SetupFileHash *newSetupFileHash(void); void freeSetupFileHash(SetupFileHash *); char *getHashEntry(SetupFileHash *, char *); void setHashEntry(SetupFileHash *, char *, char *); @@ -307,19 +317,25 @@ char *getSetupLine(struct TokenInfo *, char *, int); unsigned int get_hash_from_key(void *); -boolean AdjustGraphicsForEMC(); +int GetZipFileTreeType(char *); +boolean ExtractZipFileIntoDirectory(char *, char *, int); + +boolean AdjustGraphicsForEMC(void); void LoadLevelInfo(void); void LoadArtworkInfo(void); void LoadLevelArtworkInfo(void); +char *getArtworkIdentifierForUserLevelSet(int); +TreeInfo *getArtworkTreeInfoForUserLevelSet(int); +boolean checkIfCustomArtworkExistsForCurrentLevelSet(void); void AddUserLevelSetToLevelInfo(char *); boolean UpdateUserLevelSet(char *, char *, char *, int); -boolean CreateUserLevelSet(char *, char *, char *, int); +boolean CreateUserLevelSet(char *, char *, char *, int, boolean); void LoadLevelSetup_LastSeries(void); void SaveLevelSetup_LastSeries(void); -void SaveLevelSetup_LastSeries_Deactivate(); +void SaveLevelSetup_LastSeries_Deactivate(void); void LoadLevelSetup_SeriesInfo(void); void SaveLevelSetup_SeriesInfo(void); @@ -330,4 +346,4 @@ void LevelStats_setSolved(int, int); void LevelStats_incPlayed(int); void LevelStats_incSolved(int); -#endif /* MISC_H */ +#endif // MISC_H