From 51f8ee66e608fb588a1addb57df0c0943c4e446e Mon Sep 17 00:00:00 2001 From: Llywelwyn Date: Thu, 17 Aug 2023 05:48:30 +0100 Subject: [PATCH] removes deprecated SufferDamage component --- src/components.rs | 16 ---------------- src/damage_system.rs | 6 +----- src/hunger_system.rs | 16 +++++++++------- src/inventory/mod.rs | 4 ++-- src/main.rs | 2 -- src/player.rs | 13 ++++++++----- src/saveload_system.rs | 2 -- 7 files changed, 20 insertions(+), 39 deletions(-) diff --git a/src/components.rs b/src/components.rs index 6681bf9..0d947df 100644 --- a/src/components.rs +++ b/src/components.rs @@ -197,22 +197,6 @@ pub struct GrantsXP { pub amount: i32, } -#[derive(Component, Debug, ConvertSaveload, Clone)] -pub struct SufferDamage { - pub amount: Vec<(i32, bool)>, -} - -impl SufferDamage { - pub fn new_damage(store: &mut WriteStorage, victim: Entity, amount: i32, from_player: bool) { - if let Some(suffering) = store.get_mut(victim) { - suffering.amount.push((amount, from_player)); - } else { - let dmg = SufferDamage { amount: vec![(amount, from_player)] }; - store.insert(victim, dmg).expect("Unable to insert damage."); - } - } -} - #[derive(Component, Debug, Serialize, Deserialize, Clone)] pub struct Item { pub weight: f32, // in lbs diff --git a/src/damage_system.rs b/src/damage_system.rs index fa652fd..1163daa 100644 --- a/src/damage_system.rs +++ b/src/damage_system.rs @@ -1,8 +1,4 @@ -use super::{ - gamelog, Attributes, Equipped, GrantsXP, InBackpack, Item, LootTable, Map, Name, ParticleBuilder, Player, Pools, - Position, RunState, SufferDamage, -}; -use crate::gamesystem::{hp_per_level, mana_per_level}; +use super::{gamelog, Equipped, InBackpack, Item, LootTable, Name, Player, Pools, Position, RunState}; use rltk::prelude::*; use specs::prelude::*; diff --git a/src/hunger_system.rs b/src/hunger_system.rs index fbf55c9..bc9df0f 100644 --- a/src/hunger_system.rs +++ b/src/hunger_system.rs @@ -1,15 +1,17 @@ -use super::{gamelog, HungerClock, HungerState, SufferDamage, LOG_TICKS}; +use super::{ + effects::{add_effect, EffectType, Targets}, + gamelog, HungerClock, HungerState, LOG_TICKS, +}; use specs::prelude::*; pub struct HungerSystem {} impl<'a> System<'a> for HungerSystem { #[allow(clippy::type_complexity)] - type SystemData = - (Entities<'a>, WriteStorage<'a, HungerClock>, ReadExpect<'a, Entity>, WriteStorage<'a, SufferDamage>); + type SystemData = (Entities<'a>, WriteStorage<'a, HungerClock>, ReadExpect<'a, Entity>); fn run(&mut self, data: Self::SystemData) { - let (entities, mut hunger_clock, player_entity, mut inflict_damage) = data; + let (entities, mut hunger_clock, player_entity) = data; for (entity, mut clock) in (&entities, &mut hunger_clock).join() { if LOG_TICKS && entity == *player_entity { @@ -32,14 +34,14 @@ impl<'a> System<'a> for HungerSystem { clock.state = HungerState::Hungry; clock.duration = 400; if entity == *player_entity { - gamelog::Logger::new().colour(rltk::RED).append("You feel hungry.").log(); + gamelog::Logger::new().colour(rltk::BROWN1).append("You feel hungry.").log(); } } HungerState::Hungry => { clock.state = HungerState::Weak; clock.duration = 200; if entity == *player_entity { - gamelog::Logger::new().colour(rltk::RED).append("You feel weak with hunger.").log(); + gamelog::Logger::new().colour(rltk::ORANGE).append("You feel weak with hunger.").log(); } } HungerState::Weak => { @@ -50,7 +52,7 @@ impl<'a> System<'a> for HungerSystem { } } HungerState::Fainting => { - SufferDamage::new_damage(&mut inflict_damage, entity, 1, false); + add_effect(None, EffectType::Damage { amount: 1 }, Targets::Entity { target: entity }); if entity == *player_entity { gamelog::Logger::new().colour(rltk::RED).append("You can't go on without food...").log(); } diff --git a/src/inventory/mod.rs b/src/inventory/mod.rs index 47d1280..3fafaf3 100644 --- a/src/inventory/mod.rs +++ b/src/inventory/mod.rs @@ -2,8 +2,8 @@ use super::{ gamelog, Confusion, Consumable, Cursed, Destructible, Digger, EquipmentChanged, Equippable, Equipped, HungerClock, HungerState, IdentifiedItem, InBackpack, InflictsDamage, MagicItem, MagicMapper, Map, MasterDungeonMap, Name, ObfuscatedName, ParticleBuilder, Point, Pools, Position, ProvidesHealing, ProvidesNutrition, RandomNumberGenerator, - RunState, SufferDamage, TileType, Viewshed, Wand, WantsToDropItem, WantsToPickupItem, WantsToRemoveItem, - WantsToUseItem, AOE, DEFAULT_PARTICLE_LIFETIME, LONG_PARTICLE_LIFETIME, + RunState, TileType, Viewshed, Wand, WantsToDropItem, WantsToPickupItem, WantsToRemoveItem, WantsToUseItem, AOE, + DEFAULT_PARTICLE_LIFETIME, LONG_PARTICLE_LIFETIME, }; mod collection_system; diff --git a/src/main.rs b/src/main.rs index 01735db..5f22f58 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,7 +21,6 @@ mod spawner; mod visibility_system; use visibility_system::VisibilitySystem; mod damage_system; -use damage_system::*; mod hunger_system; mod melee_combat_system; mod trigger_system; @@ -546,7 +545,6 @@ fn main() -> rltk::BError { gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); - gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); diff --git a/src/player.rs b/src/player.rs index 44c56d5..9efb7b3 100644 --- a/src/player.rs +++ b/src/player.rs @@ -1,7 +1,11 @@ use super::{ - gamelog, gui::obfuscate_name_ecs, raws::Reaction, Attributes, BlocksTile, BlocksVisibility, Door, EntityMoved, - Faction, Hidden, HungerClock, HungerState, Item, Map, Name, ParticleBuilder, Player, Pools, Position, Renderable, - RunState, State, SufferDamage, Telepath, TileType, Viewshed, WantsToMelee, WantsToPickupItem, + effects::{add_effect, EffectType, Targets}, + gamelog, + gui::obfuscate_name_ecs, + raws::Reaction, + Attributes, BlocksTile, BlocksVisibility, Door, EntityMoved, Faction, Hidden, HungerClock, HungerState, Item, Map, + Name, ParticleBuilder, Player, Pools, Position, Renderable, RunState, State, Telepath, TileType, Viewshed, + WantsToMelee, WantsToPickupItem, }; use rltk::{Point, RandomNumberGenerator, Rltk, VirtualKeyCode}; use specs::prelude::*; @@ -193,8 +197,7 @@ pub fn kick(i: i32, j: i32, ecs: &mut World) -> RunState { if !crate::spatial::has_tile_content(destination_idx) { if rng.roll_dice(1, 20) == 20 { - let mut suffer_damage = ecs.write_storage::(); - SufferDamage::new_damage(&mut suffer_damage, entity, 1, false); + add_effect(None, EffectType::Damage { amount: 1 }, Targets::Entity { target: entity }); gamelog::Logger::new().append("Ouch! You kick the open air, and pull something.").log(); break; } else { diff --git a/src/saveload_system.rs b/src/saveload_system.rs index 0b7d70d..c8e32f2 100644 --- a/src/saveload_system.rs +++ b/src/saveload_system.rs @@ -101,7 +101,6 @@ pub fn save_game(ecs: &mut World) { Renderable, SingleActivation, Skills, - SufferDamage, TakingTurn, Telepath, Viewshed, @@ -219,7 +218,6 @@ pub fn load_game(ecs: &mut World) { Renderable, SingleActivation, Skills, - SufferDamage, TakingTurn, Telepath, Viewshed,