summaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-04-04 14:01:17 +0200
committertroido <troido@protonmail.com>2020-04-04 14:01:17 +0200
commit2cc5b468cfd4c28bf1ad17ef1b3600c3d42f8b83 (patch)
tree835e67143e56fafef795e320ce8fc5d50cb9cc6c /src/components
parent0b17829846adf9482b460e4cc616382ede1df6dd (diff)
listen to sounds in the world
Diffstat (limited to 'src/components')
-rw-r--r--src/components/ear.rs24
-rw-r--r--src/components/interactable.rs4
-rw-r--r--src/components/mod.rs5
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,