diff options
Diffstat (limited to 'server')
| -rw-r--r-- | server/src/data.rs | 11 | ||||
| -rw-r--r-- | server/src/game.rs | 3 | ||||
| -rw-r--r-- | server/src/interaction.rs | 15 | ||||
| -rw-r--r-- | server/src/protocol.rs | 1 | 
4 files changed, 21 insertions, 9 deletions
| diff --git a/server/src/data.rs b/server/src/data.rs index fd6f266d..17b508ec 100644 --- a/server/src/data.rs +++ b/server/src/data.rs @@ -19,13 +19,15 @@ pub enum Action {  #[derive(Debug, Clone, Deserialize, Serialize)]  pub struct RecipeDecl {      #[serde(default)] -    pub tile: Option<String>, +    tile: Option<String>,      #[serde(default)] -    pub inputs: Vec<String>, +    inputs: Vec<String>,      #[serde(default)] -    pub outputs: Vec<String>, +    outputs: Vec<String>,      #[serde(default)] -    pub action: Action, +    action: Action, +    #[serde(default)] +    warn: bool,  }  #[derive(Debug, Clone, Deserialize)] @@ -92,6 +94,7 @@ pub fn build_gamedata(              Action::Never => {}              Action::Passive(duration) => recipes.push(Recipe::Passive {                  duration, +                warn: r.warn,                  tile,                  input: inputs.next().expect("passive recipe without input"),                  output: outputs.next(), diff --git a/server/src/game.rs b/server/src/game.rs index b478c037..a8ea9991 100644 --- a/server/src/game.rs +++ b/server/src/game.rs @@ -282,7 +282,8 @@ impl Game {          for (&pos, tile) in &mut self.tiles {              if let Some(effect) = tick_tile(dt, &self.data, tile) {                  match effect { -                    TickEffect::Progress => self.packet_out.push_back(PacketC::SetActive { +                    TickEffect::Progress(warn) => self.packet_out.push_back(PacketC::SetActive { +                        warn,                          tile: pos,                          progress: tile                              .item diff --git a/server/src/interaction.rs b/server/src/interaction.rs index 7f694ad8..ef6d5bf7 100644 --- a/server/src/interaction.rs +++ b/server/src/interaction.rs @@ -13,6 +13,7 @@ pub enum Recipe {          tile: Option<TileIndex>,          input: ItemIndex,          output: Option<ItemIndex>, +        warn: bool,      },      Active {          duration: f32, @@ -42,6 +43,12 @@ impl Recipe {              _ => None,          }      } +    pub fn warn(&self) -> bool { +        match self { +            Recipe::Passive { warn, .. } => *warn, +            _ => false, +        } +    }      pub fn inputs(&self) -> Vec<ItemIndex> {          match self {              Recipe::Passive { input, .. } => vec![*input], @@ -189,7 +196,7 @@ pub fn interact(  }  pub enum TickEffect { -    Progress, +    Progress(bool),      Produce,  }  pub fn tick_tile(dt: f32, data: &Gamedata, tile: &mut Tile) -> Option<TickEffect> { @@ -205,7 +212,7 @@ pub fn tick_tile(dt: f32, data: &Gamedata, tile: &mut Tile) -> Option<TickEffect                      };                      a.progress = 1.;                  } -                return Some(TickEffect::Progress); +                return Some(TickEffect::Progress(r.warn()));              }          } else {              for (ri, recipe) in data.recipes() { @@ -220,11 +227,11 @@ pub fn tick_tile(dt: f32, data: &Gamedata, tile: &mut Tile) -> Option<TickEffect                              recipe: ri,                              progress: 0.,                              working: 1, -                        }) +                        }); +                        return Some(TickEffect::Progress(recipe.warn()));                      }                  }              } -            return Some(TickEffect::Progress);          }      }      None diff --git a/server/src/protocol.rs b/server/src/protocol.rs index a82dad96..305ffa1d 100644 --- a/server/src/protocol.rs +++ b/server/src/protocol.rs @@ -96,6 +96,7 @@ pub enum PacketC {      SetActive {          tile: IVec2,          progress: Option<f32>, +        warn: bool,      },      UpdateMap {          pos: IVec2, | 
