X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsetup.c;h=44d6b722d4719111998a1d7cd7769ab9043280f2;hb=05deb9f50dbf596012b2ab0116b95548d2182410;hp=74c21fe33bdad1fe05195ff196b84a3f20278f56;hpb=3b7f6c6d572ffd50744e76f9ed93733785e13211;p=rocksndiamonds.git diff --git a/src/libgame/setup.c b/src/libgame/setup.c index 74c21fe3..44d6b722 100644 --- a/src/libgame/setup.c +++ b/src/libgame/setup.c @@ -1215,7 +1215,7 @@ int numTreeInfoInGroup(TreeInfo *node) return numTreeInfo(getTreeInfoFirstGroupEntry(node)); } -int posTreeInfo(TreeInfo *node) +int getPosFromTreeInfo(TreeInfo *node) { TreeInfo *node_cmp = getTreeInfoFirstGroupEntry(node); int pos = 0; @@ -2364,6 +2364,7 @@ SetupFileHash *loadSetupFileHash(char *filename) #define TOKEN_STR_LAST_LEVEL_SERIES "last_level_series" #define TOKEN_STR_LAST_PLAYED_LEVEL "last_played_level" #define TOKEN_STR_HANDICAP_LEVEL "handicap_level" +#define TOKEN_STR_LAST_USER "last_user" // level directory info #define LEVELINFO_TOKEN_IDENTIFIER 0 @@ -4726,3 +4727,66 @@ void LevelStats_incSolved(int nr) if (nr >= 0 && nr < MAX_LEVELS) level_stats[nr].solved++; } + +void LoadUserSetup(void) +{ + // -------------------------------------------------------------------------- + // ~/./usersetup.conf + // -------------------------------------------------------------------------- + + char *filename = getPath2(getMainUserGameDataDir(), USERSETUP_FILENAME); + SetupFileHash *user_setup_hash = NULL; + + // always start with reliable default values + user.nr = 0; + + if ((user_setup_hash = loadSetupFileHash(filename))) + { + char *token_value; + + // get last selected user number + token_value = getHashEntry(user_setup_hash, TOKEN_STR_LAST_USER); + + if (token_value) + user.nr = MIN(MAX(0, atoi(token_value)), MAX_PLAYER_NAMES - 1); + + freeSetupFileHash(user_setup_hash); + } + else + { + Debug("setup", "using default setup values"); + } + + free(filename); +} + +void SaveUserSetup(void) +{ + // -------------------------------------------------------------------------- + // ~/./usersetup.conf + // -------------------------------------------------------------------------- + + char *filename = getPath2(getMainUserGameDataDir(), USERSETUP_FILENAME); + FILE *file; + + InitMainUserDataDirectory(); + + if (!(file = fopen(filename, MODE_WRITE))) + { + Warn("cannot write setup file '%s'", filename); + + free(filename); + + return; + } + + fprintFileHeader(file, USERSETUP_FILENAME); + + fprintf(file, "%s\n", getFormattedSetupEntry(TOKEN_STR_LAST_USER, + i_to_a(user.nr))); + fclose(file); + + SetFilePermissions(filename, PERMS_PRIVATE); + + free(filename); +}