diff options
Diffstat (limited to 'server/data/src/registry.rs')
| -rw-r--r-- | server/data/src/registry.rs | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/server/data/src/registry.rs b/server/data/src/registry.rs index 6c92ecb5..372df653 100644 --- a/server/data/src/registry.rs +++ b/server/data/src/registry.rs @@ -83,16 +83,19 @@ pub(crate) fn filter_unused_tiles_and_items(data: &mut Gamedata, serverdata: &mu EntityDecl::Gate { blocker_tile: blocker, .. - } => used_tiles.insert(*blocker), - EntityDecl::Customers { unknown_order, .. } => used_items.insert(*unknown_order), + } => used_tiles.extend([*blocker]), + EntityDecl::Customers { unknown_order, .. } => used_items.extend([*unknown_order]), EntityDecl::TagMinigame { tag_item, blocker_tile, } => { used_items.insert(*tag_item); - used_tiles.insert(*blocker_tile) + used_tiles.insert(*blocker_tile); } - _ => false, + EntityDecl::PlayerPortalPair { + in_tile, out_tile, .. + } => used_tiles.extend([*in_tile, *out_tile]), + _ => (), }; } @@ -182,6 +185,26 @@ pub(crate) fn filter_unused_tiles_and_items(data: &mut Gamedata, serverdata: &mu *item = item_map[item] } } + for e in &mut serverdata.entity_decls { + match e { + EntityDecl::Gate { blocker_tile, .. } => *blocker_tile = tile_map[blocker_tile], + EntityDecl::Customers { unknown_order, .. } => *unknown_order = item_map[unknown_order], + EntityDecl::TagMinigame { + tag_item, + blocker_tile, + } => { + *tag_item = item_map[tag_item]; + *blocker_tile = tile_map[blocker_tile]; + } + EntityDecl::PlayerPortalPair { + in_tile, out_tile, .. + } => { + *in_tile = tile_map[in_tile]; + *out_tile = tile_map[out_tile]; + } + _ => (), + }; + } data.tile_walkable = data .tile_walkable .clone() |