From: Holger Schemel Date: Sat, 14 Feb 2015 21:03:21 +0000 (+0100) Subject: changed unused playfield from default to empty after loading level X-Git-Tag: 4.0.0.0-rc1~287 X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=commitdiff_plain;h=72044d3a088ea67c0f635613ab0f3b9607931ab5 changed unused playfield from default to empty after loading level --- diff --git a/ChangeLog b/ChangeLog index cad40644..644eebc8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ 2015-02-14 * fixed bug with editor border element not adjusted after resizing level + * changed unused playfield from "default" to "empty" after loading level 2015-02-13 * added zoom functionality for playfield drawing area to level editor diff --git a/src/files.c b/src/files.c index bfa9f816..d79e5f55 100644 --- a/src/files.c +++ b/src/files.c @@ -1608,18 +1608,21 @@ static void setLevelInfoToDefaults_Level(struct LevelInfo *level) level->encoding_16bit_yamyam = TRUE; level->encoding_16bit_amoeba = TRUE; - for (x = 0; x < MAX_LEV_FIELDX; x++) - for (y = 0; y < MAX_LEV_FIELDY; y++) - level->field[x][y] = EL_SAND; - + /* clear level name and level author string buffers */ for (i = 0; i < MAX_LEVEL_NAME_LEN; i++) level->name[i] = '\0'; for (i = 0; i < MAX_LEVEL_AUTHOR_LEN; i++) level->author[i] = '\0'; + /* set level name and level author to default values */ strcpy(level->name, NAMELESS_LEVEL_NAME); strcpy(level->author, ANONYMOUS_NAME); + /* set level playfield to playable default level with player and exit */ + for (x = 0; x < MAX_LEV_FIELDX; x++) + for (y = 0; y < MAX_LEV_FIELDY; y++) + level->field[x][y] = EL_SAND; + level->field[0][0] = EL_PLAYER_1; level->field[STD_LEV_FIELDX - 1][STD_LEV_FIELDY - 1] = EL_EXIT_CLOSED; @@ -6218,6 +6221,12 @@ static void LoadLevel_InitPlayfield(struct LevelInfo *level, char *filename) level->field[x][y] = getMappedElementByVersion(level->field[x][y], level->game_version); + /* clear unused playfield data (nicer if level gets resized in editor) */ + for (x = 0; x < MAX_LEV_FIELDX; x++) + for (y = 0; y < MAX_LEV_FIELDY; y++) + if (x >= level->fieldx || y >= level->fieldy) + level->field[x][y] = EL_EMPTY; + /* copy elements to runtime playfield array */ for (x = 0; x < MAX_LEV_FIELDX; x++) for (y = 0; y < MAX_LEV_FIELDY; y++)