aboutsummaryrefslogtreecommitdiff
path: root/server/protocol/src/helpers.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/protocol/src/helpers.rs')
-rw-r--r--server/protocol/src/helpers.rs22
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
}