From 999984babe68b40df4fd7ca0afbdf1c4ec791ba0 Mon Sep 17 00:00:00 2001 From: zhl Date: Thu, 29 Apr 2021 20:49:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=A7=AF=E5=88=86=E6=9B=B4?= =?UTF-8?q?=E6=B4=97=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/rooms/PuzzleMathRoom.ts | 14 ++++++++++++++ src/rooms/commands/EndGameCommand.ts | 13 +++++++++++++ src/rooms/schema/Player.ts | 2 ++ 3 files changed, 29 insertions(+) create mode 100644 src/rooms/commands/EndGameCommand.ts diff --git a/src/rooms/PuzzleMathRoom.ts b/src/rooms/PuzzleMathRoom.ts index d09e497..5c91cb1 100644 --- a/src/rooms/PuzzleMathRoom.ts +++ b/src/rooms/PuzzleMathRoom.ts @@ -6,6 +6,7 @@ import { OnJoinCommand } from './commands/OnJoinCommand' import { Player } from './schema/Player' import { BeginGameCommand } from './commands/BeginGameCommand' import { PuzzleGameState } from './schema/PuzzleGameState' +import { EndGameCommand } from './commands/EndGameCommand' export class PuzzleMathRoom extends Room { @@ -88,6 +89,19 @@ export class PuzzleMathRoom extends Room { * 游戏结束 */ endGame() { + console.log(`admin send end game cmd`) + this.dispatcher.dispatch(new EndGameCommand() ) + } + updateScore(datas: any) { + console.log(`admin updateScore: ${JSON.stringify(datas)}`) + for (let data of datas) { + for (let [,player] of this.state.players) { + if (player.accountId == data.accountid) { + player.score += data.score + break + } + } + } } } diff --git a/src/rooms/commands/EndGameCommand.ts b/src/rooms/commands/EndGameCommand.ts new file mode 100644 index 0000000..eaa19d1 --- /dev/null +++ b/src/rooms/commands/EndGameCommand.ts @@ -0,0 +1,13 @@ +import { Command } from '@colyseus/command' +import { PuzzleGameState } from '../schema/PuzzleGameState' +import { GameStateConst } from '../../constants/GameStateConst' + +/** + * 结束游戏 + */ +export class EndGameCommand extends Command { + async execute() { + this.state.updateGameState(GameStateConst.STATE_GAME_OVER) + this.room.broadcast('endgame', {}) + } +} diff --git a/src/rooms/schema/Player.ts b/src/rooms/schema/Player.ts index 5ab3591..f868a81 100644 --- a/src/rooms/schema/Player.ts +++ b/src/rooms/schema/Player.ts @@ -4,6 +4,7 @@ export class Player extends Schema { @type('string') id: string + @type('string') accountId: string @type('number') @@ -18,5 +19,6 @@ export class Player extends Schema { super() this.id = id this.accountId = accountId + this.score = 0 } }