vbox arrangement change
This commit is contained in:
+32
-24
@@ -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>>>();
|
||||
|
||||
Reference in New Issue
Block a user