diff --git a/client/src/components/game.component.jsx b/client/src/components/game.component.jsx
index d9aaa8f4..008f141a 100644
--- a/client/src/components/game.component.jsx
+++ b/client/src/components/game.component.jsx
@@ -18,7 +18,7 @@ function GamePanel(props) {
setActiveSkill,
setActiveCryp,
selectSkillTarget,
- sendPlayerState,
+ sendInstanceState,
activeCryp,
account,
showLog,
@@ -50,7 +50,7 @@ function GamePanel(props) {
function backClick() {
quit();
- return sendPlayerState(game.instance);
+ return sendInstanceState(game.instance);
}
const header = (
diff --git a/client/src/components/game.container.jsx b/client/src/components/game.container.jsx
index 644e9554..e2be7224 100644
--- a/client/src/components/game.container.jsx
+++ b/client/src/components/game.container.jsx
@@ -23,9 +23,9 @@ const addState = connect(
return false;
}
- function sendPlayerState(instanceId) {
+ function sendInstanceState(instanceId) {
if (!instanceId) return false;
- return ws.sendPlayerState(instanceId);
+ return ws.sendInstanceState(instanceId);
}
// intercept self casting skills
@@ -41,7 +41,7 @@ const addState = connect(
activeSkill,
activeCryp,
selectSkillTarget,
- sendPlayerState,
+ sendInstanceState,
};
},
diff --git a/client/src/components/menu.component.jsx b/client/src/components/menu.component.jsx
index c469d042..03dd167f 100644
--- a/client/src/components/menu.component.jsx
+++ b/client/src/components/menu.component.jsx
@@ -20,7 +20,7 @@ function Menu(args) {
cryps,
selectedCryps,
setSelectedCryps,
- sendPlayerState,
+ sendInstanceState,
sendPlayerMmCrypsSet,
sendInstanceJoin,
sendCrypSpawn,
@@ -40,7 +40,7 @@ function Menu(args) {
);
diff --git a/client/src/components/menu.container.jsx b/client/src/components/menu.container.jsx
index 44f56952..dfd5b567 100644
--- a/client/src/components/menu.container.jsx
+++ b/client/src/components/menu.container.jsx
@@ -25,15 +25,15 @@ const addState = connect(
return ws.sendCrypSpawn(name);
}
- function sendPlayerState(instance) {
- return ws.sendPlayerState(instance.instance);
+ function sendInstanceState(instance) {
+ return ws.sendInstanceState(instance.instance);
}
return {
cryps,
selectedCryps,
sendInstanceJoin,
- sendPlayerState,
+ sendInstanceState,
sendCrypSpawn,
sendPlayerMmCrypsSet,
instances,
diff --git a/client/src/socket.jsx b/client/src/socket.jsx
index 6290c5ba..a09e48c9 100644
--- a/client/src/socket.jsx
+++ b/client/src/socket.jsx
@@ -86,8 +86,8 @@ function createSocket(events) {
send({ method: 'player_mm_cryps_set', params: { cryp_ids: crypIds } });
}
- function sendPlayerState(instanceId) {
- send({ method: 'player_state', params: { instance_id: instanceId } });
+ function sendInstanceState(instanceId) {
+ send({ method: 'instanceState', params: { instance_id: instanceId } });
}
function sendVboxAccept(instanceId, group, index) {
@@ -205,7 +205,7 @@ function createSocket(events) {
events.setZone(zone);
}
- function playerState(response) {
+ function instanceState(response) {
const [structName, player] = response;
events.setPlayer(player);
}
@@ -234,7 +234,7 @@ function createSocket(events) {
zone_create: res => console.log(res),
zone_state: zoneState,
zone_close: res => console.log(res),
- player_state: playerState,
+ instanceState: instanceState,
};
function logout() {
@@ -337,7 +337,7 @@ function createSocket(events) {
sendInstanceLobby,
sendInstanceScores,
sendPlayerMmCrypsSet,
- sendPlayerState,
+ sendInstanceState,
sendVboxAccept,
sendVboxApply,
sendVboxReclaim,
diff --git a/server/src/instance.rs b/server/src/instance.rs
index f329f1e4..7351965d 100644
--- a/server/src/instance.rs
+++ b/server/src/instance.rs
@@ -9,12 +9,13 @@ use failure::err_msg;
use std::iter;
-use rpc::{InstanceLobbyParams, InstanceJoinParams, InstanceReadyParams};
+use rpc::{InstanceLobbyParams, InstanceJoinParams, InstanceReadyParams, InstanceStateParams};
use account::Account;
use player::{Player, Score, player_create, player_get, player_update};
use cryp::{Cryp, cryp_get};
use mob::{instance_mobs};
use game::{Game, Team, game_get, game_write, game_instance_new, game_instance_join, game_global_get, game_global_set};
+use vbox::{Var};
#[derive(Debug,Clone,Copy,PartialEq,Serialize,Deserialize)]
enum InstancePhase {
@@ -57,6 +58,19 @@ impl Instance {
}
}
+ pub fn global(player: Player) -> Instance {
+ Instance {
+ id: Uuid::nil(),
+ players: vec![player],
+ rounds: vec![],
+ phase: InstancePhase::Vbox,
+ open: false,
+ max_players: 0,
+ name: "Global Matchmaking".to_string(),
+ password: None,
+ }
+ }
+
fn set_max_players(mut self, max: usize) -> Result {
if max > 16 || max % 2 != 0 {
return Err(err_msg("max players must be divisible by 2 and less than 16"));
@@ -189,7 +203,10 @@ impl Instance {
fn vbox_phase_start(&mut self) -> &mut Instance {
self.phase = InstancePhase::Vbox;
- self.players.iter_mut().for_each(|p| p.ready = false);
+ self.players.iter_mut().for_each(|p| {
+ p.ready = false;
+ p.vbox.fill();
+ });
self.generate_rounds();
self.bot_vbox_phase();
@@ -352,6 +369,50 @@ impl Instance {
scores
}
+
+ // PLAYER ACTIONS
+ fn account_player(&mut self, account: Uuid) -> Result<&mut Player, Error> {
+ self.players
+ .iter_mut()
+ .find(|p| p.account == account)
+ .ok_or(err_msg("account not in instance"))
+ }
+
+ pub fn vbox_discard(mut self, account: Uuid) -> Result {
+ self.account_player(account)?
+ .vbox_discard()?;
+ Ok(self)
+ }
+
+ pub fn vbox_accept(mut self, account: Uuid, group: usize, index: usize) -> Result {
+ self.account_player(account)?
+ .vbox_accept(group, index)?;
+ Ok(self)
+ }
+
+ pub fn vbox_combine(mut self, account: Uuid, indices: Vec) -> Result {
+ self.account_player(account)?
+ .vbox_combine(indices)?;
+ Ok(self)
+ }
+
+ pub fn vbox_reclaim(mut self, account: Uuid, index: usize) -> Result {
+ self.account_player(account)?
+ .vbox_reclaim(index)?;
+ Ok(self)
+ }
+
+ pub fn vbox_apply(mut self, account: Uuid, index: usize, cryp_id: Uuid) -> Result {
+ self.account_player(account)?
+ .vbox_apply(index, cryp_id)?;
+ Ok(self)
+ }
+
+ pub fn vbox_unequip(mut self, account: Uuid, target: Var, cryp_id: Uuid) -> Result {
+ self.account_player(account)?
+ .vbox_unequip(target, cryp_id)?;
+ Ok(self)
+ }
}
pub fn instance_create(tx: &mut Transaction, instance: Instance) -> Result {
@@ -433,7 +494,7 @@ pub fn instance_get_open(tx: &mut Transaction) -> Result {
return Ok(instance);
}
-pub fn instance_lobby(params: InstanceLobbyParams, tx: &mut Transaction, account: &Account) -> Result {
+pub fn instance_lobby(params: InstanceLobbyParams, tx: &mut Transaction, account: &Account) -> Result {
let mut instance = Instance::new()
.set_max_players(params.players)?
.set_name(params.name)?;
@@ -445,7 +506,7 @@ pub fn instance_lobby(params: InstanceLobbyParams, tx: &mut Transaction, account
}
-pub fn instance_join(params: InstanceJoinParams, tx: &mut Transaction, account: &Account) -> Result {
+pub fn instance_join(params: InstanceJoinParams, tx: &mut Transaction, account: &Account) -> Result {
let mut instance = instance_get(tx, params.instance_id)?;
let cryps = params.cryp_ids
@@ -458,12 +519,9 @@ pub fn instance_join(params: InstanceJoinParams, tx: &mut Transaction, account:
}
let player = Player::new(account.id, instance.id, &account.name, cryps);
- let player = player_create(tx, player, account)?;
+ instance.add_player(player);
- instance.add_player(player.clone());
- instance_update(tx, instance)?;
-
- return Ok(player);
+ instance_update(tx, instance)
}
pub fn instance_ready_global(tx: &mut Transaction, _account: &Account, player: Player) -> Result {
@@ -492,21 +550,16 @@ pub fn instance_scores(params: InstanceReadyParams, tx: &mut Transaction, _accou
Ok(scores)
}
-pub fn instance_lobby_ready(params: InstanceReadyParams, tx: &mut Transaction, account: &Account) -> Result {
+pub fn instance_ready(params: InstanceReadyParams, tx: &mut Transaction, account: &Account) -> Result {
let player = player_get(tx, account.id, params.instance_id)?;
let mut instance = instance_get(tx, params.instance_id)?;
instance.player_ready(player.id)?;
- if instance.can_start() {
- instance.start();
- for player in instance.players.iter_mut().filter(|p| !p.bot) {
- player.vbox.fill();
- player_update(tx, player.clone(), false)?;
- }
- }
+ instance_update(tx, instance)
+}
- instance_update(tx, instance)?;
- Ok(player)
+pub fn instance_state(params: InstanceStateParams, tx: &mut Transaction, account: &Account) -> Result {
+ instance_get(tx, params.instance_id)
}
// pub fn instance_ready(params: InstanceReadyParams, tx: &mut Transaction, account: &Account) -> Result {
diff --git a/server/src/player.rs b/server/src/player.rs
index 5ee70cde..2016fa6b 100644
--- a/server/src/player.rs
+++ b/server/src/player.rs
@@ -11,8 +11,8 @@ use failure::err_msg;
use account::Account;
use cryp::{Cryp, Colours, cryp_get};
use vbox::{Vbox, Var, VarEffect};
-use rpc::{PlayerStateParams, PlayerCrypsSetParams};
-use instance::{instance_get, instance_update};
+use rpc::{PlayerCrypsSetParams};
+use instance::{Instance, instance_get, instance_update};
const DISCARD_COST: u16 = 5;
@@ -353,11 +353,7 @@ pub fn player_delete(tx: &mut Transaction, id: Uuid) -> Result<(), Error> {
return Ok(());
}
-pub fn player_state(params: PlayerStateParams, tx: &mut Transaction, account: &Account) -> Result {
- player_get(tx, account.id, params.instance_id)
-}
-
-pub fn player_mm_cryps_set(params: PlayerCrypsSetParams, tx: &mut Transaction, account: &Account) -> Result {
+pub fn player_mm_cryps_set(params: PlayerCrypsSetParams, tx: &mut Transaction, account: &Account) -> Result {
if params.cryp_ids.len() != 3 {
return Err(err_msg("team size is 3"));
}
@@ -367,16 +363,19 @@ pub fn player_mm_cryps_set(params: PlayerCrypsSetParams, tx: &mut Transaction, a
.map(|id| cryp_get(tx, *id, account.id))
.collect::, Error>>()?;
- match player_get(tx, account.id, Uuid::nil()) {
+ let player = match player_get(tx, account.id, Uuid::nil()) {
Ok(mut p) => {
p.cryps = cryps;
p.vbox = Vbox::new(account.id, Uuid::nil());
- player_update(tx, p, false)
+ player_update(tx, p, false)?
},
Err(_) => {
- return player_create(tx, Player::new(account.id, Uuid::nil(), &account.name, cryps), &account)
+ player_create(tx, Player::new(account.id, Uuid::nil(), &account.name, cryps), &account)?
}
- }
+ };
+
+ let instance = Instance::global(player);
+ Ok(instance)
}
#[cfg(test)]
diff --git a/server/src/rpc.rs b/server/src/rpc.rs
index 77ec567a..93e19189 100644
--- a/server/src/rpc.rs
+++ b/server/src/rpc.rs
@@ -21,8 +21,8 @@ use account::{Account, account_create, account_login, account_from_token, accoun
use skill::{Skill};
// use zone::{Zone, zone_create, zone_join, zone_close};
use spec::{Spec};
-use player::{Score, player_state, player_mm_cryps_set, Player};
-use instance::{instance_lobby, instance_lobby_ready, instance_join, instance_scores};
+use player::{Score, player_mm_cryps_set, Player};
+use instance::{Instance, instance_state, instance_lobby, instance_ready, instance_join, instance_scores};
use vbox::{Var, vbox_accept, vbox_apply, vbox_discard, vbox_combine, vbox_reclaim, vbox_unequip};
pub struct Rpc;
@@ -70,19 +70,14 @@ impl Rpc {
"cryp_spawn" => Rpc::cryp_spawn(data, &mut tx, account.unwrap(), client),
"game_state" => Rpc::game_state(data, &mut tx, account.unwrap(), client),
- // "game_pve" => Rpc::game_pve(data, &mut tx, account.unwrap(), client),
"game_skill" => Rpc::game_skill(data, &mut tx, account.unwrap(), client),
- // "zone_create" => Rpc::zone_create(data, &mut tx, account.unwrap(), client),
- // "zone_join" => Rpc::zone_join(data, &mut tx, account.unwrap(), client),
- // "zone_close" => Rpc::zone_close(data, &mut tx, account.unwrap(), client),
-
"instance_join" => Rpc::instance_join(data, &mut tx, account.unwrap(), client),
- // "instance_ready" => Rpc::instance_ready(data, &mut tx, account.unwrap(), client),
+ "instance_ready" => Rpc::instance_ready(data, &mut tx, account.unwrap(), client),
"instance_lobby" => Rpc::instance_lobby(data, &mut tx, account.unwrap(), client),
"instance_scores" => Rpc::instance_scores(data, &mut tx, account.unwrap(), client),
+ "instance_state" => Rpc::instance_state(data, &mut tx, account.unwrap(), client),
- "player_state" => Rpc::player_state(data, &mut tx, account.unwrap(), client),
"player_mm_cryps_set" => Rpc::player_mm_cryps_set(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),
@@ -222,63 +217,23 @@ impl Rpc {
})
}
- // fn account_zone(_data: Vec, tx: &mut Transaction, account: Account, _client: &mut WebSocket) -> Result {
- // Ok(RpcResponse {
- // method: "zone_state".to_string(),
- // params: RpcResult::ZoneState(account_zone(tx, &account)?)
- // })
- // }
-
- // fn zone_create(_data: Vec, tx: &mut Transaction, account: Account, _client: &mut WebSocket) -> Result {
- // // let _msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
-
- // let response = RpcResponse {
- // method: "zone_state".to_string(),
- // params: RpcResult::ZoneState(zone_create(tx, &account)?)
- // };
-
- // return Ok(response);
- // }
-
- // fn zone_join(data: Vec, tx: &mut Transaction, account: Account, _client: &mut WebSocket) -> Result {
- // let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
-
- // let response = RpcResponse {
- // method: "game_state".to_string(),
- // params: RpcResult::GameState(zone_join(msg.params, tx, &account)?)
- // };
-
- // return Ok(response);
- // }
-
- // fn zone_close(data: Vec, tx: &mut Transaction, account: Account, _client: &mut WebSocket) -> Result {
- // let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
-
- // let response = RpcResponse {
- // method: "zone_close".to_string(),
- // params: RpcResult::ZoneClose(zone_close(msg.params, tx, &account)?)
- // };
-
- // return Ok(response);
- // }
-
fn instance_lobby(data: Vec, tx: &mut Transaction, account: Account, _client: &mut WebSocket) -> Result {
let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
let response = RpcResponse {
- method: "player_state".to_string(),
- params: RpcResult::PlayerState(instance_lobby(msg.params, tx, &account)?)
+ method: "instance_state".to_string(),
+ params: RpcResult::InstanceState(instance_lobby(msg.params, tx, &account)?)
};
return Ok(response);
}
- fn instance_lobby_ready(data: Vec, tx: &mut Transaction, account: Account, _client: &mut WebSocket) -> Result {
+ fn instance_ready(data: Vec, tx: &mut Transaction, account: Account, _client: &mut WebSocket) -> Result {
let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
let response = RpcResponse {
- method: "player_state".to_string(),
- params: RpcResult::PlayerState(instance_lobby_ready(msg.params, tx, &account)?)
+ method: "instance_state".to_string(),
+ params: RpcResult::InstanceState(instance_ready(msg.params, tx, &account)?)
};
return Ok(response);
@@ -288,8 +243,8 @@ impl Rpc {
let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
let response = RpcResponse {
- method: "player_state".to_string(),
- params: RpcResult::PlayerState(instance_join(msg.params, tx, &account)?)
+ method: "instance_state".to_string(),
+ params: RpcResult::InstanceState(instance_join(msg.params, tx, &account)?)
};
return Ok(response);
@@ -317,14 +272,12 @@ impl Rpc {
return Ok(response);
}
-
-
- fn player_state(data: Vec, tx: &mut Transaction, account: Account, _client: &mut WebSocket) -> Result {
- let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
+ fn instance_state(data: Vec, tx: &mut Transaction, account: Account, _client: &mut WebSocket) -> Result {
+ let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
let response = RpcResponse {
- method: "player_state".to_string(),
- params: RpcResult::PlayerState(player_state(msg.params, tx, &account)?)
+ method: "instance_state".to_string(),
+ params: RpcResult::InstanceState(instance_state(msg.params, tx, &account)?)
};
return Ok(response);
@@ -334,8 +287,8 @@ impl Rpc {
let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
let response = RpcResponse {
- method: "player_state".to_string(),
- params: RpcResult::PlayerState(player_mm_cryps_set(msg.params, tx, &account)?)
+ method: "instance_state".to_string(),
+ params: RpcResult::InstanceState(player_mm_cryps_set(msg.params, tx, &account)?)
};
return Ok(response);
@@ -345,8 +298,8 @@ impl Rpc {
let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
let response = RpcResponse {
- method: "player_state".to_string(),
- params: RpcResult::PlayerState(vbox_accept(msg.params, tx, &account)?)
+ method: "instance_state".to_string(),
+ params: RpcResult::InstanceState(vbox_accept(msg.params, tx, &account)?)
};
return Ok(response);
@@ -356,8 +309,8 @@ impl Rpc {
let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
let response = RpcResponse {
- method: "player_state".to_string(),
- params: RpcResult::PlayerState(vbox_discard(msg.params, tx, &account)?)
+ method: "instance_state".to_string(),
+ params: RpcResult::InstanceState(vbox_discard(msg.params, tx, &account)?)
};
return Ok(response);
@@ -368,8 +321,8 @@ impl Rpc {
let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
let response = RpcResponse {
- method: "player_state".to_string(),
- params: RpcResult::PlayerState(vbox_combine(msg.params, tx, &account)?)
+ method: "instance_state".to_string(),
+ params: RpcResult::InstanceState(vbox_combine(msg.params, tx, &account)?)
};
return Ok(response);
@@ -379,8 +332,8 @@ impl Rpc {
let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
let response = RpcResponse {
- method: "player_state".to_string(),
- params: RpcResult::PlayerState(vbox_apply(msg.params, tx, &account)?)
+ method: "instance_state".to_string(),
+ params: RpcResult::InstanceState(vbox_apply(msg.params, tx, &account)?)
};
Rpc::send_msg(client, RpcResponse {
@@ -395,8 +348,8 @@ impl Rpc {
let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
let response = RpcResponse {
- method: "player_state".to_string(),
- params: RpcResult::PlayerState(vbox_reclaim(msg.params, tx, &account)?)
+ method: "instance_state".to_string(),
+ params: RpcResult::InstanceState(vbox_reclaim(msg.params, tx, &account)?)
};
return Ok(response);
@@ -406,8 +359,8 @@ impl Rpc {
let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
let response = RpcResponse {
- method: "player_state".to_string(),
- params: RpcResult::PlayerState(vbox_unequip(msg.params, tx, &account)?)
+ method: "instance_state".to_string(),
+ params: RpcResult::InstanceState(vbox_unequip(msg.params, tx, &account)?)
};
Rpc::send_msg(client, RpcResponse {
@@ -417,8 +370,6 @@ impl Rpc {
return Ok(response);
}
-
-
}
#[derive(Debug,Clone,Serialize,Deserialize)]
@@ -441,7 +392,7 @@ pub enum RpcResult {
// ZoneClose(()),
PlayerList(Vec),
- PlayerState(Player),
+ InstanceState(Instance),
}
#[derive(Debug,Clone,Serialize,Deserialize)]
@@ -601,13 +552,13 @@ pub struct InstanceReadyParams {
}
#[derive(Debug,Clone,Serialize,Deserialize)]
-struct PlayerStateMsg {
+struct InstanceStateMsg {
method: String,
- params: PlayerStateParams,
+ params: InstanceStateParams,
}
#[derive(Debug,Clone,Serialize,Deserialize)]
-pub struct PlayerStateParams {
+pub struct InstanceStateParams {
pub instance_id: Uuid,
}
diff --git a/server/src/vbox.rs b/server/src/vbox.rs
index d6a69aca..9f752f26 100644
--- a/server/src/vbox.rs
+++ b/server/src/vbox.rs
@@ -15,7 +15,8 @@ use account::Account;
use rpc::{VboxAcceptParams, VboxDiscardParams, VboxCombineParams, VboxApplyParams, VboxReclaimParams, VboxUnequipParams};
use skill::{Skill};
use spec::{Spec};
-use player::{Player, player_get, player_update};
+use player::{Player};
+use instance::{Instance, instance_get, instance_update};
use cryp::{Colours};
#[derive(Debug,Copy,Clone,Serialize,Deserialize,PartialEq,PartialOrd,Ord,Eq)]
@@ -412,18 +413,14 @@ impl Vbox {
Var::Attack,
];
- let mut vbox = Vbox {
+ Vbox {
id: Uuid::new_v4(),
account: account_id,
instance: instance_id,
- free: vec![],
+ free: vec![vec![], vec![], vec![]],
bound: starting_items,
bits: 18,
- };
-
- // vbox.fill();
-
- return vbox;
+ }
}
pub fn balance_sub(&mut self, amount: u16) -> Result<&mut Vbox, Error> {
@@ -542,40 +539,40 @@ impl Vbox {
}
}
-pub fn vbox_discard(params: VboxDiscardParams, tx: &mut Transaction, account: &Account) -> Result {
- let mut player = player_get(tx, account.id, params.instance_id)?;
- player.vbox_discard()?;
- return player_update(tx, player, false);
+pub fn vbox_discard(params: VboxDiscardParams, tx: &mut Transaction, account: &Account) -> Result {
+ let instance = instance_get(tx, params.instance_id)?
+ .vbox_discard(account.id)?;
+ return instance_update(tx, instance);
}
-pub fn vbox_accept(params: VboxAcceptParams, tx: &mut Transaction, account: &Account) -> Result {
- let mut player = player_get(tx, account.id, params.instance_id)?;
- player.vbox_accept(params.group, params.index)?;
- return player_update(tx, player, false);
+pub fn vbox_accept(params: VboxAcceptParams, tx: &mut Transaction, account: &Account) -> Result {
+ let instance = instance_get(tx, params.instance_id)?
+ .vbox_accept(account.id, params.group, params.index)?;
+ return instance_update(tx, instance);
}
-pub fn vbox_combine(params: VboxCombineParams, tx: &mut Transaction, account: &Account) -> Result {
- let mut player = player_get(tx, account.id, params.instance_id)?;
- player.vbox_combine(params.indices)?;
- return player_update(tx, player, false);
+pub fn vbox_combine(params: VboxCombineParams, tx: &mut Transaction, account: &Account) -> Result {
+ let instance = instance_get(tx, params.instance_id)?
+ .vbox_combine(account.id, params.indices)?;
+ return instance_update(tx, instance);
}
-pub fn vbox_reclaim(params: VboxReclaimParams, tx: &mut Transaction, account: &Account) -> Result {
- let mut player = player_get(tx, account.id, params.instance_id)?;
- player.vbox_reclaim(params.index)?;
- return player_update(tx, player, false);
+pub fn vbox_reclaim(params: VboxReclaimParams, tx: &mut Transaction, account: &Account) -> Result {
+ let mut instance = instance_get(tx, params.instance_id)?
+ .vbox_reclaim(account.id, params.index)?;
+ return instance_update(tx, instance);
}
-pub fn vbox_apply(params: VboxApplyParams, tx: &mut Transaction, account: &Account) -> Result {
- let mut player = player_get(tx, account.id, params.instance_id)?;
- player.vbox_apply(params.index, params.cryp_id)?;
- return player_update(tx, player, false);
+pub fn vbox_apply(params: VboxApplyParams, tx: &mut Transaction, account: &Account) -> Result {
+ let mut instance = instance_get(tx, params.instance_id)?
+ .vbox_apply(account.id, params.index, params.cryp_id)?;
+ return instance_update(tx, instance);
}
-pub fn vbox_unequip(params: VboxUnequipParams, tx: &mut Transaction, account: &Account) -> Result {
- let mut player = player_get(tx, account.id, params.instance_id)?;
- player.vbox_unequip(params.target, params.cryp_id)?;
- return player_update(tx, player, false);
+pub fn vbox_unequip(params: VboxUnequipParams, tx: &mut Transaction, account: &Account) -> Result {
+ let mut instance = instance_get(tx, params.instance_id)?
+ .vbox_unequip(account.id, params.target, params.cryp_id)?;
+ return instance_update(tx, instance);
}
#[cfg(test)]