aboutsummaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-09-30 14:31:51 +0200
committermetamuffin <metamuffin@disroot.org>2025-09-30 14:31:51 +0200
commit7fc0484a680ab777174aec1c1ffcbb61cd19c479 (patch)
tree9816795e0f509ae1675241937961024f1906692c /server/src
parent792227a1c7398c903efe54213a9a290bb564509d (diff)
downloadhurrycurry-7fc0484a680ab777174aec1c1ffcbb61cd19c479.tar
hurrycurry-7fc0484a680ab777174aec1c1ffcbb61cd19c479.tar.bz2
hurrycurry-7fc0484a680ab777174aec1c1ffcbb61cd19c479.tar.zst
tile decl conveyors; migrate duplex
Diffstat (limited to 'server/src')
-rw-r--r--server/src/data/mod.rs26
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, &reg)?);
- }
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, &reg)?);
+ }
+ 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,
+ },
+ &reg,
+ )?);
+ }
}
}