changed to more generic approach to use only unscanned BD elements
authorHolger Schemel <holger.schemel@virtion.de>
Thu, 22 Aug 2024 17:42:54 +0000 (19:42 +0200)
committerHolger Schemel <holger.schemel@virtion.de>
Thu, 22 Aug 2024 15:46:55 +0000 (17:46 +0200)
While the previous approach only worked when reading caves from BDCFF
files, the new solution works for all cave file formats, as it changes
the internal cave structure after loading.

src/game_bd/bd_cave.c
src/game_bd/bd_caveset.c

index e815806f0d441e6d3147cb7587fa92d819efeae5..93ad63e1a8bf13ac0b58dc825bd80c33defcff50 100644 (file)
@@ -281,10 +281,6 @@ void gd_cave_init(void)
     char *key_1 = getStringToUpper(gd_element_properties[i].filename);
     int element = i;
 
-    // temporary workaround: map scanned elements to their non-scanned counterparts
-    if (gd_element_properties[i].properties & P_SCANNED)
-      element = gd_element_properties[i].pair;
-
     if (hashtable_exists(name_to_element, key_1))      // hash value may be 0
       Warn("BDCFF token '%s' already used for element 0x%x", key_1, element);
 
index 366502d3acc433da837b1e63723a870aadd9bbfb..20a36049c2c60ca0b0e6102b8c730eca8f9599c7 100644 (file)
@@ -251,6 +251,9 @@ GdCave *gd_get_prepared_cave(const GdCave *original_cave, const int level)
   // initialize some cave variables (like player position)
   gd_cave_setup_for_game(prepared_cave);
 
+  // temporary workaround: set all elements in a cave to their non-scanned counterparts
+  unscan_cave(prepared_cave);
+
   return prepared_cave;
 }