diff --git a/client/src/actions.jsx b/client/src/actions.jsx
index b4f09823..96ba0ef5 100644
--- a/client/src/actions.jsx
+++ b/client/src/actions.jsx
@@ -17,7 +17,6 @@ export const setConstructRename = value => ({ type: 'SET_CONSTRUCT_RENAME', valu
export const setGame = value => ({ type: 'SET_GAME', value });
export const setInfo = value => ({ type: 'SET_INFO', value });
export const setInstance = value => ({ type: 'SET_INSTANCE', value });
-export const setInstanceList = value => ({ type: 'SET_INSTANCE_LIST', value });
export const setInstances = value => ({ type: 'SET_INSTANCES', value });
export const setItemEquip = value => ({ type: 'SET_ITEM_EQUIP', value });
export const setItemInfo = value => ({ type: 'SET_ITEM_INFO', value });
diff --git a/client/src/components/instance.create.buttons.jsx b/client/src/components/instance.create.buttons.jsx
deleted file mode 100644
index 82efa245..00000000
--- a/client/src/components/instance.create.buttons.jsx
+++ /dev/null
@@ -1,46 +0,0 @@
-const preact = require('preact');
-const { connect } = require('preact-redux');
-const { Component } = require('preact');
-
-const addState = connect(
- function receiveState(state) {
- const { ws, team, account } = state;
-
- function sendInstanceNew(sConstructs, pve) {
- if (sConstructs.length) {
- return ws.sendInstanceNew(sConstructs, account.name, pve);
- }
- return false;
- }
-
- return {
- sendInstanceNew,
- team,
- };
- }
-);
-
-function CreateButtons(args) {
- const { team, sendInstanceNew } = args;
- const disabled = !team.every(c => c);
-
- const classes = `create-form ${disabled ? 'disabled' : ''}`;
- return (
-
-
-
-
- );
-}
-
-module.exports = addState(CreateButtons);
diff --git a/client/src/components/instance.create.form.jsx b/client/src/components/instance.create.form.jsx
deleted file mode 100644
index 0ccf3738..00000000
--- a/client/src/components/instance.create.form.jsx
+++ /dev/null
@@ -1,91 +0,0 @@
-const preact = require('preact');
-const { connect } = require('preact-redux');
-const { Component } = require('preact');
-
-const addState = connect(
- function receiveState(state) {
- const { ws, team } = state;
-
- function sendInstanceNew(sConstructs, name, pve) {
- if (sConstructs.length) {
- return ws.sendInstanceNew(sConstructs, name, pve);
- }
- return false;
- }
-
- return {
- sendInstanceNew,
- team,
- };
- }
-);
-
-class InstanceCreateForm extends Component {
- constructor(props) {
- super(props);
-
- this.state = { pve: false, name: '' };
-
- const { sendInstanceNew } = props;
-
- this.sendInstanceNew = sendInstanceNew.bind(this);
-
- this.nameInput = this.nameInput.bind(this);
- this.pveChange = this.pveChange.bind(this);
- this.handleSubmit = this.handleSubmit.bind(this);
- }
-
- pveChange() {
- this.setState({ pve: !this.state.pve });
- }
-
- nameInput(event) {
- this.setState({ name: event.target.value });
- }
-
- handleSubmit(event) {
- event.preventDefault();
- this.sendInstanceNew(this.props.team, this.state.name, this.state.pve);
- this.setState({ name: '', pve: false });
- }
-
- render() {
- const disabled = !this.props.team.every(c => c);
-
- const classes = `create-form ${disabled ? 'disabled' : ''}`;
- return (
-
-
-
-
- );
- }
-}
-
-module.exports = addState(InstanceCreateForm);
diff --git a/client/src/components/join.buttons.jsx b/client/src/components/join.buttons.jsx
new file mode 100644
index 00000000..c311da5e
--- /dev/null
+++ b/client/src/components/join.buttons.jsx
@@ -0,0 +1,46 @@
+const preact = require('preact');
+const { connect } = require('preact-redux');
+
+const addState = connect(
+ function receiveState(state) {
+ const { ws } = state;
+
+ function sendInstancePractice() {
+ ws.sendInstancePractice();
+ }
+
+ function sendInstanceQueue() {
+ ws.sendInstanceQueue();
+ }
+
+ return {
+ sendInstanceQueue,
+ sendInstancePractice,
+ };
+ }
+);
+
+function CreateButtons(args) {
+ const {
+ sendInstanceQueue,
+ sendInstancePractice,
+ } = args;
+
+ return (
+
+
Join Game
+
+
+
+ );
+}
+
+module.exports = addState(CreateButtons);
diff --git a/client/src/components/list.jsx b/client/src/components/list.jsx
index 98f18453..1d7a1c0c 100644
--- a/client/src/components/list.jsx
+++ b/client/src/components/list.jsx
@@ -4,7 +4,7 @@ const preact = require('preact');
const { stringSort } = require('./../utils');
const { ConstructAvatar } = require('./construct');
const actions = require('./../actions');
-const InstanceCreateForm = require('./instance.create.buttons');
+const JoinButtons = require('./join.buttons');
const Inventory = require('./inventory');
const idSort = stringSort('id');
@@ -16,19 +16,11 @@ const addState = connect(
constructs,
constructRename,
team,
- instanceList,
mtxActive,
} = state;
- function sendInstanceJoin(instance) {
- if (team.length) {
- return ws.sendInstanceJoin(instance.id, team);
- }
- return false;
- }
-
- function sendInstanceList() {
- return ws.sendInstanceList();
+ function sendInstancePractice() {
+ return ws.sendInstancePractice();
}
function sendConstructAvatarReroll(id) {
@@ -42,13 +34,11 @@ const addState = connect(
return {
constructs,
- instanceList,
mtxActive,
constructRename,
team,
sendConstructRename,
- sendInstanceJoin,
- sendInstanceList,
+ sendInstancePractice,
sendConstructAvatarReroll,
};
},
@@ -79,51 +69,10 @@ function List(args) {
clearMtxRename,
setConstructRename,
sendConstructRename,
- sendInstanceJoin,
- sendInstanceList,
- instanceList,
mtxActive,
sendConstructAvatarReroll,
} = args;
- function listElements() {
- if (!instanceList) return ...
;
-
- const instancePanels = instanceList.map(instance => {
- function instanceClick() {
- return sendInstanceJoin(instance);
- }
-
- return (
-
- | {instance.name} |
-
- );
- });
-
- return (
-
- );
- }
-
const constructPanels = constructs
.filter(c => team.includes(c.id))
.sort(idSort)
@@ -167,7 +116,7 @@ function List(args) {
{constructPanels}
- {listElements()}
+
);
}
diff --git a/client/src/components/nav.jsx b/client/src/components/nav.jsx
index b0c8fd7e..27421a4f 100644
--- a/client/src/components/nav.jsx
+++ b/client/src/components/nav.jsx
@@ -20,10 +20,6 @@ const addState = connect(
return ws.sendInstanceState(instance.id);
}
- function sendInstanceList() {
- return ws.sendInstanceList();
- }
-
return {
account,
instances,
@@ -31,18 +27,9 @@ const addState = connect(
game,
ping,
sendInstanceState,
- sendInstanceList,
};
},
function receiveDispatch(dispatch) {
- function setTestGame(id) {
- return dispatch(actions.setGame(testGame(id)));
- }
-
- function setTestInstance(id) {
- return dispatch(actions.setInstance(testInstance(id)));
- }
-
function setNav(place) {
dispatch(actions.setGame(null));
dispatch(actions.setInstance(null));
@@ -63,8 +50,6 @@ const addState = connect(
}
return {
- setTestGame,
- setTestInstance,
setNav,
hideNav,
};
@@ -79,18 +64,12 @@ function Nav(args) {
team,
sendInstanceState,
- sendInstanceList,
- setTestGame,
- setTestInstance,
setNav,
hideNav,
} = args;
function navTo(p) {
- if (p === 'list') {
- sendInstanceList();
- }
return setNav(p);
}
diff --git a/client/src/events.jsx b/client/src/events.jsx
index d15c5f19..a32251b0 100644
--- a/client/src/events.jsx
+++ b/client/src/events.jsx
@@ -40,11 +40,6 @@ function registerEvents(store) {
store.dispatch(actions.setConstructs(constructs));
}
-
- function setInstanceList(list) {
- store.dispatch(actions.setInstanceList(list));
- }
-
function setWs(ws) {
store.dispatch(actions.setWs(ws));
}
@@ -236,7 +231,6 @@ function registerEvents(store) {
setNewConstruct,
setGame,
setInstance,
- setInstanceList,
setItemInfo,
setPing,
setShop,
diff --git a/client/src/reducers.jsx b/client/src/reducers.jsx
index f7979e6f..1a967c79 100644
--- a/client/src/reducers.jsx
+++ b/client/src/reducers.jsx
@@ -31,7 +31,6 @@ module.exports = {
info: createReducer(null, 'SET_INFO'),
instance: createReducer(null, 'SET_INSTANCE'),
instances: createReducer([], 'SET_INSTANCES'),
- instanceList: createReducer([], 'SET_INSTANCE_LIST'),
itemEquip: createReducer(null, 'SET_ITEM_EQUIP'),
itemInfo: createReducer({ combos: [], items: [] }, 'SET_ITEM_INFO'),
itemUnequip: createReducer([], 'SET_ITEM_UNEQUIP'),
diff --git a/client/src/socket.jsx b/client/src/socket.jsx
index 8b22958f..39d7df3a 100644
--- a/client/src/socket.jsx
+++ b/client/src/socket.jsx
@@ -58,9 +58,6 @@ function createSocket(events) {
send(['InstanceState', { instance_id: instanceId }]);
}
- function sendInstanceList() {
- send(['InstanceList', {}]); }
-
function sendVboxAccept(instanceId, group, index) {
send(['VboxAccept', { instance_id: instanceId, group, index }]);
events.clearInstance();
@@ -107,12 +104,8 @@ function createSocket(events) {
events.setActiveSkill(null);
}
- function sendInstanceJoin(instanceId, constructs) {
- send(['InstanceJoin', { instance_id: instanceId, construct_ids: constructs }]);
- }
-
- function sendInstanceNew(constructs, name, pve) {
- send(['InstanceLobby', { construct_ids: constructs, name, pve }]);
+ function sendInstancePractice() {
+ send(['InstancePractice', {}]);
}
function sendInstanceReady(instanceId) {
@@ -165,10 +158,6 @@ function createSocket(events) {
events.setInstance(instance);
}
- function onOpenInstances(list) {
- events.setInstanceList(list);
- }
-
function onItemInfo(info) {
events.setItemInfo(info);
}
@@ -194,7 +183,6 @@ function createSocket(events) {
GameState: onGameState,
InstanceState: onInstanceState,
ItemInfo: onItemInfo,
- OpenInstances: onOpenInstances,
Pong: onPong,
};
@@ -280,25 +268,29 @@ function createSocket(events) {
return {
sendAccountConstructs,
sendAccountInstances,
+
sendGameState,
sendGameReady,
sendGameSkill,
sendGameTarget,
- sendInstanceJoin,
- sendInstanceList,
+
sendInstanceReady,
- sendInstanceNew,
+ sendInstancePractice,
sendInstanceState,
+
sendVboxAccept,
sendVboxApply,
sendVboxReclaim,
sendVboxCombine,
sendVboxDiscard,
sendVboxUnequip,
+
sendItemInfo,
+
sendMtxApply,
sendMtxBuy,
sendMtxConstructSpawn,
+
connect,
};
}
diff --git a/server/src/account.rs b/server/src/account.rs
index 86149124..a42a3974 100644
--- a/server/src/account.rs
+++ b/server/src/account.rs
@@ -301,7 +301,8 @@ pub fn account_team(tx: &mut Transaction, account: &Account) -> Result Result) -> Result, Error> {
+ let query = "
+ UPDATE constructs
+ SET team = false
+ WHERE account = $1;
+ ";
+
+ let updated = tx
+ .execute(query, &[&account.id, &ids])?;
+
+ if updated > 3 {
+ warn!("team members >3 account={:?} count={:?}", account, updated);
+ }
+
+ let query = "
+ UPDATE constructs
+ SET team = true
+ WHERE account = $1
+ AND id in $2
+ RETURNING data;
+ ";
+
+ let updated = tx
+ .execute(query, &[&account.id, &ids])?;
+
+ if updated != 3 {
+ return Err(format_err!("could not create team of 3 account={:?} updated={:?}", account, updated));
+ }
+
+ account_team(tx, account)
+}
+
pub fn account_instances(tx: &mut Transaction, account: &Account) -> Result, Error> {
let query = "
SELECT data, id
diff --git a/server/src/instance.rs b/server/src/instance.rs
index 5f8e3651..0866b8ab 100644
--- a/server/src/instance.rs
+++ b/server/src/instance.rs
@@ -498,7 +498,7 @@ pub fn instance_create(tx: &mut Transaction, instance: Instance) -> Result Result<(), Error> {
return Ok(());
}
-pub fn instance_list(tx: &mut Transaction) -> Result, Error> {
+pub fn _instance_list(tx: &mut Transaction) -> Result, Error> {
let query = "
SELECT data, id
FROM instances
- WHERE open = true
AND finished = false;
";
@@ -677,13 +676,16 @@ pub fn instance_practice(tx: &mut Transaction, account: &Account) -> Result Result {
@@ -694,13 +696,15 @@ pub fn instance_pvp(tx: &mut Transaction, a: &Account, b: &Account) -> Result),
InstanceState(Instance),
Pong(()),
@@ -56,8 +55,6 @@ enum RpcRequest {
AccountShop {},
AccountConstructs {},
- InstanceList {},
- InstanceLobby { construct_ids: Vec, name: String, pve: bool, password: Option },
InstancePvp {},
InstancePractice {},
InstanceReady { instance_id: Uuid },
@@ -119,8 +116,6 @@ pub fn receive(data: Vec, db: &Db, begin: Instant, account: &Option
RpcRequest::GameReady { id } =>
Ok(RpcMessage::GameState(game_ready(&mut tx, account, id)?)),
- RpcRequest::InstanceList {} =>
- Ok(RpcMessage::OpenInstances(instance_list(&mut tx)?)),
// RpcRequest::InstanceQueue {} =>
// Ok(RpcMessage::QueueState(instance_queue(&mut tx, account)?)),
RpcRequest::InstancePractice {} =>