summaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-10-03 15:20:52 +0200
committertroido <troido@protonmail.com>2020-10-03 15:20:52 +0200
commitfa5ddaa570473ece02e0a3bfb35702211d21ce12 (patch)
tree501498c9db9d7d2c985f86272b3405c98301556f /src/components
parent5af83beb6f10023cef7eba192a0b190518fe967b (diff)
added dense grass; home is now part of monsterAI component
Diffstat (limited to 'src/components')
-rw-r--r--src/components/equipment.rs12
-rw-r--r--src/components/faction.rs15
-rw-r--r--src/components/mod.rs17
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>
+}