diff options
| author | metamuffin <metamuffin@disroot.org> | 2025-12-16 01:07:41 +0100 |
|---|---|---|
| committer | metamuffin <metamuffin@disroot.org> | 2025-12-16 01:07:41 +0100 |
| commit | e2efb15aa58477d898f92c8959242c0da3ce62bc (patch) | |
| tree | dbea74993c73c2f3f43fcf771c01dbd8d2607c5d /server/data/src/registry.rs | |
| parent | 48d7482ded28ce9d3d4ff52517b48665ff1b8ebd (diff) | |
| download | hurrycurry-e2efb15aa58477d898f92c8959242c0da3ce62bc.tar hurrycurry-e2efb15aa58477d898f92c8959242c0da3ce62bc.tar.bz2 hurrycurry-e2efb15aa58477d898f92c8959242c0da3ce62bc.tar.zst | |
Add player portal pair entity; fix tile/item remapping
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() |