diff options
| author | nokoe <nokoe@mailbox.org> | 2025-12-16 04:45:47 +0100 |
|---|---|---|
| committer | nokoe <nokoe@mailbox.org> | 2025-12-16 04:45:47 +0100 |
| commit | 3d49838e934848bd66411ca55f5b58eae99cb728 (patch) | |
| tree | 80b95f93341ea8a97c23d95b07bec822aea767a5 /server/data/src | |
| parent | e99a71f4f5918e9e43c5f8ff01ce348021f925ea (diff) | |
| download | hurrycurry-3d49838e934848bd66411ca55f5b58eae99cb728.tar hurrycurry-3d49838e934848bd66411ca55f5b58eae99cb728.tar.bz2 hurrycurry-3d49838e934848bd66411ca55f5b58eae99cb728.tar.zst | |
capture the curry
Diffstat (limited to 'server/data/src')
| -rw-r--r-- | server/data/src/entities.rs | 6 | ||||
| -rw-r--r-- | server/data/src/lib.rs | 7 | ||||
| -rw-r--r-- | server/data/src/registry.rs | 6 |
3 files changed, 19 insertions, 0 deletions
diff --git a/server/data/src/entities.rs b/server/data/src/entities.rs index cd1ba18d..5c874441 100644 --- a/server/data/src/entities.rs +++ b/server/data/src/entities.rs @@ -90,6 +90,12 @@ pub enum EntityDecl { DemandSink { pos: IVec2, }, + CtfMinigame { + items: Vec<String>, + spawnpoints: Vec<IVec2>, + #[serde(default)] + item_indices: Vec<ItemIndex>, + }, } #[derive(Debug, Clone, Deserialize, Serialize)] diff --git a/server/data/src/lib.rs b/server/data/src/lib.rs index b490fbc2..d4764f7d 100644 --- a/server/data/src/lib.rs +++ b/server/data/src/lib.rs @@ -235,6 +235,13 @@ fn build_data( *out_tile = reg.register_tile("white-hole".to_owned()); tile_walkable.extend([*in_tile, *neutral_tile, *out_tile]); } + EntityDecl::CtfMinigame { + items, + item_indices, + .. + } => { + item_indices.extend(items.iter().cloned().map(|name| reg.register_item(name))); + } _ => (), } entities.push(e); diff --git a/server/data/src/registry.rs b/server/data/src/registry.rs index f405489b..14a06b93 100644 --- a/server/data/src/registry.rs +++ b/server/data/src/registry.rs @@ -98,6 +98,9 @@ pub(crate) fn filter_unused_tiles_and_items(data: &mut Gamedata, serverdata: &mu neutral_tile, .. } => used_tiles.extend([*in_tile, *out_tile, *neutral_tile]), + EntityDecl::CtfMinigame { item_indices, .. } => { + used_items.extend(item_indices.iter().cloned()); + } _ => (), }; } @@ -209,6 +212,9 @@ pub(crate) fn filter_unused_tiles_and_items(data: &mut Gamedata, serverdata: &mu *neutral_tile = tile_map[neutral_tile]; *out_tile = tile_map[out_tile]; } + EntityDecl::CtfMinigame { item_indices, .. } => { + item_indices.iter_mut().for_each(|e| *e = item_map[e]); + } _ => (), }; } |