From 15171f97e22260d5f100dc96f570255109ee00d1 Mon Sep 17 00:00:00 2001 From: ntr Date: Sun, 22 Sep 2019 13:16:59 +1000 Subject: [PATCH] move abandon btn --- client/assets/styles/controls.less | 17 +++-- client/src/components/game.ctrl.btns.jsx | 30 +-------- client/src/components/game.ctrl.btns.top.jsx | 64 +++++++++++++++++++ client/src/components/game.ctrl.jsx | 2 + client/src/components/instance.ctrl.btns.jsx | 30 +-------- client/src/components/instance.ctrl.jsx | 2 + .../src/components/instance.ctrl.top.btns.jsx | 64 +++++++++++++++++++ client/src/components/player.box.jsx | 9 --- 8 files changed, 148 insertions(+), 70 deletions(-) create mode 100644 client/src/components/game.ctrl.btns.top.jsx create mode 100644 client/src/components/instance.ctrl.top.btns.jsx diff --git a/client/assets/styles/controls.less b/client/assets/styles/controls.less index e00c633a..25d7538d 100644 --- a/client/assets/styles/controls.less +++ b/client/assets/styles/controls.less @@ -22,7 +22,14 @@ aside { grid-area: controls; display: grid; - grid-auto-rows: 1fr; + + grid-template-areas: + "top" + "p0" + "p1" + "bottom"; + + grid-template-rows: min-content 3fr 3fr 1fr; grid-gap: 0.5em 0; } @@ -107,11 +114,11 @@ aside { button { flex: 0; + } - &:first-child { - flex: 1; - font-size: 200%; - } + .ready { + flex: 1; + font-size: 200%; } } diff --git a/client/src/components/game.ctrl.btns.jsx b/client/src/components/game.ctrl.btns.jsx index c990d2df..1b091c3c 100644 --- a/client/src/components/game.ctrl.btns.jsx +++ b/client/src/components/game.ctrl.btns.jsx @@ -49,48 +49,24 @@ const addState = connect( } ); -function InstanceCtrlBtns(args) { +function GameCtrlBtns(args) { const { game, animating, - getInstanceState, - sendAbandon, sendGameSkillClear, sendReady, - quit, } = args; if (!game) return false; - const finished = game.phase === 'Finish'; - const { abandonState } = this.state; - - const abandonStateTrue = e => { - e.stopPropagation(); - this.setState({ abandonState: true }); - setTimeout(() => this.setState({ abandonState: false }), 2000); - }; - - const abandonClasses = `abandon ${abandonState ? 'confirming' : ''}`; - const abandonAction = abandonState ? sendAbandon : abandonStateTrue; - - function quitClick() { - getInstanceState(); - quit(); - } - - const readyBtn = ; - const quitBtn = ; - return (
- {finished ? quitBtn : readyBtn} - +
); } -module.exports = addState(InstanceCtrlBtns); +module.exports = addState(GameCtrlBtns); diff --git a/client/src/components/game.ctrl.btns.top.jsx b/client/src/components/game.ctrl.btns.top.jsx new file mode 100644 index 00000000..5abcdcae --- /dev/null +++ b/client/src/components/game.ctrl.btns.top.jsx @@ -0,0 +1,64 @@ +const preact = require('preact'); +const { connect } = require('preact-redux'); + +const actions = require('../actions'); + +const addState = connect( + function receiveState(state) { + const { + ws, + game, + } = state; + + function sendAbandon() { + return ws.sendInstanceAbandon(game.instance); + } + + return { + game, + + sendAbandon, + }; + }, + function receiveDispatch(dispatch) { + function leave() { + dispatch(actions.setNav('play')); + dispatch(actions.setGame(null)); + dispatch(actions.setInstance(null)); + } + + return { leave }; + } +); + +function GameCtrlTopBtns(args) { + const { + game, + + leave, + sendAbandon, + } = args; + + const finished = game && game.phase === 'Finished'; + const { abandonState } = this.state; + + const abandonStateTrue = e => { + e.stopPropagation(); + this.setState({ abandonState: true }); + setTimeout(() => this.setState({ abandonState: false }), 2000); + }; + + const abandonClasses = `abandon ${abandonState ? 'confirming' : ''}`; + const abandonAction = abandonState ? sendAbandon : abandonStateTrue; + + const abandonBtn = ; + const leaveBtn = ; + + return ( +
+ {finished ? leaveBtn : abandonBtn} +
+ ); +} + +module.exports = addState(GameCtrlTopBtns); diff --git a/client/src/components/game.ctrl.jsx b/client/src/components/game.ctrl.jsx index 696d67bc..12c308a5 100644 --- a/client/src/components/game.ctrl.jsx +++ b/client/src/components/game.ctrl.jsx @@ -5,6 +5,7 @@ const actions = require('../actions'); const PlayerBox = require('./player.box'); const GameCtrlButtons = require('./game.ctrl.btns'); +const GameCtrlTopButtons = require('./game.ctrl.btns.top'); const addState = connect( function receiveState(state) { @@ -61,6 +62,7 @@ function Controls(args) {