diff options
| author | troido <troido@protonmail.com> | 2020-04-04 14:01:17 +0200 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-04-04 14:01:17 +0200 |
| commit | 2cc5b468cfd4c28bf1ad17ef1b3600c3d42f8b83 (patch) | |
| tree | 835e67143e56fafef795e320ce8fc5d50cb9cc6c /src/components | |
| parent | 0b17829846adf9482b460e4cc616382ede1df6dd (diff) | |
listen to sounds in the world
Diffstat (limited to 'src/components')
| -rw-r--r-- | src/components/ear.rs | 24 | ||||
| -rw-r--r-- | src/components/interactable.rs | 4 | ||||
| -rw-r--r-- | src/components/mod.rs | 5 |
3 files changed, 32 insertions, 1 deletions
diff --git a/src/components/ear.rs b/src/components/ear.rs new file mode 100644 index 0000000..d032122 --- /dev/null +++ b/src/components/ear.rs @@ -0,0 +1,24 @@ + +use specs::{ + HashMapStorage, + Component, +}; + + +#[derive(Debug, Clone)] +pub struct Sound { + pub source: Option<String>, + pub text: String +} + +impl Sound { + pub fn as_message(self) -> (Option<String>, String) { + return (None, format!("{}: {}", self.source.unwrap_or("".to_string()), self.text)); + } +} + +#[derive(Component, Debug, Clone, Default)] +#[storage(HashMapStorage)] +pub struct Ear{ + pub sounds: Vec<Sound> +} diff --git a/src/components/interactable.rs b/src/components/interactable.rs index 2dca6ea..3c8f918 100644 --- a/src/components/interactable.rs +++ b/src/components/interactable.rs @@ -12,7 +12,8 @@ use crate::{ #[storage(HashMapStorage)] pub enum Interactable { Harvest, - Change(Template) + Change(Template), + Say(String) } impl Interactable { @@ -22,6 +23,7 @@ impl Interactable { match typ.as_str()? { "harvest" => Some(Interactable::Harvest), "change" => Some(Interactable::Change(Template::from_json(arg).ok()?)), + "say" => Some(Interactable::Say(arg.as_str()?.to_string())), _ => None } } diff --git a/src/components/mod.rs b/src/components/mod.rs index efdf8f7..b7e3875 100644 --- a/src/components/mod.rs +++ b/src/components/mod.rs @@ -7,6 +7,7 @@ pub mod equipment; pub mod inventory; pub mod serialise; pub mod flags; +pub mod ear; pub use item::Item; pub use messages::{ @@ -23,6 +24,10 @@ pub use flags::{ Flag, Flags }; +pub use ear::{ + Sound, + Ear +}; use specs::{ DenseVecStorage, |
