From 1fb2dc9605f62a2f6d8f7b7578612dcbea952a12 Mon Sep 17 00:00:00 2001 From: "y.x" Date: Thu, 24 Dec 2020 02:14:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0updatePlayer=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/rooms/logic/Handler/BattleHandler.ts | 25 +++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/rooms/logic/Handler/BattleHandler.ts b/src/rooms/logic/Handler/BattleHandler.ts index bd0b0e7..25d88fd 100644 --- a/src/rooms/logic/Handler/BattleHandler.ts +++ b/src/rooms/logic/Handler/BattleHandler.ts @@ -19,6 +19,8 @@ export class BattleHandler { private _players: Map = new Map(); + private _playerids: Map = new Map(); + _room: Room; private _cardusing: boolean; private _sktime: number; @@ -41,19 +43,40 @@ export class BattleHandler { }); this._players.set(aplayer, ph); + this._playerids.set(aplayer.id + '', aplayer); return ph; }; public delPlayer(aplayer: Player){ + let id = aplayer.id + ''; let ph = this.getPlayer(aplayer); - this._players.forEach((item: PlayerHandler) =>{ + this._players.forEach((item: PlayerHandler) => { if(item._friend == ph){ item._friend = null; } }); this._players.delete(aplayer); + this._playerids.delete(id); + }; + + public updatePlayer(aplayerid: string, newplayer: Player){ + let oldplayer = this._playerids.get(aplayerid + ''); + let ph: PlayerHandler = null; + if(oldplayer){ + this._players.forEach((item: PlayerHandler) => { + if(item._player == oldplayer){ + item._player = newplayer; + ph = item; + } + }); + this._players.delete(oldplayer); + } + if(ph){ + this._players.set(newplayer, ph); + this._playerids.set(aplayerid + '', newplayer); + } }; public getPlayer(aplayer: Player): PlayerHandler{