move combos to structs
This commit is contained in:
parent
2321450139
commit
0013c6437d
@ -99,9 +99,9 @@ impl Var {
|
||||
|
||||
_ => {
|
||||
let combos = get_combos();
|
||||
let combo = combos.iter().find(|c| c.1 == *self)
|
||||
let combo = combos.iter().find(|c| c.var == *self)
|
||||
.unwrap_or_else(|| panic!("unable to find components for {:?}", self));
|
||||
return combo.0.iter().fold(0, |acc, c| acc + c.cost());
|
||||
return combo.units.iter().fold(0, |acc, c| acc + c.cost());
|
||||
},
|
||||
}
|
||||
}
|
||||
@ -167,59 +167,64 @@ impl Var {
|
||||
}
|
||||
}
|
||||
|
||||
fn get_combos() -> Vec<(Vec<Var>, Var)> {
|
||||
struct Combo {
|
||||
var: Var,
|
||||
units: Vec<Var>,
|
||||
}
|
||||
|
||||
fn get_combos() -> Vec<Combo> {
|
||||
let mut combinations = vec![
|
||||
(vec![Var::Attack, Var::Red, Var::Red] , Var::Strike ),
|
||||
(vec![Var::Attack, Var::Green, Var::Green] , Var::Heal ),
|
||||
(vec![Var::Attack, Var::Blue, Var::Blue] , Var::Blast ),
|
||||
(vec![Var::Attack, Var::Red, Var::Green] , Var::Strike ),
|
||||
(vec![Var::Attack, Var::Green, Var::Blue] , Var::Heal ),
|
||||
(vec![Var::Attack, Var::Red, Var::Blue] , Var::Blast ),
|
||||
Combo { units: vec![Var::Attack, Var::Red, Var::Red], var: Var::Strike },
|
||||
Combo { units: vec![Var::Attack, Var::Green, Var::Green], var: Var::Heal },
|
||||
Combo { units: vec![Var::Attack, Var::Blue, Var::Blue], var: Var::Blast },
|
||||
Combo { units: vec![Var::Attack, Var::Red, Var::Green], var: Var::Strike },
|
||||
Combo { units: vec![Var::Attack, Var::Green, Var::Blue], var: Var::Heal },
|
||||
Combo { units: vec![Var::Attack, Var::Red, Var::Blue], var: Var::Blast },
|
||||
|
||||
(vec![Var::Block, Var::Red, Var::Red] , Var::Parry ),
|
||||
(vec![Var::Block, Var::Green, Var::Green] , Var::Reflect ),
|
||||
(vec![Var::Block, Var::Blue, Var::Blue] , Var::Toxic ),
|
||||
(vec![Var::Block, Var::Red, Var::Green] , Var::Taunt ),
|
||||
(vec![Var::Block, Var::Green, Var::Blue] , Var::Shield ),
|
||||
// (vec![Var::Block, Var::Red, Var::Blue] , Var::Blast),
|
||||
Combo { units: vec![Var::Block, Var::Red, Var::Red], var: Var::Parry },
|
||||
Combo { units: vec![Var::Block, Var::Green, Var::Green], var: Var::Reflect },
|
||||
Combo { units: vec![Var::Block, Var::Blue, Var::Blue], var: Var::Toxic },
|
||||
Combo { units: vec![Var::Block, Var::Red, Var::Green], var: Var::Taunt },
|
||||
Combo { units: vec![Var::Block, Var::Green, Var::Blue], var: Var::Shield },
|
||||
// Combo { units: vec![Var::Block, Var::Red, Var::Blue], var: Var::Blast },
|
||||
|
||||
(vec![Var::Buff, Var::Red, Var::Red] , Var::Empower),
|
||||
(vec![Var::Buff, Var::Green, Var::Green] , Var::Triage),
|
||||
(vec![Var::Buff, Var::Blue, Var::Blue] , Var::Amplify),
|
||||
(vec![Var::Buff, Var::Red, Var::Green] , Var::Clutch),
|
||||
// (vec![Var::Buff, Var::Green, Var::Blue] , Var::Heal),
|
||||
(vec![Var::Buff, Var::Red, Var::Blue] , Var::Haste),
|
||||
Combo { units: vec![Var::Buff, Var::Red, Var::Red], var: Var::Empower },
|
||||
Combo { units: vec![Var::Buff, Var::Green, Var::Green], var: Var::Triage },
|
||||
Combo { units: vec![Var::Buff, Var::Blue, Var::Blue], var: Var::Amplify },
|
||||
Combo { units: vec![Var::Buff, Var::Red, Var::Green], var: Var::Clutch },
|
||||
// Combo { units: vec![Var::Buff, Var::Green, Var::Blue], var: Var::Heal },
|
||||
Combo { units: vec![Var::Buff, Var::Red, Var::Blue], var: Var::Haste },
|
||||
|
||||
(vec![Var::Debuff, Var::Red, Var::Red] , Var::Snare),
|
||||
(vec![Var::Debuff, Var::Green, Var::Green] , Var::Purge),
|
||||
(vec![Var::Debuff, Var::Blue, Var::Blue] , Var::Curse),
|
||||
// (vec![Var::Debuff, Var::Red, Var::Green] , Var::Siphon),
|
||||
(vec![Var::Debuff, Var::Green, Var::Blue] , Var::Siphon),
|
||||
(vec![Var::Debuff, Var::Red, Var::Blue] , Var::Slow),
|
||||
Combo { units: vec![Var::Debuff, Var::Red, Var::Red], var: Var::Snare },
|
||||
Combo { units: vec![Var::Debuff, Var::Green, Var::Green], var: Var::Purge },
|
||||
Combo { units: vec![Var::Debuff, Var::Blue, Var::Blue], var: Var::Curse },
|
||||
// Combo { units: vec![Var::Debuff, Var::Red, Var::Green], var: Var::Siphon },
|
||||
Combo { units: vec![Var::Debuff, Var::Green, Var::Blue], var: Var::Siphon },
|
||||
Combo { units: vec![Var::Debuff, Var::Red, Var::Blue], var: Var::Slow },
|
||||
|
||||
(vec![Var::Stun, Var::Red, Var::Red] , Var::Strangle),
|
||||
(vec![Var::Stun, Var::Green, Var::Green] , Var::Throw),
|
||||
(vec![Var::Stun, Var::Blue, Var::Blue] , Var::Ruin),
|
||||
// (vec![Var::Stun, Var::Red, Var::Green] , Var::Strike),
|
||||
(vec![Var::Stun, Var::Green, Var::Blue] , Var::Silence),
|
||||
(vec![Var::Stun, Var::Red, Var::Blue] , Var::Hex),
|
||||
Combo { units: vec![Var::Stun, Var::Red, Var::Red], var: Var::Strangle },
|
||||
Combo { units: vec![Var::Stun, Var::Green, Var::Green], var: Var::Throw },
|
||||
Combo { units: vec![Var::Stun, Var::Blue, Var::Blue], var: Var::Ruin },
|
||||
// Combo { units: vec![Var::Stun, Var::Red, Var::Green], var: Var::Strike },
|
||||
Combo { units: vec![Var::Stun, Var::Green, Var::Blue], var: Var::Silence },
|
||||
Combo { units: vec![Var::Stun, Var::Red, Var::Blue], var: Var::Hex },
|
||||
|
||||
(vec![Var::Damage, Var::Red, Var::Red] , Var::RedDamageI),
|
||||
(vec![Var::Damage, Var::Green, Var::Green] , Var::GreenDamageI),
|
||||
(vec![Var::Damage, Var::Blue, Var::Blue] , Var::BlueDamageI),
|
||||
// (vec![Var::Damage, Var::Red, Var::Green] , Var::Strike),
|
||||
// (vec![Var::Damage, Var::Green, Var::Blue] , Var::Silence),
|
||||
// (vec![Var::Damage, Var::Red, Var::Blue] , Var::Hex),
|
||||
Combo { units: vec![Var::Damage, Var::Red, Var::Red], var: Var::RedDamageI },
|
||||
Combo { units: vec![Var::Damage, Var::Green, Var::Green], var: Var::GreenDamageI },
|
||||
Combo { units: vec![Var::Damage, Var::Blue, Var::Blue], var: Var::BlueDamageI },
|
||||
// Combo { units: vec![Var::Damage, Var::Red, Var::Green], var: Var::Strike },
|
||||
// Combo { units: vec![Var::Damage, Var::Green, Var::Blue], var: Var::Silence },
|
||||
// Combo { units: vec![Var::Damage, Var::Red, Var::Blue], var: Var::Hex },
|
||||
|
||||
(vec![Var::Hp, Var::Red, Var::Red] , Var::RedShieldI),
|
||||
(vec![Var::Hp, Var::Green, Var::Green] , Var::LifeI),
|
||||
(vec![Var::Hp, Var::Blue, Var::Blue] , Var::BlueShieldI),
|
||||
(vec![Var::Hp, Var::Red, Var::Green] , Var::LRSI),
|
||||
(vec![Var::Hp, Var::Green, Var::Blue] , Var::LBSI),
|
||||
(vec![Var::Hp, Var::Red, Var::Blue] , Var::RBSI),
|
||||
Combo { units: vec![Var::Hp, Var::Red, Var::Red], var: Var::RedShieldI },
|
||||
Combo { units: vec![Var::Hp, Var::Green, Var::Green], var: Var::LifeI },
|
||||
Combo { units: vec![Var::Hp, Var::Blue, Var::Blue], var: Var::BlueShieldI },
|
||||
Combo { units: vec![Var::Hp, Var::Red, Var::Green], var: Var::LRSI },
|
||||
Combo { units: vec![Var::Hp, Var::Green, Var::Blue], var: Var::LBSI },
|
||||
Combo { units: vec![Var::Hp, Var::Red, Var::Blue], var: Var::RBSI },
|
||||
];
|
||||
|
||||
combinations.iter_mut().for_each(|set| set.0.sort_unstable());
|
||||
combinations.iter_mut().for_each(|set| set.units.sort_unstable());
|
||||
|
||||
return combinations;
|
||||
}
|
||||
@ -368,9 +373,9 @@ impl Vbox {
|
||||
// combos are sorted when created
|
||||
input.sort_unstable();
|
||||
let combos = get_combos();
|
||||
let combo = combos.iter().find(|c| c.0 == input).ok_or(err_msg("not a combo"))?;
|
||||
let combo = combos.iter().find(|c| c.units == input).ok_or(err_msg("not a combo"))?;
|
||||
|
||||
self.bound.push(combo.1);
|
||||
self.bound.push(combo.var);
|
||||
|
||||
Ok(self)
|
||||
}
|
||||
@ -452,7 +457,7 @@ mod tests {
|
||||
// sort input so they align
|
||||
input.sort_unstable();
|
||||
|
||||
let combo = combos.iter().find(|c| c.0 == input);
|
||||
let combo = combos.iter().find(|c| c.units == input);
|
||||
assert!(combo.is_some());
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user