diff options
Diffstat (limited to 'server/protocol/src/helpers.rs')
| -rw-r--r-- | server/protocol/src/helpers.rs | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/server/protocol/src/helpers.rs b/server/protocol/src/helpers.rs index 679e6301..1be37a36 100644 --- a/server/protocol/src/helpers.rs +++ b/server/protocol/src/helpers.rs @@ -45,6 +45,20 @@ impl Gamedata { .enumerate() .map(|(i, e)| (RecipeIndex(i), e)) } + pub fn can_place_item(&self, tiles: &[TileIndex], item: ItemIndex) -> bool { + for t in tiles.iter().rev() { + if let Some(whitelist) = self.tile_placeable_items.get(t) { + return whitelist.contains(&item); + } + if self.tile_placeable_any.contains(t) { + return true; + } + } + false + } + pub fn walkable(&self, tiles: &[TileIndex]) -> bool { + tiles.iter().any(|t| self.tile_collide.contains(t)) + } } impl Recipe { @@ -92,13 +106,9 @@ impl Recipe { a.iter().chain(b.iter()).copied() } - pub fn supports_tile(&self, tile: Option<TileIndex>) -> bool { + pub fn supports_tile(&self, tile: TileIndex) -> bool { if let Some(tile_constraint) = self.tile() { - if let Some(tile) = tile { - tile == tile_constraint - } else { - false - } + tile == tile_constraint } else { true } |