public void RemovePlayer(Player player) { if (player.Equals(HostPlayer) && State == GameState.Lobby) m_room.Close(); else if (player.Type == (int)PlayerType.Observer) { Observers.Remove(player); if (State == GameState.Lobby) { GameServerPacket nwatch = new GameServerPacket(StocMessage.HsWatchChange); nwatch.Write((short)Observers.Count); SendToAll(nwatch); if (Program.Config.STDOUT == true) Console.WriteLine("::::spectator|{0}", Observers.Count); } // if (Program.Config.STDOUT == true) // Console.WriteLine("{0} - disconnected", player.Name); //Need API player.Disconnect(); } else if (State == GameState.Lobby) { Players[player.Type] = null; IsReady[player.Type] = false; GameServerPacket change = new GameServerPacket(StocMessage.HsPlayerChange); change.Write((byte)((player.Type << 4) + (int)PlayerChange.Leave)); if (Program.Config.STDOUT == true) Console.WriteLine("::::left-slot|{1}|{0}", player.Name, player.Type); SendToAll(change); player.Disconnect(); } else Surrender(player, 4, true); }
public void RemovePlayer(Player player) { if(player==null){ return; } if (player.Equals(HostPlayer) && State == GameState.Lobby){ //Logger.WriteLine("HostPlayer is leave", false); m_room.Close(true); } else if (player.Type == (int)PlayerType.Observer) { Observers.Remove(player); if (State == GameState.Lobby) { GameServerPacket nwatch = new GameServerPacket(StocMessage.HsWatchChange); nwatch.Write((short) Observers.Count); SendToAll(nwatch); } player.Disconnect(); } else if (State == GameState.Lobby) { Players[player.Type] = null; IsReady[player.Type] = false; GameServerPacket change = new GameServerPacket(StocMessage.HsPlayerChange); change.Write((byte)((player.Type << 4) + (int) PlayerChange.Leave)); SendToAll(change); player.Disconnect(); } else{ // if(CanPause){ // if(State == GameState.Duel){ // //断线重连 // string name = player.Name; // int pos = player.Type; // if(pos != (int)PlayerType.Observer){ // PlayerNames[pos] = name; // Players[pos] = null; // IsPause = true; // AutoEndTrun = false; // SendToAll(GameManager.getMessage(string.Format(Messages.MSG_DISCONECT // , name, Config.GameTimer),PlayerType.Red)); // return; // } // }else if(State == GameState.Side){ // //断线重连 // IsPause = true; // } // } if(IsEnd){ return; } Surrender(player, 4, true); } }