diff options
author | metamuffin <metamuffin@disroot.org> | 2025-09-30 14:31:51 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-09-30 14:31:51 +0200 |
commit | 7fc0484a680ab777174aec1c1ffcbb61cd19c479 (patch) | |
tree | 9816795e0f509ae1675241937961024f1906692c /server/src/data/mod.rs | |
parent | 792227a1c7398c903efe54213a9a290bb564509d (diff) | |
download | hurrycurry-7fc0484a680ab777174aec1c1ffcbb61cd19c479.tar hurrycurry-7fc0484a680ab777174aec1c1ffcbb61cd19c479.tar.bz2 hurrycurry-7fc0484a680ab777174aec1c1ffcbb61cd19c479.tar.zst |
tile decl conveyors; migrate duplex
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, + }, + ®, + )?); + } } } |