X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ffiles.c;h=79c7787936dc2ab8cc8cee8ed272c911a90f73f7;hp=bb1ce49770b1e3b4a85995485ecb586cd958b0b6;hb=d643b3820fbeb5d3c8a731dbdad2785047cb3bb2;hpb=bb49e2b2a9bb4aefe76182be725e998bf9495976 diff --git a/src/files.c b/src/files.c index bb1ce497..79c77879 100644 --- a/src/files.c +++ b/src/files.c @@ -1915,6 +1915,9 @@ static void ActivateLevelTemplate() /* overwrite all individual level settings from template level settings */ level = level_template; + /* restore level file info */ + level.file_info = level_backup.file_info; + /* restore playfield size */ level.fieldx = level_backup.fieldx; level.fieldy = level_backup.fieldy; @@ -6617,21 +6620,21 @@ void LoadLevelTemplate(int nr) LoadLevelTemplate_LoadAndInit(); } -static void LoadLevelTemplateFromNetwork(struct LevelFileInfo *lfi_network_template) +static void LoadNetworkLevelTemplate(struct NetworkLevelInfo *network_level) { - copyLevelFileInfo(lfi_network_template, &level_template.file_info); + copyLevelFileInfo(&network_level->tmpl_info, &level_template.file_info); LoadLevelTemplate_LoadAndInit(); } -static void LoadLevel_LoadAndInit(struct LevelFileInfo *lfi_network_template) +static void LoadLevel_LoadAndInit(struct NetworkLevelInfo *network_level) { LoadLevelFromFileInfo(&level, &level.file_info, FALSE); if (level.use_custom_template) { - if (lfi_network_template != NULL) - LoadLevelTemplateFromNetwork(lfi_network_template); + if (network_level != NULL) + LoadNetworkLevelTemplate(network_level); else LoadLevelTemplate(-1); } @@ -6645,6 +6648,8 @@ static void LoadLevel_LoadAndInit(struct LevelFileInfo *lfi_network_template) void LoadLevel(int nr) { + SetLevelSetInfo(leveldir_current->identifier, nr); + setLevelFileInfo(&level.file_info, nr); LoadLevel_LoadAndInit(NULL); @@ -6657,12 +6662,14 @@ void LoadLevelInfoOnly(int nr) LoadLevelFromFileInfo(&level, &level.file_info, TRUE); } -void LoadLevelFromNetwork(struct LevelFileInfo *lfi_network_level, - struct LevelFileInfo *lfi_network_template) +void LoadNetworkLevel(struct NetworkLevelInfo *network_level) { - copyLevelFileInfo(lfi_network_level, &level.file_info); + SetLevelSetInfo(network_level->leveldir_identifier, + network_level->file_info.nr); + + copyLevelFileInfo(&network_level->file_info, &level.file_info); - LoadLevel_LoadAndInit(lfi_network_template); + LoadLevel_LoadAndInit(network_level); } static int SaveLevel_VERS(FILE *file, struct LevelInfo *level) @@ -8281,7 +8288,8 @@ void SaveScore(int nr) char *filename = getScoreFilename(nr); FILE *file; - InitScoreDirectory(leveldir_current->subdir); + /* used instead of "leveldir_current->subdir" (for network games) */ + InitScoreDirectory(levelset.identifier); if (!(file = fopen(filename, MODE_WRITE))) {