diff --git a/secert-hitler/src/controller/gamemaster/gameevent.rs b/secert-hitler/src/controller/gamemaster/gameevent.rs index 54bdc90..e460fa7 100644 --- a/secert-hitler/src/controller/gamemaster/gameevent.rs +++ b/secert-hitler/src/controller/gamemaster/gameevent.rs @@ -26,23 +26,28 @@ pub enum GameEventType { impl GameEventType { fn from_string(s: String) -> GameEventType { - match s.as_ref() { - "Null" => return GameEventType::Null, - "GameStart" => return GameEventType::GameStart, - "RoleSet" => return GameEventType::RoleSet, - "ElectionPend" => return GameEventType::ElectionPend, - "ElectionSet" => return GameEventType::ElectionSet, - "VoteSet" => return GameEventType::VoteSet, - "CardPend" => return GameEventType::CardPend, - "CardPick" => return GameEventType::CardPick, - "PolicySet" => return GameEventType::PolicySet, - "SpecialInspect" => return GameEventType::SpecialInspect, - "SpecialSelect" => return GameEventType::SpecialSelect, - "SpecialKill" => return GameEventType::SpecialKill, - "SpecialPeek" => return GameEventType::SpecialPeek, - "GameStop" => return GameEventType::GameStop, - _ => return GameEventType::Null, + let cases = vec![ + GameEventType::Null, + GameEventType::GameStart, + GameEventType::RoleSet, + GameEventType::ElectionPend, + GameEventType::ElectionSet, + GameEventType::VoteSet, + GameEventType::CardPend, + GameEventType::CardPick, + GameEventType::PolicySet, + GameEventType::SpecialInspect, + GameEventType::SpecialSelect, + GameEventType::SpecialKill, + GameEventType::SpecialPeek, + GameEventType::GameStop, + ]; + for c in &cases { + if format!("{:?}", c) == s { + return *c; + } } + GameEventType::Null } fn build(&self) -> GameEvent {