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{