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 GamePacketWriter(StocMessage.DuelStart)); SendHand(); if (OnGameStart != null) { OnGameStart(this, EventArgs.Empty); } }
public void RemovePlayer(Player player) { if (player.Equals(HostPlayer) && State == GameState.Lobby) { _server.Stop(); return; } if (player.Type == (int)PlayerType.Observer) { Observers.Remove(player); if (State == GameState.Lobby) { GamePacketWriter nwatch = new GamePacketWriter(StocMessage.HsWatchChange); nwatch.Write((short) Observers.Count); SendToAll(nwatch); } player.Disconnect(); } else if (State == GameState.Lobby) { Players[player.Type] = null; IsReady[player.Type] = false; GamePacketWriter change = new GamePacketWriter(StocMessage.HsPlayerChange); change.Write((byte)((player.Type << 4) + (int) PlayerChange.Leave)); SendToAll(change); player.Disconnect(); } else Surrender(player, 4, true); if (OnPlayerLeave != null) { OnPlayerLeave(this, new PlayerEventArgs(player)); } }
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 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(); }