drop -> reclaim

This commit is contained in:
ntr 2019-03-15 15:43:32 +11:00
parent 629c5f373e
commit 037da44852
4 changed files with 26 additions and 26 deletions

View File

@ -158,12 +158,12 @@ class ItemList extends Phaser.Scene {
this.add.text(X + ITEM_WIDTH * 0.5, Y + ITEM_HEIGHT * 23, `Wins: ${player.score.wins}`, TEXT.HEADER); this.add.text(X + ITEM_WIDTH * 0.5, Y + ITEM_HEIGHT * 23, `Wins: ${player.score.wins}`, TEXT.HEADER);
this.add.text(X + ITEM_WIDTH * 0.5, Y + ITEM_HEIGHT * 24, `Losses: ${player.score.losses}`, TEXT.HEADER); this.add.text(X + ITEM_WIDTH * 0.5, Y + ITEM_HEIGHT * 24, `Losses: ${player.score.losses}`, TEXT.HEADER);
const reroll = this.add const discard = this.add
.rectangle(X + ITEM_WIDTH * 0.4, Y + ITEM_HEIGHT * 1.5, ITEM_WIDTH * 3.4, ITEM_HEIGHT * 1.25, 0x444444) .rectangle(X + ITEM_WIDTH * 0.4, Y + ITEM_HEIGHT * 1.5, ITEM_WIDTH * 3.4, ITEM_HEIGHT * 1.25, 0x444444)
.setInteractive() .setInteractive()
.setOrigin(0) .setOrigin(0)
.on('pointerdown', () => this.registry.get('ws').sendVboxDiscard(vbox.instance)); .on('pointerdown', () => this.registry.get('ws').sendVboxDiscard(vbox.instance));
this.add.text(reroll.getCenter().x, reroll.getCenter().y, 'Reroll - $0 cost', TEXT.HEADER) this.add.text(discard.getCenter().x, discard.getCenter().y, 'discard - 5b', TEXT.HEADER)
.setOrigin(0.5, 0.5); .setOrigin(0.5, 0.5);
const combine = this.add const combine = this.add
@ -175,7 +175,7 @@ class ItemList extends Phaser.Scene {
this.combinerItems = [-1, -1, -1]; this.combinerItems = [-1, -1, -1];
this.children.list.filter(obj => obj instanceof CombinerHitBox).forEach(cBox => cBox.deallocate()); this.children.list.filter(obj => obj instanceof CombinerHitBox).forEach(cBox => cBox.deallocate());
}); });
this.add.text(combine.getCenter().x, combine.getCenter().y, 'Combine', TEXT.HEADER) this.add.text(combine.getCenter().x, combine.getCenter().y, 'combine', TEXT.HEADER)
.setOrigin(0.5, 0.5); .setOrigin(0.5, 0.5);
for (let i = 0; i < 3; i += 1) { for (let i = 0; i < 3; i += 1) {
@ -184,7 +184,7 @@ class ItemList extends Phaser.Scene {
this.add.existing(new CombinerHitBox(this, ITEM_X, ITEM_Y, i)); this.add.existing(new CombinerHitBox(this, ITEM_X, ITEM_Y, i));
} }
const del = this.add.existing(new DeleteHitBox(this, X + ITEM_WIDTH * 0.4, Y + ITEM_HEIGHT * 15.5)); const del = this.add.existing(new DeleteHitBox(this, X + ITEM_WIDTH * 0.4, Y + ITEM_HEIGHT * 15.5));
this.add.text(del.getCenter().x, del.getCenter().y, 'Sell', TEXT.HEADER) this.add.text(del.getCenter().x, del.getCenter().y, 'drop', TEXT.HEADER)
.setOrigin(0.5, 0.5); .setOrigin(0.5, 0.5);
// Generate Items // Generate Items
@ -275,7 +275,7 @@ class ItemList extends Phaser.Scene {
if (hitBox.item === item) deallocate(item); if (hitBox.item === item) deallocate(item);
else allocate(item, hitBox); else allocate(item, hitBox);
} else if (hitBox instanceof DeleteHitBox) { } else if (hitBox instanceof DeleteHitBox) {
ws.sendVboxDrop(vbox.instance, item.index); ws.sendVboxReclaim(vbox.instance, item.index);
} else { } else {
ws.sendVboxApply(vbox.instance, hitBox.cryp.id, item.index); ws.sendVboxApply(vbox.instance, hitBox.cryp.id, item.index);
deallocate(item); deallocate(item);

View File

@ -109,8 +109,8 @@ function createSocket(events) {
send({ method: 'player_vbox_combine', params: { instance_id: instanceId, indices } }); send({ method: 'player_vbox_combine', params: { instance_id: instanceId, indices } });
} }
function sendVboxDrop(instanceId, index) { function sendVboxReclaim(instanceId, index) {
send({ method: 'player_vbox_drop', params: { instance_id: instanceId, index } }); send({ method: 'player_vbox_reclaim', params: { instance_id: instanceId, index } });
} }
function sendGameSkill(gameId, crypId, targetCrypId, skill) { function sendGameSkill(gameId, crypId, targetCrypId, skill) {
@ -308,7 +308,7 @@ function createSocket(events) {
sendPlayerState, sendPlayerState,
sendVboxAccept, sendVboxAccept,
sendVboxApply, sendVboxApply,
sendVboxDrop, sendVboxReclaim,
sendVboxCombine, sendVboxCombine,
sendVboxDiscard, sendVboxDiscard,
connect, connect,

View File

@ -23,7 +23,7 @@ use skill::{Skill};
use spec::{Spec}; use spec::{Spec};
use player::{player_state, player_cryps_set, Player}; use player::{player_state, player_cryps_set, Player};
use instance::{instance_join, instance_ready}; use instance::{instance_join, instance_ready};
use vbox::{vbox_accept, vbox_apply, vbox_discard, vbox_combine, vbox_drop}; use vbox::{vbox_accept, vbox_apply, vbox_discard, vbox_combine, vbox_reclaim};
pub struct Rpc; pub struct Rpc;
@ -84,7 +84,7 @@ impl Rpc {
"player_cryps_set" => Rpc::player_cryps_set(data, &mut tx, account.unwrap(), client), "player_cryps_set" => Rpc::player_cryps_set(data, &mut tx, account.unwrap(), client),
"player_vbox_accept" => Rpc::player_vbox_accept(data, &mut tx, account.unwrap(), client), "player_vbox_accept" => Rpc::player_vbox_accept(data, &mut tx, account.unwrap(), client),
"player_vbox_apply" => Rpc::player_vbox_apply(data, &mut tx, account.unwrap(), client), "player_vbox_apply" => Rpc::player_vbox_apply(data, &mut tx, account.unwrap(), client),
"player_vbox_drop" => Rpc::player_vbox_drop(data, &mut tx, account.unwrap(), client), "player_vbox_reclaim" => Rpc::player_vbox_reclaim(data, &mut tx, account.unwrap(), client),
"player_vbox_combine" => Rpc::player_vbox_combine(data, &mut tx, account.unwrap(), client), "player_vbox_combine" => Rpc::player_vbox_combine(data, &mut tx, account.unwrap(), client),
"player_vbox_discard" => Rpc::player_vbox_discard(data, &mut tx, account.unwrap(), client), "player_vbox_discard" => Rpc::player_vbox_discard(data, &mut tx, account.unwrap(), client),
@ -354,12 +354,12 @@ impl Rpc {
return Ok(response); return Ok(response);
} }
fn player_vbox_drop(data: Vec<u8>, tx: &mut Transaction, account: Account, _client: &mut WebSocket<TcpStream>) -> Result<RpcResponse, Error> { fn player_vbox_reclaim(data: Vec<u8>, tx: &mut Transaction, account: Account, _client: &mut WebSocket<TcpStream>) -> Result<RpcResponse, Error> {
let msg = from_slice::<VboxDropMsg>(&data).or(Err(err_msg("invalid params")))?; let msg = from_slice::<VboxReclaimMsg>(&data).or(Err(err_msg("invalid params")))?;
let response = RpcResponse { let response = RpcResponse {
method: "player_state".to_string(), method: "player_state".to_string(),
params: RpcResult::PlayerState(vbox_drop(msg.params, tx, &account)?) params: RpcResult::PlayerState(vbox_reclaim(msg.params, tx, &account)?)
}; };
return Ok(response); return Ok(response);
@ -633,13 +633,13 @@ pub struct VboxApplyParams {
} }
#[derive(Debug,Clone,Serialize,Deserialize)] #[derive(Debug,Clone,Serialize,Deserialize)]
struct VboxDropMsg { struct VboxReclaimMsg {
method: String, method: String,
params: VboxDropParams, params: VboxReclaimParams,
} }
#[derive(Debug,Clone,Serialize,Deserialize)] #[derive(Debug,Clone,Serialize,Deserialize)]
pub struct VboxDropParams { pub struct VboxReclaimParams {
pub instance_id: Uuid, pub instance_id: Uuid,
pub index: usize, pub index: usize,
} }

View File

@ -1,7 +1,7 @@
use std::iter; use std::iter;
use uuid::Uuid; use uuid::Uuid;
// drops // reclaims
use rand::prelude::*; use rand::prelude::*;
use rand::{thread_rng}; use rand::{thread_rng};
use rand::distributions::{WeightedIndex}; use rand::distributions::{WeightedIndex};
@ -12,7 +12,7 @@ use failure::Error;
use failure::err_msg; use failure::err_msg;
use account::Account; use account::Account;
use rpc::{VboxAcceptParams, VboxDiscardParams, VboxCombineParams, VboxApplyParams, VboxDropParams}; use rpc::{VboxAcceptParams, VboxDiscardParams, VboxCombineParams, VboxApplyParams, VboxReclaimParams};
use skill::{Skill}; use skill::{Skill};
use spec::{Spec}; use spec::{Spec};
use player::{Player, player_get, player_update}; use player::{Player, player_get, player_update};
@ -340,11 +340,11 @@ impl Vbox {
Ok(self) Ok(self)
} }
pub fn drop(&mut self, i: usize) -> Result<&mut Vbox, Error> { pub fn reclaim(&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))?;
let dropped = self.bound.remove(i); let reclaimed = self.bound.remove(i);
let refund = dropped.cost(); let refund = reclaimed.cost();
println!("refunding {:?} for {:?}", refund, dropped); println!("reclaiming {:?} for {:?}", refund, reclaimed);
self.balance_add(refund); self.balance_add(refund);
Ok(self) Ok(self)
} }
@ -402,9 +402,9 @@ pub fn vbox_combine(params: VboxCombineParams, tx: &mut Transaction, account: &A
return player_update(tx, player, false); return player_update(tx, player, false);
} }
pub fn vbox_drop(params: VboxDropParams, tx: &mut Transaction, account: &Account) -> Result<Player, Error> { pub fn vbox_reclaim(params: VboxReclaimParams, tx: &mut Transaction, account: &Account) -> Result<Player, Error> {
let mut player = player_get(tx, account.id, params.instance_id)?; let mut player = player_get(tx, account.id, params.instance_id)?;
player.vbox.drop(params.index)?; player.vbox.reclaim(params.index)?;
return player_update(tx, player, false); return player_update(tx, player, false);
} }
@ -462,10 +462,10 @@ mod tests {
} }
#[test] #[test]
fn drop_test() { fn reclaim_test() {
let mut vbox = Vbox::new(Uuid::new_v4(), Uuid::new_v4()); let mut vbox = Vbox::new(Uuid::new_v4(), Uuid::new_v4());
vbox.bound = vec![Var::Strike]; vbox.bound = vec![Var::Strike];
vbox.drop(0).unwrap(); vbox.reclaim(0).unwrap();
assert_eq!(vbox.bits, 22); assert_eq!(vbox.bits, 22);
} }