aboutsummaryrefslogtreecommitdiff
path: root/server/src/data.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-06-23 19:51:08 +0200
committermetamuffin <metamuffin@disroot.org>2024-06-23 19:51:08 +0200
commit44a431aca295af333ede40eeed8115ed15bed222 (patch)
tree28f345df4d69a021188f780ad641de3944de9236 /server/src/data.rs
parentb972ea72c09a81187ad2e4f55711da6f8e9fdaff (diff)
downloadhurrycurry-44a431aca295af333ede40eeed8115ed15bed222.tar
hurrycurry-44a431aca295af333ede40eeed8115ed15bed222.tar.bz2
hurrycurry-44a431aca295af333ede40eeed8115ed15bed222.tar.zst
reapply reverting recipes
Diffstat (limited to 'server/src/data.rs')
-rw-r--r--server/src/data.rs25
1 files changed, 11 insertions, 14 deletions
diff --git a/server/src/data.rs b/server/src/data.rs
index 2d942de4..a8b712b0 100644
--- a/server/src/data.rs
+++ b/server/src/data.rs
@@ -28,8 +28,8 @@ use std::{collections::HashMap, sync::RwLock};
pub enum Action {
#[default]
Never,
- Passive(f32),
- Active(f32),
+ Passive,
+ Active,
Instant,
}
@@ -45,6 +45,10 @@ pub struct RecipeDecl {
action: Action,
#[serde(default)]
warn: bool,
+ #[serde(default)]
+ revert_duration: Option<f32>,
+ #[serde(default)]
+ duration: Option<f32>,
}
#[derive(Debug, Clone, Deserialize)]
@@ -109,15 +113,16 @@ pub fn build_gamedata(
let tile = r.tile.map(|t| TileIndex(register(&tile_names, t)));
match r.action {
Action::Never => {}
- Action::Passive(duration) => recipes.push(Recipe::Passive {
- duration,
+ Action::Passive => recipes.push(Recipe::Passive {
+ duration: r.duration.expect("duration for passive missing"),
warn: r.warn,
tile,
+ revert_duration: r.revert_duration,
input: inputs.next().expect("passive recipe without input"),
output: outputs.next(),
}),
- Action::Active(duration) => recipes.push(Recipe::Active {
- duration,
+ Action::Active => recipes.push(Recipe::Active {
+ duration: r.duration.expect("duration for active missing"),
tile,
input: inputs.next().expect("active recipe without input"),
outputs: [outputs.next(), outputs.next()],
@@ -236,11 +241,3 @@ impl Gamedata {
.map(|(i, e)| (RecipeIndex(i), e))
}
}
-impl Action {
- pub fn duration(&self) -> f32 {
- match self {
- Action::Instant | Action::Never => 0.,
- Action::Passive(x) | Action::Active(x) => *x,
- }
- }
-}