diff --git a/CHANGELOG.md b/CHANGELOG.md index 009c5d41..01b06b18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,6 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). - ## [1.6.5] - 2019-10-27 # Added - Offering of draws diff --git a/VERSION b/VERSION index 49ebdd60..83d1a5eb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.6.5 \ No newline at end of file +1.6.6 \ No newline at end of file diff --git a/acp/package.json b/acp/package.json index 2591fabe..a1935bb7 100644 --- a/acp/package.json +++ b/acp/package.json @@ -1,6 +1,6 @@ { "name": "mnml-client", - "version": "1.6.5", + "version": "1.6.6", "description": "", "main": "index.js", "scripts": { diff --git a/client/package.json b/client/package.json index 790e7aed..b6b1c359 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "mnml-client", - "version": "1.6.5", + "version": "1.6.6", "description": "", "main": "index.js", "scripts": { diff --git a/client/src/components/game.ctrl.btns.top.jsx b/client/src/components/game.ctrl.btns.top.jsx index 4b81670c..8e09718c 100644 --- a/client/src/components/game.ctrl.btns.top.jsx +++ b/client/src/components/game.ctrl.btns.top.jsx @@ -8,6 +8,7 @@ const addState = connect( const { ws, game, + account, } = state; function sendAbandon() { @@ -20,6 +21,7 @@ const addState = connect( return { game, + account, sendAbandon, sendDraw, @@ -39,6 +41,7 @@ const addState = connect( function GameCtrlTopBtns(args) { const { game, + account, leave, sendAbandon, @@ -48,6 +51,9 @@ function GameCtrlTopBtns(args) { const finished = game && game.phase === 'Finished'; const { abandonState, drawState } = this.state; + const player = game.players.find(p => p.id === account.id); + const drawOffered = player && player.draw_offered; + const abandonStateTrue = e => { e.stopPropagation(); this.setState({ abandonState: true }); @@ -66,10 +72,12 @@ function GameCtrlTopBtns(args) { const abandonBtn = ; - const drawClasses = `draw ${drawState ? 'confirming' : ''}`; - const drawText = drawState ? 'Draw' : 'Offer'; + const drawClasses = `draw ${drawState || drawOffered ? 'confirming' : ''}`; + const drawText = drawOffered + ? 'Offered' + : drawState ? 'Draw' : 'Offer'; const drawAction = drawState ? sendDraw : drawStateTrue; - const drawBtn = ; + const drawBtn = ; return (
diff --git a/client/src/components/player.box.jsx b/client/src/components/player.box.jsx index 2790d69f..6cace8a4 100644 --- a/client/src/components/player.box.jsx +++ b/client/src/components/player.box.jsx @@ -68,6 +68,11 @@ function Scoreboard(args) { }; const winner = player.score === 'Win'; + const chatText = chat + ? chat + : player.draw_offered + ? 'draw' + : '\u00A0'; if (!isPlayer) { const nameClass = `name ${player.img ? 'subscriber' : ''}`; @@ -77,7 +82,7 @@ function Scoreboard(args) {
{scoreText()}
{player.name}
-
{chat || '\u00A0'}
+
{chatText}
); } @@ -87,7 +92,7 @@ function Scoreboard(args) { return (
-
{chat || '\u00A0'}
+
{chatText}
{scoreText()}
{player.name}
diff --git a/ops/package.json b/ops/package.json index 40211410..ae05c7f0 100755 --- a/ops/package.json +++ b/ops/package.json @@ -1,6 +1,6 @@ { "name": "mnml-ops", - "version": "1.6.5", + "version": "1.6.6", "description": "", "main": "index.js", "scripts": { diff --git a/server/Cargo.toml b/server/Cargo.toml index 4df35fa1..c80430f6 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mnml" -version = "1.6.5" +version = "1.6.6" authors = ["ntr "] [dependencies] diff --git a/server/src/instance.rs b/server/src/instance.rs index eec93a0d..2e65b9d6 100644 --- a/server/src/instance.rs +++ b/server/src/instance.rs @@ -335,28 +335,18 @@ impl Instance { } fn finish_condition(&mut self) -> bool { - // tennis - for player in self.players.iter() { - if player.score == Score::Win { - self.winner = Some(player.id); - return true; - } - } - // Game defaults to lose otherwise - if self.rounds.len() < 4 { - return false; - } - - // both players afk - if self.players.iter().all(|p| p.score == Score::Zero) { - return true; - } - - return false; + self.players.iter().any(|p| p.score == Score::Win) } pub fn finish(&mut self) -> &mut Instance { self.phase = InstancePhase::Finished; + + for player in self.players.iter() { + if player.score == Score::Win { + self.winner = Some(player.id); + } + } + self }