summaryrefslogtreecommitdiff
path: root/src/components/messages.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-09-25 08:54:20 +0200
committertroido <troido@protonmail.com>2020-09-25 08:54:20 +0200
commit09306cb76c6e1eabb4082a985a0a0fa335bda5c1 (patch)
treee43abd096374a8e79186b519d80372112ab0ca74 /src/components/messages.rs
parent9eb3a9da97e53cee14e585e027badb3783b8e25e (diff)
proper serialisation for playerstate; strum for old-style enums
Diffstat (limited to 'src/components/messages.rs')
-rw-r--r--src/components/messages.rs18
1 files changed, 3 insertions, 15 deletions
diff --git a/src/components/messages.rs b/src/components/messages.rs
index 5e27cc6..f815ab5 100644
--- a/src/components/messages.rs
+++ b/src/components/messages.rs
@@ -1,6 +1,7 @@
use std::collections::HashMap;
use std::any::Any;
+use strum_macros::{EnumString, Display};
use specs::{
Component,
DenseVecStorage,
@@ -84,7 +85,8 @@ pub type AttackInbox = Inbox<AttackMessage>;
-#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumString, Display)]
+#[strum(serialize_all="snake_case")]
pub enum Trigger {
// basic triggers
Loot,
@@ -96,20 +98,6 @@ pub enum Trigger {
Change // Remove + Build
}
-impl Trigger {
- pub fn from_str(txt: &str) -> Option<Self> {
- Some(match txt {
- "loot" => Self::Loot,
- "remove" => Self::Remove,
- "build" => Self::Build,
- "spawn" => Self::Spawn,
- "die" => Self::Die,
- "change" => Self::Change,
- _ => {return None}
- })
- }
-}
-
impl Message for Trigger {}
pub type TriggerBox = Inbox<Trigger>;