From b634bad931f530ee0a207e1461ffc5e52ebb83e3 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sat, 10 Jan 2026 17:16:03 +0100 Subject: compiles with tile stacks --- server/protocol/src/helpers.rs | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'server/protocol/src/helpers.rs') 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) -> 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 } -- cgit v1.3