This commit is contained in:
Mashy 2019-07-22 18:31:26 +10:00
parent 71b3ecb2df
commit 36ce1385da

View File

@ -22,7 +22,7 @@ use item::*;
#[derive(Debug,Clone,Serialize,Deserialize)]
pub struct Vbox {
pub bits: u16,
pub free: Vec<Vec<Item>>,
pub free: Vec<Vec<Option<Item>>>,
pub bound: Vec<Item>,
}
@ -69,35 +69,32 @@ impl Vbox {
.map(|item_type| {
let items = match item_type {
ItemType::Colours => vec![
(Item::Red, 1),
(Item::Green, 1),
(Item::Blue, 1),
(Some(Item::Red), 1),
(Some(Item::Green), 1),
(Some(Item::Blue), 1),
],
ItemType::Skills => vec![
(Item::Attack, 1),
(Item::Block, 1),
(Item::Buff, 1),
(Item::Debuff, 1),
(Item::Stun, 1),
(Some(Item::Attack), 1),
(Some(Item::Block), 1),
(Some(Item::Buff), 1),
(Some(Item::Debuff), 1),
(Some(Item::Stun), 1),
],
ItemType::Specs => vec![
(Item::Power, 1),
(Item::Life, 1),
(Item::Speed, 1),
(Some(Item::Power), 1),
(Some(Item::Life), 1),
(Some(Item::Speed), 1),
],
};
let dist = WeightedIndex::new(items.iter().map(|item| item.1)).unwrap();
iter::repeat_with(|| {
items[dist.sample(&mut rng)].0
})
.take(match item_type {
items[dist.sample(&mut rng)].0}).take(match item_type {
ItemType::Colours => 6,
_ => 3,
}).collect::<Vec<Option<Item>>>()
})
.collect::<Vec<Item>>()
})
.collect::<Vec<Vec<Item>>>();
.collect::<Vec<Vec<Option<Item>>>>();
self
}
@ -113,11 +110,19 @@ impl Vbox {
.get(j).ok_or(format_err!("no item at index {:?}", j))?;
// check can purchase
let cost = self.free[i][j].cost();
let cost = match self.free[i][j] {
None => 0,
_ => self.free[i][j].unwrap().cost()
};
self.balance_sub(cost)?;
// actually move
self.bound.push(self.free[i].remove(j));
match self.free[i][j] {
None => (),
_ => self.bound.push(self.free[i][j].unwrap())
}
// self.bound.push(self.free[i][j].unwrap());
self.free[i][j] = None;
// self.bound.sort_unstable();
Ok(self)