aboutsummaryrefslogtreecommitdiff
path: root/server/data/src
diff options
context:
space:
mode:
Diffstat (limited to 'server/data/src')
-rw-r--r--server/data/src/entities.rs2
-rw-r--r--server/data/src/lib.rs8
-rw-r--r--server/data/src/registry.rs13
3 files changed, 18 insertions, 5 deletions
diff --git a/server/data/src/entities.rs b/server/data/src/entities.rs
index 62947b05..cd1ba18d 100644
--- a/server/data/src/entities.rs
+++ b/server/data/src/entities.rs
@@ -44,6 +44,8 @@ pub enum EntityDecl {
#[serde(default = "default_tile")]
in_tile: TileIndex,
#[serde(default = "default_tile")]
+ neutral_tile: TileIndex,
+ #[serde(default = "default_tile")]
out_tile: TileIndex,
},
Customers {
diff --git a/server/data/src/lib.rs b/server/data/src/lib.rs
index d06aadd1..b490fbc2 100644
--- a/server/data/src/lib.rs
+++ b/server/data/src/lib.rs
@@ -225,11 +225,15 @@ fn build_data(
exclusive_tiles.entry(*blocker_tile).or_default();
}
EntityDecl::PlayerPortalPair {
- in_tile, out_tile, ..
+ in_tile,
+ out_tile,
+ neutral_tile,
+ ..
} => {
*in_tile = reg.register_tile("black-hole".to_owned());
+ *neutral_tile = reg.register_tile("grey-hole".to_owned());
*out_tile = reg.register_tile("white-hole".to_owned());
- tile_walkable.extend([*in_tile, *out_tile]);
+ tile_walkable.extend([*in_tile, *neutral_tile, *out_tile]);
}
_ => (),
}
diff --git a/server/data/src/registry.rs b/server/data/src/registry.rs
index 372df653..f405489b 100644
--- a/server/data/src/registry.rs
+++ b/server/data/src/registry.rs
@@ -93,8 +93,11 @@ pub(crate) fn filter_unused_tiles_and_items(data: &mut Gamedata, serverdata: &mu
used_tiles.insert(*blocker_tile);
}
EntityDecl::PlayerPortalPair {
- in_tile, out_tile, ..
- } => used_tiles.extend([*in_tile, *out_tile]),
+ in_tile,
+ out_tile,
+ neutral_tile,
+ ..
+ } => used_tiles.extend([*in_tile, *out_tile, *neutral_tile]),
_ => (),
};
}
@@ -197,9 +200,13 @@ pub(crate) fn filter_unused_tiles_and_items(data: &mut Gamedata, serverdata: &mu
*blocker_tile = tile_map[blocker_tile];
}
EntityDecl::PlayerPortalPair {
- in_tile, out_tile, ..
+ in_tile,
+ out_tile,
+ neutral_tile,
+ ..
} => {
*in_tile = tile_map[in_tile];
+ *neutral_tile = tile_map[neutral_tile];
*out_tile = tile_map[out_tile];
}
_ => (),