diff options
Diffstat (limited to 'src/components')
| -rw-r--r-- | src/components/equipment.rs | 12 | ||||
| -rw-r--r-- | src/components/faction.rs | 15 | ||||
| -rw-r--r-- | src/components/mod.rs | 17 |
3 files changed, 16 insertions, 28 deletions
diff --git a/src/components/equipment.rs b/src/components/equipment.rs index e07aa0b..008e0c6 100644 --- a/src/components/equipment.rs +++ b/src/components/equipment.rs @@ -1,10 +1,6 @@ use std::collections::HashMap; use serde::{Serialize, Deserialize}; -use specs::{ - Component, - HashMapStorage -}; use strum_macros::{EnumString, Display}; use crate::{ Sprite @@ -27,7 +23,8 @@ pub enum Slot { pub enum Stat { Strength, Defence, - Mining + Mining, + Gathering } @@ -40,11 +37,6 @@ pub struct Equippable { -#[derive(Component, Debug, Clone)] -#[storage(HashMapStorage)] -pub struct Equipment { - pub slots: Vec<Slot> -} #[cfg(test)] mod tests { diff --git a/src/components/faction.rs b/src/components/faction.rs index 5fc02a2..32184d5 100644 --- a/src/components/faction.rs +++ b/src/components/faction.rs @@ -1,4 +1,5 @@ +use strum_macros::{EnumString, Display}; use specs::{ Component, HashMapStorage, @@ -6,7 +7,8 @@ use specs::{ Entity, }; -#[derive(Component, Debug, Clone, Copy, PartialEq, Eq, Hash)] +#[derive(Component, Debug, Clone, Copy, PartialEq, Eq, Hash, EnumString, Display)] +#[strum(serialize_all = "lowercase")] #[storage(HashMapStorage)] pub enum Faction { Neutral, @@ -19,17 +21,6 @@ use Faction::{Neutral, Good, Evil, None}; impl Faction { - pub fn from_str(name: &str) -> Option<Faction> { - match name.to_lowercase().as_str() { - "neutral" => Some(Neutral), - "good" => Some(Good), - "evil" => Some(Evil), - "none" => Some(None), - "" => Some(None), - _ => Option::None - } - } - pub fn is_enemy(&self, other: Faction) -> bool { match self { Neutral => false, diff --git a/src/components/mod.rs b/src/components/mod.rs index f3a91d5..d462fef 100644 --- a/src/components/mod.rs +++ b/src/components/mod.rs @@ -17,7 +17,7 @@ pub use messages::{ }; pub use faction::Faction; pub use interactable::{Interactable}; -pub use equipment::Equipment; +pub use equipment::{Equippable, Stat, Slot}; pub use inventory::Inventory; pub use serialise::Serialise; pub use flags::{ @@ -173,11 +173,6 @@ pub struct MonsterAI { pub home: Option<Pos> } -#[derive(Component, Debug, Clone, Default)] -#[storage(HashMapStorage)] -pub struct Home { - pub home: Pos -} #[derive(Component, Debug, Clone)] #[storage(HashMapStorage)] @@ -259,3 +254,13 @@ pub struct Substitute { pub into: Template } +#[derive(Component, Debug, Clone)] +pub struct Stats { + pub skills: HashMap<Stat, i64> +} + +#[derive(Component, Debug, Clone)] +pub struct Requirements { + pub required_flags: HashSet<Flag>, + pub blocking_flags: HashSet<Flag> +} |
