use balance to purchase
This commit is contained in:
parent
2c89db4f01
commit
c2fe8f779e
@ -152,9 +152,9 @@ class ItemList extends Phaser.Scene {
|
|||||||
drawInventory(graphics);
|
drawInventory(graphics);
|
||||||
drawVbox(graphics);
|
drawVbox(graphics);
|
||||||
|
|
||||||
this.add.text(X + WIDTH * 0.1, Y, 'Inventory', TEXT.HEADER);
|
this.add.text(X + WIDTH * 0.1, Y, 'inventory', TEXT.HEADER);
|
||||||
this.add.text(X + WIDTH * 0.47, Y, 'Combiner', TEXT.HEADER);
|
this.add.text(X + WIDTH * 0.47, Y, 'iCombinator', TEXT.HEADER);
|
||||||
this.add.text(X + WIDTH * 0.35, Y + HEIGHT / 2, 'Varibox', TEXT.HEADER);
|
this.add.text(X + WIDTH * 0.35, Y + HEIGHT / 2, `vBox - ${vbox.bits}b`, TEXT.HEADER);
|
||||||
|
|
||||||
const reroll = this.add
|
const reroll = this.add
|
||||||
.rectangle(WIDTH * 0.01, Y + HEIGHT * 0.775, ITEM_WIDTH * 1.25, ITEM_HEIGHT * 1.25, 0x222222)
|
.rectangle(WIDTH * 0.01, Y + HEIGHT * 0.775, ITEM_WIDTH * 1.25, ITEM_HEIGHT * 1.25, 0x222222)
|
||||||
|
|||||||
@ -96,6 +96,26 @@ impl Var {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn cost(&self) -> Result<u16, Error> {
|
||||||
|
match self {
|
||||||
|
Var::Red => Ok(1),
|
||||||
|
Var::Green => Ok(1),
|
||||||
|
Var::Blue => Ok(1),
|
||||||
|
|
||||||
|
Var::Attack => Ok(2),
|
||||||
|
Var::Block => Ok(2),
|
||||||
|
Var::Buff => Ok(2),
|
||||||
|
Var::Debuff => Ok(2),
|
||||||
|
Var::Stun => Ok(2),
|
||||||
|
|
||||||
|
Var::Damage => Ok(3),
|
||||||
|
Var::Hp => Ok(3),
|
||||||
|
Var::Speed => Ok(3),
|
||||||
|
|
||||||
|
_ => Err(err_msg("var not purchasable")),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn effect(&self) -> Option<VarEffect> {
|
fn effect(&self) -> Option<VarEffect> {
|
||||||
if let Some(_skill) = self.skill() {
|
if let Some(_skill) = self.skill() {
|
||||||
return Some(VarEffect::Skill);
|
return Some(VarEffect::Skill);
|
||||||
@ -170,7 +190,7 @@ enum ColourCode {
|
|||||||
#[derive(Debug,Clone,Serialize,Deserialize)]
|
#[derive(Debug,Clone,Serialize,Deserialize)]
|
||||||
pub struct Vbox {
|
pub struct Vbox {
|
||||||
pub id: Uuid,
|
pub id: Uuid,
|
||||||
pub balance: u16,
|
pub bits: u16,
|
||||||
pub free: Vec<Vec<Var>>,
|
pub free: Vec<Vec<Var>>,
|
||||||
pub bound: Vec<Var>,
|
pub bound: Vec<Var>,
|
||||||
pub instance: Uuid,
|
pub instance: Uuid,
|
||||||
@ -197,7 +217,7 @@ impl Vbox {
|
|||||||
instance: instance_id,
|
instance: instance_id,
|
||||||
free: vec![],
|
free: vec![],
|
||||||
bound: starting_items,
|
bound: starting_items,
|
||||||
balance: 9,
|
bits: 9,
|
||||||
};
|
};
|
||||||
|
|
||||||
vbox.fill();
|
vbox.fill();
|
||||||
@ -205,6 +225,21 @@ impl Vbox {
|
|||||||
return vbox;
|
return vbox;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn balance_sub(&mut self, amount: u16) -> Result<&mut Vbox, Error> {
|
||||||
|
let new_balance = self.bits
|
||||||
|
.checked_sub(amount)
|
||||||
|
.ok_or(format_err!("insufficient balance: {:?}", self.bits))?;
|
||||||
|
|
||||||
|
self.bits = new_balance;
|
||||||
|
|
||||||
|
Ok(self)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn balance_add(&mut self, amount: u16) -> &mut Vbox {
|
||||||
|
self.bits = self.bits.saturating_add(amount);
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
pub fn fill(&mut self) -> &mut Vbox {
|
pub fn fill(&mut self) -> &mut Vbox {
|
||||||
let colours = vec![
|
let colours = vec![
|
||||||
(Var::Red, 1),
|
(Var::Red, 1),
|
||||||
@ -248,10 +283,16 @@ impl Vbox {
|
|||||||
return Err(err_msg("too many vars bound"));
|
return Err(err_msg("too many vars bound"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check item exists
|
||||||
self.free
|
self.free
|
||||||
.get(i).ok_or(format_err!("no var group at index {:?}", i))?
|
.get(i).ok_or(format_err!("no var group at index {:?}", i))?
|
||||||
.get(j).ok_or(format_err!("no var at index {:?}", j))?;
|
.get(j).ok_or(format_err!("no var at index {:?}", j))?;
|
||||||
|
|
||||||
|
// check can purchase
|
||||||
|
let cost = self.free[i][j].cost()?;
|
||||||
|
self.balance_sub(cost)?;
|
||||||
|
|
||||||
|
// actually move
|
||||||
self.bound.push(self.free[i].remove(j));
|
self.bound.push(self.free[i].remove(j));
|
||||||
|
|
||||||
Ok(self)
|
Ok(self)
|
||||||
@ -259,8 +300,10 @@ impl Vbox {
|
|||||||
|
|
||||||
pub fn drop(&mut self, i: usize) -> Result<&mut Vbox, Error> {
|
pub fn drop(&mut self, i: usize) -> Result<&mut Vbox, Error> {
|
||||||
self.bound.get(i).ok_or(format_err!("no var at index {:?}", i))?;
|
self.bound.get(i).ok_or(format_err!("no var at index {:?}", i))?;
|
||||||
self.bound.remove(i);
|
let dropped = self.bound.remove(i);
|
||||||
// balance update
|
|
||||||
|
// calculate total cost
|
||||||
|
// self.balance_add(dropped.cost()?);
|
||||||
Ok(self)
|
Ok(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user