X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Ffiles.c;h=ab949e18883acad59ac2db75d7f8d8e2e0665952;hb=e3ef41011a3564492d12988716af8fc1f090ac6b;hp=792d2cddbea28f7bd033fa67061f8d520e26a10a;hpb=0e9667dbd99ad85fd554c571a9b0e63d7c552551;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 792d2cdd..ab949e18 100644 --- a/src/files.c +++ b/src/files.c @@ -1785,20 +1785,26 @@ static void ActivateLevelTemplate() if (check_special_flags("load_xsb_to_ces")) { - short FieldBackup[MAX_LEV_FIELDX][MAX_LEV_FIELDY]; + struct LevelInfo level_backup = level; - /* backup playfield from individual level */ - for (x = 0; x < level.fieldx; x++) - for (y = 0; y < level.fieldy; y++) - FieldBackup[x][y] = level.field[x][y]; - - /* set all individual level settings to template level settings */ + /* overwrite all individual level settings from template level settings */ level = level_template; - /* restore playfield from individual level */ + /* restore playfield size */ + level.fieldx = level_backup.fieldx; + level.fieldy = level_backup.fieldy; + + /* restore playfield content */ for (x = 0; x < level.fieldx; x++) for (y = 0; y < level.fieldy; y++) - level.field[x][y] = FieldBackup[x][y]; + level.field[x][y] = level_backup.field[x][y]; + + /* restore name and author from individual level */ + strcpy(level.name, level_backup.name); + strcpy(level.author, level_backup.author); + + /* restore flag "use_custom_template" */ + level.use_custom_template = level_backup.use_custom_template; } }