From eb9fd6e4afddae28b1634738a31fbd5463aa09ba Mon Sep 17 00:00:00 2001 From: ntr Date: Tue, 19 Feb 2019 14:24:17 +1100 Subject: [PATCH] more colour codes --- server/src/vbox.rs | 136 +++++++++++++++++++++++++++------------------ 1 file changed, 81 insertions(+), 55 deletions(-) diff --git a/server/src/vbox.rs b/server/src/vbox.rs index 5e99357c..2119af6e 100644 --- a/server/src/vbox.rs +++ b/server/src/vbox.rs @@ -30,11 +30,26 @@ pub enum Var { Buff, Debuff, - Strike, + Amplify, + Banish, Blast, + Curse, + Empower, + Haste, Heal, - Throw, Hex, + Parry, + Purge, + Purify, + Reflect, + Ruin, + Snare, + Strangle, + Strike, + Taunt, + Throw, + Toxic, + Triage, } impl Var { @@ -51,22 +66,41 @@ impl Var { fn skill(&self) -> Result { match self { - Var::Attack => Ok(Skill::Attack), - Var::Block => Ok(Skill::Attack), - Var::Stun => Ok(Skill::Attack), - Var::Buff => Ok(Skill::Attack), - Var::Debuff => Ok(Skill::Attack), - - Var::Strike => Ok(Skill::Attack), + Var::Amplify => Ok(Skill::Amplify), + Var::Banish => Ok(Skill::Banish), Var::Blast => Ok(Skill::Blast), + Var::Curse => Ok(Skill::Curse), + Var::Empower => Ok(Skill::Empower), + Var::Haste => Ok(Skill::Haste), Var::Heal => Ok(Skill::Heal), - Var::Throw => Ok(Skill::Throw), Var::Hex => Ok(Skill::Hex), + Var::Parry => Ok(Skill::Parry), + Var::Purge => Ok(Skill::Purge), + Var::Purify => Ok(Skill::Purify), + // Var::Reflect => Ok(Skill::Reflect), + Var::Ruin => Ok(Skill::Ruin), + Var::Snare => Ok(Skill::Snare), + Var::Strangle => Ok(Skill::Strangle), + // Var::Strike => Ok(Skill::Strike), + // Var::Taunt => Ok(Skill::Taunt), + Var::Throw => Ok(Skill::Throw), + // Var::Toxic => Ok(Skill::Toxic), + Var::Triage => Ok(Skill::Triage), _ => Err(err_msg("not a usable var")) } } } +#[derive(Debug,Clone,Copy,PartialEq,Eq,Ord,PartialOrd,Serialize,Deserialize)] +enum ColourCode { + RR, + GG, + BB, + RG, + BR, + GB, +} + #[derive(Debug,Clone,Serialize,Deserialize)] pub struct Vbox { pub id: Uuid, @@ -115,14 +149,11 @@ impl Vbox { } pub fn accept(&mut self, i: usize) -> Result<&mut Vbox, Error> { - if self.bound.len() > 8 { + if self.bound.len() >= 9 { return Err(err_msg("too many vars bound")); } - println!("{:?}", self.free); - self.free.get(i).ok_or(format_err!("no var at index {:?}", i))?; - self.bound.push(self.free.remove(i)); Ok(self) @@ -176,60 +207,55 @@ impl Vbox { }); let colour_code = match colours { - [2,0,0] => "rr", - [0,2,0] => "gg", - [0,0,2] => "bb", - [1,1,0] => "rg", - [0,1,1] => "gb", - [1,0,1] => "rb", + [2,0,0] => ColourCode::RR, + [0,2,0] => ColourCode::GG, + [0,0,2] => ColourCode::BB, + [1,1,0] => ColourCode::RG, + [0,1,1] => ColourCode::GB, + [1,0,1] => ColourCode::BR, _ => return Err(err_msg("not a combo")), }; let new = match base { Var::Attack => match colour_code { - "rr" => Var::Strike, - "gg" => Var::Heal, - "bb" => Var::Blast, - "rg" => Var::Attack, - "gb" => Var::Attack, - "rb" => Var::Attack, - _ => panic!("missing colour code {:?}", colour_code), + ColourCode::RR => Var::Strike, + ColourCode::GG => Var::Heal, + ColourCode::BB => Var::Blast, + ColourCode::RG => return Err(err_msg("unhandled skill combo")), + ColourCode::GB => return Err(err_msg("unhandled skill combo")), + ColourCode::BR => return Err(err_msg("unhandled skill combo")), }, Var::Block => match colour_code { - "rr" => Var::Strike, - "gg" => Var::Heal, - "bb" => Var::Blast, - "rg" => Var::Attack, - "gb" => Var::Attack, - "rb" => Var::Attack, - _ => panic!("missing colour code {:?}", colour_code), + ColourCode::RR => Var::Parry, + ColourCode::GG => Var::Reflect, + ColourCode::BB => Var::Toxic, + ColourCode::RG => Var::Taunt, + ColourCode::GB => return Err(err_msg("unhandled skill combo")), + ColourCode::BR => return Err(err_msg("unhandled skill combo")), }, Var::Buff => match colour_code { - "rr" => Var::Strike, - "gg" => Var::Heal, - "bb" => Var::Blast, - "rg" => Var::Attack, - "gb" => Var::Attack, - "rb" => Var::Attack, - _ => panic!("missing colour code {:?}", colour_code), + ColourCode::RR => Var::Empower, + ColourCode::GG => Var::Triage, + ColourCode::BB => Var::Amplify, + ColourCode::RG => return Err(err_msg("unhandled skill combo")), + ColourCode::GB => Var::Purify, + ColourCode::BR => Var::Haste, }, Var::Debuff => match colour_code { - "rr" => Var::Strike, - "gg" => Var::Heal, - "bb" => Var::Blast, - "rg" => Var::Attack, - "gb" => Var::Attack, - "rb" => Var::Attack, - _ => panic!("missing colour code {:?}", colour_code), + ColourCode::RR => Var::Snare, + ColourCode::GG => Var::Purge, + ColourCode::BB => Var::Curse, + ColourCode::RG => return Err(err_msg("unhandled skill combo")), + ColourCode::GB => return Err(err_msg("unhandled skill combo")), + ColourCode::BR => return Err(err_msg("unhandled skill combo")), }, Var::Stun => match colour_code { - "rr" => Var::Strike, - "gg" => Var::Heal, - "bb" => Var::Blast, - "rg" => Var::Attack, - "gb" => Var::Attack, - "rb" => Var::Attack, - _ => panic!("missing colour code {:?}", colour_code), + ColourCode::RR => Var::Strangle, + ColourCode::GG => Var::Throw, + ColourCode::BB => Var::Ruin, + ColourCode::RG => return Err(err_msg("unhandled skill combo")), + ColourCode::GB => return Err(err_msg("unhandled skill combo")), + ColourCode::BR => Var::Banish, }, _ => panic!("wrong base {:?}", base), };