changed unused playfield from default to empty after loading level
authorHolger Schemel <info@artsoft.org>
Sat, 14 Feb 2015 21:03:21 +0000 (22:03 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 14 Feb 2015 21:03:21 +0000 (22:03 +0100)
ChangeLog
src/files.c

index cad40644f89d9ec49fd2cf6c6326eab88ebfc07c..644eebc8cafd19c4aa46b6684a0a03876dfa9fec 100644 (file)
--- 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
index bfa9f8160f1d6f9f88630477d8e7ca4209ed4148..d79e5f55ca3587531794809b82adad7e8f155b85 100644 (file)
@@ -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++)