From 84c0a187c2d2b30ddb186a3e238565c784d46b6e Mon Sep 17 00:00:00 2001 From: Mashy Date: Sat, 27 Jul 2019 11:12:00 +1000 Subject: [PATCH] pay for constructs --- server/src/mtx.rs | 20 +++++++++++++++++--- server/src/rpc.rs | 9 +++------ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/server/src/mtx.rs b/server/src/mtx.rs index effd767f..6b8f4515 100644 --- a/server/src/mtx.rs +++ b/server/src/mtx.rs @@ -10,7 +10,8 @@ use failure::err_msg; use account; use account::Account; -use construct::{Construct, construct_select, construct_write}; +use construct::{Construct, construct_select, construct_write, construct_spawn}; +use names::{name as generate_name}; use img; pub const FREE_MTX: [MtxVariant; 1] = [ @@ -22,6 +23,10 @@ pub const SHOP_LISTINGS: [Listing; 2] = [ Listing { variant: MtxVariant::Invader, credits: 10 }, ]; +const NEW_IMAGE_COST: i64 = 1; +const NEW_NAME_COST: i64 = 5; +const NEW_CONSTRUCT_COST: i64 = 50; + #[derive(Debug,Clone,PartialEq,Serialize,Deserialize)] pub struct Shop { owned: Vec, @@ -71,8 +76,11 @@ pub struct Mtx { pub fn apply(tx: &mut Transaction, account: &Account, variant: MtxVariant, construct_id: Uuid, name: String) -> Result, Error> { let mtx = select(tx, variant, account.id)?; let mut construct = construct_select(tx, construct_id, account.id)?; - - account::debit(tx, account.id, 1)?; + let cost = match mtx.variant { + MtxVariant::Rename => NEW_NAME_COST, + _ => NEW_IMAGE_COST, + }; + account::debit(tx, account.id, cost)?; construct = match mtx.variant { MtxVariant::Rename => construct.new_name(name), @@ -112,6 +120,12 @@ pub fn select(tx: &mut Transaction, variant: MtxVariant, account: Uuid) -> Resul } } +pub fn new_construct(tx: &mut Transaction, account: &Account) -> Result { + account::debit(tx, account.id, NEW_CONSTRUCT_COST)?; + let construct = construct_spawn(tx, account.id, generate_name())?; + Ok(construct) +} + impl Mtx { pub fn new(variant: MtxVariant, account: Uuid) -> Mtx { match variant { diff --git a/server/src/rpc.rs b/server/src/rpc.rs index b58e7888..42f16a65 100644 --- a/server/src/rpc.rs +++ b/server/src/rpc.rs @@ -8,17 +8,14 @@ use failure::Error; use failure::err_msg; use pg::{Db}; -use construct::{Construct, construct_spawn}; +use construct::{Construct}; use game::{Game, game_state, game_skill, game_ready}; -use account::{Account, account_constructs, account_instances}; +use account::{Account, account_constructs}; use skill::{Skill, dev_resolve, Resolutions}; use instance::{Instance, instance_state, instance_list, instance_new, instance_ready, instance_join}; use vbox::{vbox_accept, vbox_apply, vbox_discard, vbox_combine, vbox_reclaim, vbox_unequip}; use item::{Item, ItemInfoCtr, item_info}; -use names::{name as generate_name}; - - use mtx; #[derive(Debug,Clone,Serialize,Deserialize)] @@ -154,7 +151,7 @@ pub fn receive(data: Vec, db: &Db, begin: Instant, account: &Option Ok(RpcMessage::InstanceState(vbox_unequip(&mut tx, account, instance_id, construct_id, target)?)), RpcRequest::MtxConstructBuy {} => - Ok(RpcMessage::ConstructSpawn(construct_spawn(&mut tx, account.id, generate_name())?)), + Ok(RpcMessage::ConstructSpawn(mtx::new_construct(&mut tx, account)?)), RpcRequest::MtxConstructApply { mtx, construct_id, name } => Ok(RpcMessage::AccountConstructs(mtx::apply(&mut tx, account, mtx, construct_id, name)?)),