Beispiel #1
0
        public void EndDuel(bool force)
        {
            if (State == GameState.End)
            {
                return;
            }

            if (State == GameState.Duel)
            {
                if (!Replay.Disabled)
                {
                    Replay.End();
                    byte[]       replayData = Replay.GetContent();
                    BinaryWriter packet     = GamePacketFactory.Create(StocMessage.Replay);
                    packet.Write(replayData);
                    if (Config.GetInt("SRVProReplayMode", 0) != 1)
                    {
                        SendToAll(packet);
                    }
                    else
                    {
                        SendToPlayers(packet);
                    }
                }

                _duel.End();
            }

            if (IsMatch && !force && !MatchIsEnd())
            {
                IsReady[0] = false;
                IsReady[1] = false;
                State      = GameState.Side;
                SideTimer  = DateTime.UtcNow;
                SendToPlayers(GamePacketFactory.Create(StocMessage.ChangeSide));
                SendToObservers(GamePacketFactory.Create(StocMessage.WaitingSide));
            }
            else
            {
                CalculateWinner();
                End();
            }
        }
Beispiel #2
0
        public void EndDuel(bool force)
        {
            if (State == GameState.End)
            {
                return;
            }

            if (State == GameState.Duel)
            {
                if (!Replay.Disabled)
                {
                    Replay.End();
                    byte[]           replayData = Replay.GetContent();
                    GamePacketWriter packet     = new GamePacketWriter(StocMessage.Replay);
                    packet.Write(replayData);
                    SendToAll(packet);
                }

                _duel.End();
            }

            if (_swapped)
            {
                _swapped = false;
                if (IsTag)
                {
                    Player temp = Players[0];
                    Players[0] = Players[2];
                    Players[2] = temp;

                    temp       = Players[1];
                    Players[1] = Players[3];
                    Players[3] = temp;

                    Players[0].Type = 0;
                    Players[1].Type = 1;
                    Players[2].Type = 2;
                    Players[3].Type = 3;
                }
                else
                {
                    Player temp = Players[0];
                    Players[0]      = Players[1];
                    Players[1]      = temp;
                    Players[0].Type = 0;
                    Players[1].Type = 1;
                }
            }

            if (IsMatch && !force && !MatchIsEnd())
            {
                IsReady[0] = false;
                IsReady[1] = false;
                State      = GameState.Side;
                SideTimer  = DateTime.UtcNow;
                SendToPlayers(new GamePacketWriter(StocMessage.ChangeSide));
                SendToObservers(new GamePacketWriter(StocMessage.WaitingSide));
            }
            else
            {
                CalculateWinner();
                End();
            }
        }