public override void RemovePlayer(GamePeer peer, ExitRequest exitReq, SendParameters sendParameters) { BaccaratPlayer player = playerManager.GetPlayer(peer) as BaccaratPlayer; playersBetDic.Remove(player); seatsDic.Remove(player.seat); base.RemovePlayer(peer, exitReq, sendParameters); CheckAllBet(); }
public virtual void RemovePlayer(GamePeer peer, ExitRequest exitReq, SendParameters sendParameters) { lock (syncRoot) { if (playerManager.HasPlayer(peer) == false) { return; //already removed. } BroadcastMessageHandler -= peer.OnBroadcastMessage; peer.OnLeaveHandler -= OnPeerLeave; PlayerLeaveEvent leaveEvent = new PlayerLeaveEvent(); leaveEvent.Actor = playerManager.GetPlayer(peer).key.ID; EventData eventData = new EventData(EventCode.PlayerLeave, leaveEvent); BroadcastMessage(peer, eventData, sendParameters); playerManager.RemovePlayer(peer); } }
public void HandleExitOperation(GamePeer peer, OperationRequest operationRequest, SendParameters sendParameters) { var exitRequest = new ExitRequest(peer.Protocol, operationRequest); if (!peer.ValidateOperation(exitRequest, sendParameters)) { return; } var room = FindPeerRoom(peer); if (room != null) { room.ExecutionFiber.Enqueue(() => room.Leave(peer)); } peer.Leave(); }