From c3a2330569e69ca81e929b6b3416bea05d0247a3 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 10 Mar 2018 13:42:26 +0900 Subject: [PATCH] #1225 --- src/api/stream/othello-game.ts | 14 ++++++++++++-- .../common/views/components/othello.room.vue | 17 +++++++++++++---- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/api/stream/othello-game.ts b/src/api/stream/othello-game.ts index 9ca4864a54..cc936805ba 100644 --- a/src/api/stream/othello-game.ts +++ b/src/api/stream/othello-game.ts @@ -3,6 +3,7 @@ import * as redis from 'redis'; import Game, { pack } from '../models/othello-game'; import { publishOthelloGameStream } from '../event'; import Othello from '../../common/othello/core'; +import * as maps from '../../common/othello/maps'; export default function(request: websocket.request, connection: websocket.connection, subscriber: redis.RedisClient, user: any): void { const gameId = request.resourceURL.query.game; @@ -105,16 +106,25 @@ export default function(request: websocket.request, connection: websocket.connec bw = freshGame.settings.bw as number; } + function getRandomMap() { + const mapCount = Object.entries(maps).length; + const rnd = Math.floor(Math.random() * mapCount); + return Object.entries(maps).find((x, i) => i == rnd)[1].data; + } + + const map = freshGame.settings.map != null ? freshGame.settings.map : getRandomMap(); + await Game.update({ _id: gameId }, { $set: { started_at: new Date(), is_started: true, - black: bw + black: bw, + 'settings.map': map } }); //#region 盤面に最初から石がないなどして始まった瞬間に勝敗が決定する場合があるのでその処理 - const o = new Othello(freshGame.settings.map, { + const o = new Othello(map, { isLlotheo: freshGame.settings.is_llotheo }); diff --git a/src/web/app/common/views/components/othello.room.vue b/src/web/app/common/views/components/othello.room.vue index 6c8ce16531..745074b17a 100644 --- a/src/web/app/common/views/components/othello.room.vue +++ b/src/web/app/common/views/components/othello.room.vue @@ -5,6 +5,7 @@

ゲームの設定

+ {{ m.name }} @@ -13,7 +14,7 @@ -
+
x[1].data.join('') == this.game.settings.map.join('')); - this.mapName = foundMap ? foundMap[1].name : '-Custom-'; + if (this.game.settings.map == null) { + this.mapName = null; + } else { + const foundMap = Object.entries(maps).find(x => x[1].data.join('') == this.game.settings.map.join('')); + this.mapName = foundMap ? foundMap[1].name : '-Custom-'; + } }, onMapChange(v) { - this.game.settings.map = Object.entries(maps).find(x => x[1].name == v)[1].data; + if (v == null) { + this.game.settings.map = null; + } else { + this.game.settings.map = Object.entries(maps).find(x => x[1].name == v)[1].data; + } this.$forceUpdate(); this.updateSettings(); },