From 836bdea5497cadaa468b4d74ad5e36404a89f46c Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 15 Oct 2025 21:51:09 +0200 Subject: Fix parsing tile placable map --- server/protocol/src/lib.rs | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'server/protocol/src') diff --git a/server/protocol/src/lib.rs b/server/protocol/src/lib.rs index dc9acfdb..ee5651ce 100644 --- a/server/protocol/src/lib.rs +++ b/server/protocol/src/lib.rs @@ -86,6 +86,7 @@ pub struct Gamedata { pub item_names: Vec, pub tile_names: Vec, pub tile_walkable: HashSet, + #[serde(deserialize_with = "deser_tile_index_map")] pub tile_placeable_items: BTreeMap>, pub tile_interactable_empty: HashSet, pub maps: Vec<(String, MapMetadata)>, @@ -385,3 +386,11 @@ fn deser_ivec2_opt<'de, D: Deserializer<'de>>(deserializer: D) -> Result::deserialize(deserializer)?; Ok(x.map(|v| v.as_ivec2())) } +fn deser_tile_index_map<'de, D: Deserializer<'de>>( + deserializer: D, +) -> Result>, D::Error> { + let x = BTreeMap::>::deserialize(deserializer)?; + Ok(x.into_iter() + .map(|(k, v)| (TileIndex(k.parse().ok().unwrap_or_default()), v)) + .collect()) +} -- cgit v1.3