more colour codes

This commit is contained in:
ntr 2019-02-19 14:24:17 +11:00
parent 23188f53f0
commit eb9fd6e4af

View File

@ -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<Skill, Error> {
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),
};