From 95811b345b0ea7a13fc1edd79f97a6d9ad7b93eb Mon Sep 17 00:00:00 2001 From: atenfyr Date: Tue, 3 Dec 2024 23:13:32 -0600 Subject: [PATCH 1/2] copy to BaseGameInitialKnownItemList as a bodge backwards compatibility fix --- .../src/handlers/item_list_entries.rs | 48 +++++++++++++------ 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/astro_mod_integrator/src/handlers/item_list_entries.rs b/astro_mod_integrator/src/handlers/item_list_entries.rs index 2e45f36..8e7092c 100644 --- a/astro_mod_integrator/src/handlers/item_list_entries.rs +++ b/astro_mod_integrator/src/handlers/item_list_entries.rs @@ -41,27 +41,45 @@ pub(crate) fn handle_item_list_entries( .as_object() .ok_or_else(|| io::Error::new(ErrorKind::Other, "Invalid item_list_entries"))?; + // we duplicate /Game/Items/ItemTypes/MasterItemList entries into /Game/Items/ItemTypes/BaseGameInitialKnownItemList, if the latter list is not specified + // this provides backwards compatibility for older mods + // this can just be suppressed by specifying an entry for /Game/Items/ItemTypes/BaseGameInitialKnownItemList in metadata + let exists_bgikil = item_list_entries_map.contains_key("/Game/Items/ItemTypes/BaseGameInitialKnownItemList"); + for (name, item_list_entries) in item_list_entries_map { let item_list_entries = item_list_entries .as_object() .ok_or_else(|| io::Error::new(ErrorKind::Other, "Invalid item_list_entries"))?; - let new_items_entry = new_items.entry(name.clone()).or_insert_with(HashMap::new); - - for (item_name, entries) in item_list_entries { - let entries = entries - .as_array() - .ok_or_else(|| io::Error::new(ErrorKind::Other, "Invalid item_list_entries"))?; - - let new_items_entry_map = new_items_entry - .entry(item_name.clone()) - .or_insert_with(Vec::new); - for entry in entries { - let entry = entry.as_str().ok_or_else(|| { - io::Error::new(ErrorKind::Other, "Invalid item_list_entries") - })?; - new_items_entry_map.push(String::from(entry)); + + { + let new_items_entry = new_items.entry(name.clone()).or_insert_with(HashMap::new); + + for (item_name, entries) in item_list_entries { + let entries = entries + .as_array() + .ok_or_else(|| io::Error::new(ErrorKind::Other, "Invalid item_list_entries"))?; + + let new_items_entry_map = new_items_entry + .entry(item_name.clone()) + .or_insert_with(Vec::new); + for entry in entries { + let entry = entry.as_str().ok_or_else(|| { + io::Error::new(ErrorKind::Other, "Invalid item_list_entries") + })?; + new_items_entry_map.push(String::from(entry)); + } } } + + // duplicate to BaseGameInitialKnownItemList appropriately, if applicable + if name == "/Game/Items/ItemTypes/MasterItemList" && !exists_bgikil { + let orig_entry = new_items.entry(name.clone()).or_insert_with(HashMap::new).clone(); + + new_items + .entry(String::from("/Game/Items/ItemTypes/BaseGameInitialKnownItemList")) + .or_insert_with(HashMap::new) + .extend(orig_entry); + } } } From 832aa77b7807b387147c48530a8d8442c55e68d2 Mon Sep 17 00:00:00 2001 From: atenfyr Date: Tue, 3 Dec 2024 23:57:05 -0600 Subject: [PATCH 2/2] Unicode-3.0 is OK... --- about.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/about.toml b/about.toml index e462f0f..af2a882 100644 --- a/about.toml +++ b/about.toml @@ -11,7 +11,8 @@ accepted = [ "CC0-1.0", "MPL-2.0", "BSD-3-Clause", - "ISC" + "ISC", + "Unicode-3.0" ] [unreal_asset.clarify]