mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-20 20:45:28 +01:00
[MIRROR] Makes update paths remove keys left after merging. [MDB IGNORE] (#13588)
* Makes update paths remove keys left after merging. (#66916) Fixes #66914 * Makes update paths remove keys left after merging. Co-authored-by: AnturK <AnturK@users.noreply.github.com>
This commit is contained in:
@@ -138,20 +138,25 @@ def update_path(dmm_data, replacement_string, verbose=False):
|
||||
return [element]
|
||||
|
||||
bad_keys = {}
|
||||
modified_keys = []
|
||||
keys = list(dmm_data.dictionary.keys())
|
||||
for definition_key in keys:
|
||||
def_value = dmm_data.dictionary[definition_key]
|
||||
new_value = tuple(y for x in def_value for y in get_result(x) if y != None)
|
||||
if new_value != def_value:
|
||||
dmm_data.overwrite_key(definition_key, new_value, bad_keys)
|
||||
modified_keys.append(definition_key)
|
||||
dmm_data.reassign_bad_keys(bad_keys)
|
||||
return modified_keys
|
||||
|
||||
|
||||
def update_map(map_filepath, updates, verbose=False):
|
||||
print("Updating: {0}".format(map_filepath))
|
||||
dmm_data = DMM.from_file(map_filepath)
|
||||
modified_keys = []
|
||||
for update_string in updates:
|
||||
update_path(dmm_data, update_string, verbose)
|
||||
modified_keys.extend(update_path(dmm_data, update_string, verbose))
|
||||
dmm_data.remove_unused_keys(modified_keys)
|
||||
dmm_data.to_file(map_filepath)
|
||||
|
||||
|
||||
|
||||
@@ -83,6 +83,14 @@ class DMM:
|
||||
# reassign the grid entries which used the old key
|
||||
self.grid[k] = bad_keys.get(v, v)
|
||||
|
||||
def remove_unused_keys(self, modified_keys = None):
|
||||
unused_keys = modified_keys if modified_keys is not None else self.dictionary.keys()
|
||||
for key in self.grid.values():
|
||||
if key in unused_keys:
|
||||
unused_keys.remove(key)
|
||||
for key in unused_keys:
|
||||
del self.dictionary[key]
|
||||
|
||||
def _presave_checks(self):
|
||||
# last-second handling of bogus keys to help prevent and fix broken maps
|
||||
self._ensure_free_keys(0)
|
||||
|
||||
Reference in New Issue
Block a user