diff --git a/client/src/scenes/statsheet.js b/client/src/scenes/statsheet.js index efae41fb..a34fbcc1 100644 --- a/client/src/scenes/statsheet.js +++ b/client/src/scenes/statsheet.js @@ -52,6 +52,12 @@ class StatSheet extends Phaser.Scene { create(cryp) { this.registry.events.on('changedata', this.updateData, this); + const ws = this.registry.get('ws'); + + const player = this.registry.get('player'); + if (!player) return false; + const { vbox } = player; + this.cryp = cryp; const del = this.add.existing(new DeleteHitBox(this, X + WIDTH * 0.7, Y + HEIGHT * 0.6)); @@ -116,7 +122,7 @@ class StatSheet extends Phaser.Scene { if (hitBox) { hitBox.itemDeselect(); // add socket function for unlearn here - console.log(`delete: ${item.item}`); + ws.sendVboxUnequip(vbox.instance, cryp.id, item.item); } return true; }); diff --git a/client/src/socket.js b/client/src/socket.js index 1f49f710..b2ec0ad9 100644 --- a/client/src/socket.js +++ b/client/src/socket.js @@ -101,6 +101,10 @@ function createSocket(events) { send({ method: 'player_vbox_apply', params: { instance_id: instanceId, cryp_id: crypId, index } }); } + function sendVboxUnequip(instanceId, crypId, target) { + send({ method: 'player_vbox_unequip', params: { instance_id: instanceId, cryp_id: crypId, target } }); + } + function sendVboxDiscard(instanceId) { send({ method: 'player_vbox_discard', params: { instance_id: instanceId } }); } @@ -311,6 +315,7 @@ function createSocket(events) { sendVboxReclaim, sendVboxCombine, sendVboxDiscard, + sendVboxUnequip, connect, }; } diff --git a/server/src/rpc.rs b/server/src/rpc.rs index ab26da02..cb9f0eb3 100644 --- a/server/src/rpc.rs +++ b/server/src/rpc.rs @@ -660,7 +660,7 @@ struct VboxUnequipMsg { pub struct VboxUnequipParams { pub instance_id: Uuid, pub cryp_id: Uuid, - pub var: Var, + pub target: Var, } #[derive(Debug,Clone,Serialize,Deserialize)] diff --git a/server/src/vbox.rs b/server/src/vbox.rs index 42b6702a..82ced9ed 100644 --- a/server/src/vbox.rs +++ b/server/src/vbox.rs @@ -493,21 +493,23 @@ pub fn vbox_unequip(params: VboxUnequipParams, tx: &mut Transaction, account: &A return Err(err_msg("too many vars bound")); } - match params.var.effect() { + println!("{:?}", params); + + match params.target.effect() { Some(VarEffect::Skill) => { - let skill = params.var.into_skill().ok_or(format_err!("var {:?} has no associated skill", params.var))?; + let skill = params.target.into_skill().ok_or(format_err!("var {:?} has no associated skill", params.target))?; let cryp = player.cryp_get(params.cryp_id)?; cryp.forget(skill)?; }, Some(VarEffect::Spec) => { - let spec = params.var.into_spec().ok_or(format_err!("var {:?} has no associated spec", params.var))?; + let spec = params.target.into_spec().ok_or(format_err!("var {:?} has no associated spec", params.target))?; let cryp = player.cryp_get(params.cryp_id)?; cryp.spec_remove(spec)?; }, None => return Err(err_msg("var has no effect on cryps")), } - player.vbox.bound.push(params.var); + player.vbox.bound.push(params.target); return player_update(tx, player, false); }