vbox arrangement change

This commit is contained in:
Mashy
2019-07-15 18:33:15 +10:00
parent 4c5eca0e30
commit 1298257b0e
2 changed files with 50 additions and 32 deletions
+32 -24
View File
@@ -26,6 +26,12 @@ pub struct Vbox {
pub bound: Vec<Item>,
}
pub enum ItemType {
Colours,
Skills,
Specs,
}
impl Vbox {
pub fn new() -> Vbox {
let starting_items = vec![
@@ -57,36 +63,38 @@ impl Vbox {
}
pub fn fill(&mut self) -> &mut Vbox {
let colours = vec![
(Item::Red, 1),
(Item::Green, 1),
(Item::Blue, 1),
];
let skills = vec![
(Item::Attack, 1),
(Item::Block, 1),
(Item::Buff, 1),
(Item::Debuff, 1),
(Item::Stun, 1),
];
let specs = vec![
(Item::Power, 1),
(Item::Life, 1),
(Item::Speed, 1),
];
let mut rng = thread_rng();
self.free = [&colours, &skills, &specs].iter()
.map(|items| {
let dist = WeightedIndex::new(items.iter().map(|item| item.1)).unwrap();
self.free = [ItemType::Colours, ItemType::Skills, ItemType::Specs].iter()
.map(|item_type| {
let items = match item_type {
ItemType::Colours => vec![
(Item::Red, 2),
(Item::Green, 1),
(Item::Blue, 2),
],
ItemType::Skills => vec![
(Item::Attack, 1),
(Item::Block, 1),
(Item::Buff, 1),
(Item::Debuff, 1),
(Item::Stun, 1),
],
ItemType::Specs => vec![
(Item::Power, 1),
(Item::Life, 1),
(Item::Speed, 1),
],
};
let dist = WeightedIndex::new(items.iter().map(|item| item.1)).unwrap();
iter::repeat_with(|| {
items[dist.sample(&mut rng)].0
})
.take(6)
.take(match item_type {
ItemType::Colours => 6,
_ => 3,
})
.collect::<Vec<Item>>()
})
.collect::<Vec<Vec<Item>>>();