public void MoveToDuelist(Player player) { if (State != GameState.Lobby) { return; } int pos = GetAvailablePlayerPos(); if (pos == -1) { return; } if (player.Type != (int)PlayerType.Observer) { if (!IsTag || IsReady[player.Type]) { return; } pos = (player.Type + 1) % 4; while (Players[pos] != null) { pos = (pos + 1) % 4; } GameServerPacket change = new GameServerPacket(StocMessage.HsPlayerChange); change.Write((byte)((player.Type << 4) + pos)); SendToAll(change); Players[player.Type] = null; Players[pos] = player; player.Type = pos; player.SendTypeChange(); } else { Observers.Remove(player); Players[pos] = player; player.Type = pos; GameServerPacket enter = new GameServerPacket(StocMessage.HsPlayerEnter); enter.Write(player.Name, 20); enter.Write((byte)pos); //padding enter.Write((byte)0); SendToAll(enter); GameServerPacket nwatch = new GameServerPacket(StocMessage.HsWatchChange); nwatch.Write((short)Observers.Count); SendToAll(nwatch); player.SendTypeChange(); } }
public void MoveToObserver(Player player) { if (State != GameState.Lobby) { return; } if (player.Type == (int)PlayerType.Observer) { return; } if (IsReady[player.Type]) { return; } int oldType = player.Type; Players[player.Type] = null; IsReady[player.Type] = false; Observers.Add(player); BinaryWriter change = GamePacketFactory.Create(StocMessage.HsPlayerChange); change.Write((byte)((player.Type << 4) + (int)PlayerChange.Observe)); SendToAll(change); player.Type = (int)PlayerType.Observer; player.SendTypeChange(); if (OnPlayerMove != null) { OnPlayerMove(this, new PlayerMoveEventArgs(player, oldType)); } }
public void MoveToObserver(Player player) { if (State != GameState.Lobby) { return; } if (player.Type == (int)PlayerType.Observer) { return; } if (IsReady[player.Type]) { return; } Players[player.Type] = null; IsReady[player.Type] = false; Observers.Add(player); GameServerPacket change = new GameServerPacket(StocMessage.HsPlayerChange); change.Write((byte)((player.Type << 4) + (int)PlayerChange.Observe)); SendToAll(change); player.Type = (int)PlayerType.Observer; player.SendTypeChange(); }
public void MoveToDuelist(Player player) { if (State != GameState.Lobby) { return; } int pos = GetAvailablePlayerPos(); if (pos == -1) { return; } int oldType = player.Type; if (player.Type != (int)PlayerType.Observer) { if (!IsTag || IsReady[player.Type]) { return; } pos = (player.Type + 1) % 4; while (Players[pos] != null) { pos = (pos + 1) % 4; } BinaryWriter change = GamePacketFactory.Create(StocMessage.HsPlayerChange); change.Write((byte)((player.Type << 4) + pos)); SendToAll(change); Players[player.Type] = null; Players[pos] = player; player.Type = pos; player.SendTypeChange(); } else { Observers.Remove(player); Players[pos] = player; player.Type = pos; BinaryWriter enter = GamePacketFactory.Create(StocMessage.HsPlayerEnter); enter.WriteUnicode(player.Name, 20); enter.Write((byte)pos); //padding enter.Write((byte)0); SendToAll(enter); BinaryWriter nwatch = GamePacketFactory.Create(StocMessage.HsWatchChange); nwatch.Write((short)Observers.Count); SendToAll(nwatch); player.SendTypeChange(); } if (OnPlayerMove != null) { OnPlayerMove(this, new PlayerMoveEventArgs(player, oldType)); } }
public void AddPlayer(Player player) { if (State != GameState.Lobby) { player.Type = (int)PlayerType.Observer; if (State != GameState.End) { SendJoinGame(player); player.SendTypeChange(); player.Send(GamePacketFactory.Create(StocMessage.DuelStart)); Observers.Add(player); if (State == GameState.Duel) { InitNewSpectator(player); } } if (OnPlayerJoin != null) { OnPlayerJoin(this, new PlayerEventArgs(player)); } return; } if (HostPlayer == null) { HostPlayer = player; } int pos = GetAvailablePlayerPos(); if (pos != -1) { BinaryWriter enter = GamePacketFactory.Create(StocMessage.HsPlayerEnter); enter.WriteUnicode(player.Name, 20); enter.Write((byte)pos); //padding enter.Write((byte)0); SendToAll(enter); Players[pos] = player; IsReady[pos] = false; player.Type = pos; } else { BinaryWriter watch = GamePacketFactory.Create(StocMessage.HsWatchChange); watch.Write((short)(Observers.Count + 1)); SendToAll(watch); player.Type = (int)PlayerType.Observer; Observers.Add(player); } SendJoinGame(player); player.SendTypeChange(); for (int i = 0; i < Players.Length; i++) { if (Players[i] != null) { BinaryWriter enter = GamePacketFactory.Create(StocMessage.HsPlayerEnter); enter.WriteUnicode(Players[i].Name, 20); enter.Write((byte)i); //padding enter.Write((byte)0); player.Send(enter); if (IsReady[i]) { BinaryWriter change = GamePacketFactory.Create(StocMessage.HsPlayerChange); change.Write((byte)((i << 4) + (int)PlayerChange.Ready)); player.Send(change); } } } if (Observers.Count > 0) { BinaryWriter nwatch = GamePacketFactory.Create(StocMessage.HsWatchChange); nwatch.Write((short)Observers.Count); player.Send(nwatch); } if (OnPlayerJoin != null) { OnPlayerJoin(this, new PlayerEventArgs(player)); } }
public void MoveToObserver(Player player) { if (State != GameState.Lobby) return; if (player.Type == (int)PlayerType.Observer) return; if (IsReady[player.Type]) return; int oldType = player.Type; Players[player.Type] = null; IsReady[player.Type] = false; Observers.Add(player); GamePacketWriter change = new GamePacketWriter(StocMessage.HsPlayerChange); change.Write((byte)((player.Type << 4) + (int)PlayerChange.Observe)); SendToAll(change); player.Type = (int)PlayerType.Observer; player.SendTypeChange(); if (OnPlayerMove != null) { OnPlayerMove(this, new PlayerMoveEventArgs(player, oldType)); } }
public void MoveToDuelist(Player player) { if (State != GameState.Lobby) return; int pos = GetAvailablePlayerPos(); if (pos == -1) return; int oldType = player.Type; if (player.Type != (int)PlayerType.Observer) { if (!IsTag || IsReady[player.Type]) return; pos = (player.Type + 1) % 4; while (Players[pos] != null) pos = (pos + 1) % 4; GamePacketWriter change = new GamePacketWriter(StocMessage.HsPlayerChange); change.Write((byte)((player.Type << 4) + pos)); SendToAll(change); Players[player.Type] = null; Players[pos] = player; player.Type = pos; player.SendTypeChange(); } else { Observers.Remove(player); Players[pos] = player; player.Type = pos; GamePacketWriter enter = new GamePacketWriter(StocMessage.HsPlayerEnter); enter.Write(player.Name, 20); enter.Write((byte)pos); //padding enter.Write((byte)0); SendToAll(enter); GamePacketWriter nwatch = new GamePacketWriter(StocMessage.HsWatchChange); nwatch.Write((short)Observers.Count); SendToAll(nwatch); player.SendTypeChange(); } if (OnPlayerMove != null) { OnPlayerMove(this, new PlayerMoveEventArgs(player, oldType)); } }
public void AddPlayer(Player player) { if (State != GameState.Lobby) { player.Type = (int)PlayerType.Observer; if (State != GameState.End) { SendJoinGame(player); player.SendTypeChange(); player.Send(new GamePacketWriter(StocMessage.DuelStart)); Observers.Add(player); if (State == GameState.Duel) InitNewSpectator(player); } if (OnPlayerJoin != null) { OnPlayerJoin(this, new PlayerEventArgs(player)); } return; } if (HostPlayer == null) HostPlayer = player; int pos = GetAvailablePlayerPos(); if (pos != -1) { GamePacketWriter enter = new GamePacketWriter(StocMessage.HsPlayerEnter); enter.Write(player.Name, 20); enter.Write((byte)pos); //padding enter.Write((byte)0); SendToAll(enter); Players[pos] = player; IsReady[pos] = false; player.Type = pos; } else { GamePacketWriter watch = new GamePacketWriter(StocMessage.HsWatchChange); watch.Write((short)(Observers.Count + 1)); SendToAll(watch); player.Type = (int)PlayerType.Observer; Observers.Add(player); } SendJoinGame(player); player.SendTypeChange(); for (int i = 0; i < Players.Length; i++) { if (Players[i] != null) { GamePacketWriter enter = new GamePacketWriter(StocMessage.HsPlayerEnter); enter.Write(Players[i].Name, 20); enter.Write((byte)i); //padding enter.Write((byte)0); player.Send(enter); if (IsReady[i]) { GamePacketWriter change = new GamePacketWriter(StocMessage.HsPlayerChange); change.Write((byte)((i << 4) + (int)PlayerChange.Ready)); player.Send(change); } } } if (Observers.Count > 0) { GamePacketWriter nwatch = new GamePacketWriter(StocMessage.HsWatchChange); nwatch.Write((short)Observers.Count); player.Send(nwatch); } if (OnPlayerJoin != null) { OnPlayerJoin(this, new PlayerEventArgs(player)); } }
public void MoveToObserver(Player player) { if (State != GameState.Lobby) return; if (player.Type == (int)PlayerType.Observer) return; if (IsReady[player.Type]) return; Players[player.Type] = null; IsReady[player.Type] = false; Observers.Add(player); GameServerPacket change = new GameServerPacket(StocMessage.HsPlayerChange); change.Write((byte)((player.Type << 4) + (int)PlayerChange.Observe)); SendToAll(change); player.Type = (int)PlayerType.Observer; player.SendTypeChange(); }