diff options
Diffstat (limited to 'server/src/data/mod.rs')
-rw-r--r-- | server/src/data/mod.rs | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/server/src/data/mod.rs b/server/src/data/mod.rs index 2b3c9a69..74fae62c 100644 --- a/server/src/data/mod.rs +++ b/server/src/data/mod.rs @@ -91,6 +91,8 @@ struct TileArgs { customer_spawn: bool, #[clap(short = 'i', long)] item: Option<String>, + #[clap(long)] + conveyor: Option<String>, } #[derive(Debug, Clone, Serialize, Deserialize)] @@ -291,15 +293,33 @@ pub fn build_data( if tile_spec.customer_spawn { customer_spawn = Some(pos.as_vec2() + Vec2::splat(0.5)); } - if tile_spec.book { - entities.push(construct_entity(Some(pos), &EntityDecl::Book, ®)?); - } if tile_spec.walkable { tile_walkable.insert(tile); } if tile_spec.walkable || tile_spec.collider || tile_spec.exclusive { exclusive_tiles.entry(tile).or_default().extend(item); } + if tile_spec.book { + entities.push(construct_entity(Some(pos), &EntityDecl::Book, ®)?); + } + if let Some(off) = &tile_spec.conveyor { + let (x, y) = off + .split_once(",") + .ok_or(anyhow!("conveyor offset invalid format"))?; + let dir = IVec2::new(x.parse()?, y.parse()?); + entities.push(construct_entity( + Some(pos), + &EntityDecl::Conveyor { + dir: Some(dir), + filter: None, + filter_dir: None, + from: None, + speed: None, + to: None, + }, + ®, + )?); + } } } |