aboutsummaryrefslogtreecommitdiff
path: root/server/data/src
diff options
context:
space:
mode:
authornokoe <nokoe@mailbox.org>2025-12-16 04:45:47 +0100
committernokoe <nokoe@mailbox.org>2025-12-16 04:45:47 +0100
commit3d49838e934848bd66411ca55f5b58eae99cb728 (patch)
tree80b95f93341ea8a97c23d95b07bec822aea767a5 /server/data/src
parente99a71f4f5918e9e43c5f8ff01ce348021f925ea (diff)
downloadhurrycurry-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.rs6
-rw-r--r--server/data/src/lib.rs7
-rw-r--r--server/data/src/registry.rs6
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]);
+ }
_ => (),
};
}