removes deprecated SufferDamage component

This commit is contained in:
Llywelwyn 2023-08-17 05:48:30 +01:00
parent 945242bc42
commit 51f8ee66e6
7 changed files with 20 additions and 39 deletions

View file

@ -197,22 +197,6 @@ pub struct GrantsXP {
pub amount: i32, 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<SufferDamage>, 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)] #[derive(Component, Debug, Serialize, Deserialize, Clone)]
pub struct Item { pub struct Item {
pub weight: f32, // in lbs pub weight: f32, // in lbs

View file

@ -1,8 +1,4 @@
use super::{ use super::{gamelog, Equipped, InBackpack, Item, LootTable, Name, Player, Pools, Position, RunState};
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 rltk::prelude::*; use rltk::prelude::*;
use specs::prelude::*; use specs::prelude::*;

View file

@ -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::*; use specs::prelude::*;
pub struct HungerSystem {} pub struct HungerSystem {}
impl<'a> System<'a> for HungerSystem { impl<'a> System<'a> for HungerSystem {
#[allow(clippy::type_complexity)] #[allow(clippy::type_complexity)]
type SystemData = type SystemData = (Entities<'a>, WriteStorage<'a, HungerClock>, ReadExpect<'a, Entity>);
(Entities<'a>, WriteStorage<'a, HungerClock>, ReadExpect<'a, Entity>, WriteStorage<'a, SufferDamage>);
fn run(&mut self, data: Self::SystemData) { 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() { for (entity, mut clock) in (&entities, &mut hunger_clock).join() {
if LOG_TICKS && entity == *player_entity { if LOG_TICKS && entity == *player_entity {
@ -32,14 +34,14 @@ impl<'a> System<'a> for HungerSystem {
clock.state = HungerState::Hungry; clock.state = HungerState::Hungry;
clock.duration = 400; clock.duration = 400;
if entity == *player_entity { 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 => { HungerState::Hungry => {
clock.state = HungerState::Weak; clock.state = HungerState::Weak;
clock.duration = 200; clock.duration = 200;
if entity == *player_entity { 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 => { HungerState::Weak => {
@ -50,7 +52,7 @@ impl<'a> System<'a> for HungerSystem {
} }
} }
HungerState::Fainting => { 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 { if entity == *player_entity {
gamelog::Logger::new().colour(rltk::RED).append("You can't go on without food...").log(); gamelog::Logger::new().colour(rltk::RED).append("You can't go on without food...").log();
} }

View file

@ -2,8 +2,8 @@ use super::{
gamelog, Confusion, Consumable, Cursed, Destructible, Digger, EquipmentChanged, Equippable, Equipped, HungerClock, gamelog, Confusion, Consumable, Cursed, Destructible, Digger, EquipmentChanged, Equippable, Equipped, HungerClock,
HungerState, IdentifiedItem, InBackpack, InflictsDamage, MagicItem, MagicMapper, Map, MasterDungeonMap, Name, HungerState, IdentifiedItem, InBackpack, InflictsDamage, MagicItem, MagicMapper, Map, MasterDungeonMap, Name,
ObfuscatedName, ParticleBuilder, Point, Pools, Position, ProvidesHealing, ProvidesNutrition, RandomNumberGenerator, ObfuscatedName, ParticleBuilder, Point, Pools, Position, ProvidesHealing, ProvidesNutrition, RandomNumberGenerator,
RunState, SufferDamage, TileType, Viewshed, Wand, WantsToDropItem, WantsToPickupItem, WantsToRemoveItem, RunState, TileType, Viewshed, Wand, WantsToDropItem, WantsToPickupItem, WantsToRemoveItem, WantsToUseItem, AOE,
WantsToUseItem, AOE, DEFAULT_PARTICLE_LIFETIME, LONG_PARTICLE_LIFETIME, DEFAULT_PARTICLE_LIFETIME, LONG_PARTICLE_LIFETIME,
}; };
mod collection_system; mod collection_system;

View file

@ -21,7 +21,6 @@ mod spawner;
mod visibility_system; mod visibility_system;
use visibility_system::VisibilitySystem; use visibility_system::VisibilitySystem;
mod damage_system; mod damage_system;
use damage_system::*;
mod hunger_system; mod hunger_system;
mod melee_combat_system; mod melee_combat_system;
mod trigger_system; mod trigger_system;
@ -546,7 +545,6 @@ fn main() -> rltk::BError {
gs.ecs.register::<Skills>(); gs.ecs.register::<Skills>();
gs.ecs.register::<HungerClock>(); gs.ecs.register::<HungerClock>();
gs.ecs.register::<WantsToMelee>(); gs.ecs.register::<WantsToMelee>();
gs.ecs.register::<SufferDamage>();
gs.ecs.register::<Item>(); gs.ecs.register::<Item>();
gs.ecs.register::<IdentifiedItem>(); gs.ecs.register::<IdentifiedItem>();
gs.ecs.register::<MagicItem>(); gs.ecs.register::<MagicItem>();

View file

@ -1,7 +1,11 @@
use super::{ use super::{
gamelog, gui::obfuscate_name_ecs, raws::Reaction, Attributes, BlocksTile, BlocksVisibility, Door, EntityMoved, effects::{add_effect, EffectType, Targets},
Faction, Hidden, HungerClock, HungerState, Item, Map, Name, ParticleBuilder, Player, Pools, Position, Renderable, gamelog,
RunState, State, SufferDamage, Telepath, TileType, Viewshed, WantsToMelee, WantsToPickupItem, 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 rltk::{Point, RandomNumberGenerator, Rltk, VirtualKeyCode};
use specs::prelude::*; 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 !crate::spatial::has_tile_content(destination_idx) {
if rng.roll_dice(1, 20) == 20 { if rng.roll_dice(1, 20) == 20 {
let mut suffer_damage = ecs.write_storage::<SufferDamage>(); add_effect(None, EffectType::Damage { amount: 1 }, Targets::Entity { target: entity });
SufferDamage::new_damage(&mut suffer_damage, entity, 1, false);
gamelog::Logger::new().append("Ouch! You kick the open air, and pull something.").log(); gamelog::Logger::new().append("Ouch! You kick the open air, and pull something.").log();
break; break;
} else { } else {

View file

@ -101,7 +101,6 @@ pub fn save_game(ecs: &mut World) {
Renderable, Renderable,
SingleActivation, SingleActivation,
Skills, Skills,
SufferDamage,
TakingTurn, TakingTurn,
Telepath, Telepath,
Viewshed, Viewshed,
@ -219,7 +218,6 @@ pub fn load_game(ecs: &mut World) {
Renderable, Renderable,
SingleActivation, SingleActivation,
Skills, Skills,
SufferDamage,
TakingTurn, TakingTurn,
Telepath, Telepath,
Viewshed, Viewshed,