X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=77585d6cda98510c79a1506c677c6b3b686c107b;hb=f941ccddee3065d7531298e37ad4dcfcd892c1f8;hp=87a60c1cc6112ad8546d4c8ad7587471b357d5d6;hpb=57bbc28786e5cc6c531b53ef5e29512b1e0b73e8;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 87a60c1c..77585d6c 100644 --- a/src/files.c +++ b/src/files.c @@ -82,8 +82,32 @@ #define LEVELCLASS_CONTRIBUTION_END 299 #define LEVELCLASS_USER_START 300 #define LEVELCLASS_USER_END 399 + +#define LEVELCLASS_TUTORIAL LEVELCLASS_TUTORIAL_START +#define LEVELCLASS_CLASSICS LEVELCLASS_CLASSICS_START +#define LEVELCLASS_CONTRIBUTION LEVELCLASS_CONTRIBUTION_START +#define LEVELCLASS_USER LEVELCLASS_USER_START #define LEVELCLASS_UNDEFINED 999 +#define IS_LEVELCLASS_TUTORIAL(n) \ + (leveldir[n].sort_priority >= LEVELCLASS_TUTORIAL_START && \ + leveldir[n].sort_priority <= LEVELCLASS_TUTORIAL_END) +#define IS_LEVELCLASS_CLASSICS(n) \ + (leveldir[n].sort_priority >= LEVELCLASS_CLASSICS_START && \ + leveldir[n].sort_priority <= LEVELCLASS_CLASSICS_END) +#define IS_LEVELCLASS_CONTRIBUTION(n) \ + (leveldir[n].sort_priority >= LEVELCLASS_CONTRIBUTION_START && \ + leveldir[n].sort_priority <= LEVELCLASS_CONTRIBUTION_END) +#define IS_LEVELCLASS_USER(n) \ + (leveldir[n].sort_priority >= LEVELCLASS_USER_START && \ + leveldir[n].sort_priority <= LEVELCLASS_USER_END) + +#define LEVELCLASS(n) (IS_LEVELCLASS_TUTORIAL(n) ? LEVELCLASS_TUTORIAL : \ + IS_LEVELCLASS_CLASSICS(n) ? LEVELCLASS_CLASSICS : \ + IS_LEVELCLASS_CONTRIBUTION(n) ? LEVELCLASS_CONTRIBUTION : \ + IS_LEVELCLASS_USER(n) ? LEVELCLASS_USER : \ + LEVELCLASS_UNDEFINED) + static void SaveUserLevelInfo(); /* for 'InitUserLevelDir()' */ static char *getSetupLine(char *, int); /* for 'SaveUserLevelInfo()' */ @@ -266,7 +290,8 @@ static void setLevelInfoToDefaults() level.high_speed = FALSE; - strcpy(level.name, "Nameless Level"); + strcpy(level.name, NAMELESS_LEVEL_NAME); + strcpy(level.author, ANONYMOUS_NAME); for(i=0; i= LEVELCLASS_CONTRIBUTION_START && - leveldir[leveldir_nr].sort_priority <= LEVELCLASS_CONTRIBUTION_END) + IS_LEVELCLASS_CONTRIBUTION(leveldir_nr)) { Error(ERR_WARN, "level file '%s' has version number 1.0", filename); Error(ERR_WARN, "using high speed movement for player"); @@ -455,7 +512,7 @@ void SaveLevel(int level_nr) fputc(level.edelsteine / 256, file); fputc(level.edelsteine % 256, file); - for(i=0; iname = getStringCopy("non-existing"); + ldi->name = getStringCopy(ANONYMOUS_NAME); + ldi->author = getStringCopy(ANONYMOUS_NAME); ldi->levels = 0; ldi->first_level = 0; ldi->sort_priority = LEVELCLASS_UNDEFINED; /* default: least priority */ @@ -1347,7 +1407,7 @@ int getLastPlayedLevelOfLevelSeries(char *level_series_name) { char *token_value; int level_series_nr = getLevelSeriesNrFromLevelSeriesName(level_series_name); - int last_level_nr = 0; + int last_level_nr = leveldir[level_series_nr].first_level; if (!level_series_name) return 0; @@ -1502,9 +1562,13 @@ static void SaveUserLevelInfo() return; } + /* always start with reliable default values */ + setLevelDirInfoToDefaults(&ldi); + ldi.name = getLoginName(); + ldi.author = getRealName(); ldi.levels = 100; - ldi.first_level = 0; + ldi.first_level = 1; ldi.sort_priority = LEVELCLASS_USER_START; ldi.readonly = FALSE;