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 } }