diff --git a/src/components.rs b/src/components.rs index 5943aff..436ef03 100644 --- a/src/components.rs +++ b/src/components.rs @@ -179,6 +179,20 @@ pub struct ParticleLifetime { pub lifetime_ms: f32, } +#[derive(Serialize, Deserialize, Copy, Clone, PartialEq)] +pub enum HungerState { + WellFed, + Normal, + Hungry, + Starving, +} + +#[derive(Component, Serialize, Deserialize, Clone)] +pub struct HungerClock { + pub state: HungerState, + pub duration: i32, +} + // Serialization helper code. We need to implement ConvertSaveLoad for each type that contains an // Entity. diff --git a/src/main.rs b/src/main.rs index e744714..96103d6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -490,6 +490,7 @@ fn main() -> rltk::BError { DefenseBonus, WantsToRemoveItem, ParticleLifetime, + HungerClock, ); gs.ecs.insert(SimpleMarkerAllocator::::new()); diff --git a/src/saveload_system.rs b/src/saveload_system.rs index 3029c96..530442f 100644 --- a/src/saveload_system.rs +++ b/src/saveload_system.rs @@ -75,7 +75,8 @@ pub fn save_game(ecs: &mut World) { MeleePowerBonus, DefenseBonus, WantsToRemoveItem, - ParticleLifetime + ParticleLifetime, + HungerClock ); } @@ -157,7 +158,8 @@ pub fn load_game(ecs: &mut World) { MeleePowerBonus, DefenseBonus, WantsToRemoveItem, - ParticleLifetime + ParticleLifetime, + HungerClock ); } diff --git a/src/spawner.rs b/src/spawner.rs index 194ed94..a6e1274 100644 --- a/src/spawner.rs +++ b/src/spawner.rs @@ -27,6 +27,10 @@ pub fn player(ecs: &mut World, player_x: i32, player_y: i32) -> Entity { defense: 2, power: 5, }) + .with(HungerClock { + state: HungerState::WellFed, + duration: 20, + }) .marked::>() .build() }