public void StartDuel(Player player) { if (State != GameState.Lobby) return; if (!player.Equals(HostPlayer)) return; for (int i = 0; i < Players.Length; i++) { if (!IsReady[i]) return; if (Players[i] == null) return; } State = GameState.Hand; if (Program.Config.STDOUT == true) Console.WriteLine("::::startduel"); SendToAll(new GameServerPacket(StocMessage.DuelStart)); SendHand(); }
public void KickPlayer(Player player, int pos) { if (State != GameState.Lobby) return; if (pos >= Players.Length || !player.Equals(HostPlayer) || player.Equals(Players[pos]) || Players[pos] == null) return; RemovePlayer(Players[pos]); if (Program.Config.STDOUT == true) Console.WriteLine("::::left-slot|{1}|{0}", player.Name, pos); }
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 StartDuel(Player player) { if (State != GameState.Lobby) return; if (!player.Equals(HostPlayer)) return; for (int i = 0; i < Players.Length; i++) { if (!IsReady[i]){ return; } if (Players[i] == null){ return; } } State = GameState.Hand; SendToAll(new GameServerPacket(StocMessage.DuelStart)); SendHand(); }
public void KickPlayer(Player player, int pos) { if (State != GameState.Lobby) return; if (pos >= Players.Length || !player.Equals(HostPlayer) || player.Equals(Players[pos]) || Players[pos] == null) return; RemovePlayer(Players[pos]); }
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); } }