public void OnCaptureResult(CaptureTheFlagCaptureResultEnum result)
        {
            if (GameNetwork.IsDedicatedServer || !GameNetwork.MyPeer.IsSynchronized)
            {
                return;
            }
            MissionPeer component = GameNetwork.MyPeer.GetComponent <MissionPeer>();

            switch (result)
            {
            case CaptureTheFlagCaptureResultEnum.AttackersWin:
                if (component == null)
                {
                    break;
                }
                SoundEvent.PlaySound2D(component.Team.Side == BattleSideEnum.Attacker ? "event:/ui/mission/multiplayer/mp_victory" : "event:/ui/mission/multiplayer/mp_defeat");
                break;

            case CaptureTheFlagCaptureResultEnum.DefendersWin:
                if (component == null)
                {
                    break;
                }
                SoundEvent.PlaySound2D(component.Team.Side == BattleSideEnum.Defender ? "event:/ui/mission/multiplayer/mp_victory" : "event:/ui/mission/multiplayer/mp_defeat");
                break;
            }
        }
        protected void OnRaised()
        {
            CaptureTheFlagCaptureResultEnum result = CaptureTheFlagCaptureResultEnum.AttackersWin;

            if (this.Captured != null)
            {
                this.Captured(result);
            }
            this._status = CaptureTheFlagCapturePointSiege.FlagStatusEnum.None;
        }
Exemplo n.º 3
0
        private void HandleRoundEnd(CaptureTheFlagCaptureResultEnum roundResult)
        {
            AgentVictoryLogic missionBehaviour = this.Mission.GetMissionBehaviour <AgentVictoryLogic>();

            if (missionBehaviour == null)
            {
                return;
            }
            if (roundResult != CaptureTheFlagCaptureResultEnum.AttackersWin)
            {
                if (roundResult != CaptureTheFlagCaptureResultEnum.DefendersWin)
                {
                    return;
                }
                missionBehaviour.SetTimersOfVictoryReactions(BattleSideEnum.Defender);
            }
            else
            {
                missionBehaviour.SetTimersOfVictoryReactions(BattleSideEnum.Attacker);
            }
        }
 protected virtual void OnRoundEnd()
 {
     if (this._captureResult == CaptureTheFlagCaptureResultEnum.NotCaptured)
     {
         this._captureResult = CaptureTheFlagCaptureResultEnum.DefendersWin;
     }
     if (this._captureResult == CaptureTheFlagCaptureResultEnum.NotCaptured)
     {
         return;
     }
     if (this.OnCaptured != null)
     {
         this.OnCaptured(this._captureResult);
     }
     this.OnCaptureResult(this._captureResult);
     if (this._captureResult == CaptureTheFlagCaptureResultEnum.DefendersWin || this._captureResult == CaptureTheFlagCaptureResultEnum.AttackersWin)
     {
         return;
     }
     int captureResult = (int)this._captureResult;
 }
Exemplo n.º 5
0
        private void OnRoundEnd()
        {
            foreach (FlagCapturePoint allCapturePoint in this.AllCapturePoints)
            {
                if (!allCapturePoint.IsDeactivated)
                {
                    allCapturePoint.SetMoveNone();
                }
            }
            RoundEndReason roundEndReason = RoundEndReason.Invalid;
            bool           flag1          = (double)this.RoundController.RemainingRoundTime <= 0.0 && !this.CheckIfOvertime();
            int            num1           = -1;

            for (int index = 0; index < 2; ++index)
            {
                int num2 = index * 2 - 1;
                if (flag1 && (double)num2 * (double)this._morale > 0.0 || !flag1 && (double)num2 * (double)this._morale >= 1.0)
                {
                    num1 = index;
                    break;
                }
            }
            CaptureTheFlagCaptureResultEnum roundResult = CaptureTheFlagCaptureResultEnum.NotCaptured;

            if (num1 >= 0)
            {
                roundResult = num1 == 0 ? CaptureTheFlagCaptureResultEnum.DefendersWin : CaptureTheFlagCaptureResultEnum.AttackersWin;
                this.RoundController.RoundWinner = num1 == 0 ? BattleSideEnum.Defender : BattleSideEnum.Attacker;
                roundEndReason = flag1 ? RoundEndReason.RoundTimeEnded : RoundEndReason.GameModeSpecificEnded;
            }
            else
            {
                bool flag2 = this.Mission.AttackerTeam.ActiveAgents.Count > 0;
                bool flag3 = this.Mission.DefenderTeam.ActiveAgents.Count > 0;
                if (flag2 & flag3)
                {
                    if ((double)this._morale > 0.0)
                    {
                        roundResult = CaptureTheFlagCaptureResultEnum.AttackersWin;
                        this.RoundController.RoundWinner = BattleSideEnum.Attacker;
                    }
                    else if ((double)this._morale < 0.0)
                    {
                        roundResult = CaptureTheFlagCaptureResultEnum.DefendersWin;
                        this.RoundController.RoundWinner = BattleSideEnum.Defender;
                    }
                    else
                    {
                        roundResult = CaptureTheFlagCaptureResultEnum.Draw;
                        this.RoundController.RoundWinner = BattleSideEnum.None;
                    }
                    roundEndReason = RoundEndReason.RoundTimeEnded;
                }
                else if (flag2)
                {
                    roundResult = CaptureTheFlagCaptureResultEnum.AttackersWin;
                    this.RoundController.RoundWinner = BattleSideEnum.Attacker;
                    roundEndReason = RoundEndReason.SideDepleted;
                }
                else if (flag3)
                {
                    roundResult = CaptureTheFlagCaptureResultEnum.DefendersWin;
                    this.RoundController.RoundWinner = BattleSideEnum.Defender;
                    roundEndReason = RoundEndReason.SideDepleted;
                }
                else
                {
                    foreach (NetworkCommunicator networkPeer in GameNetwork.NetworkPeers)
                    {
                        MissionPeer component = networkPeer.GetComponent <MissionPeer>();
                        if (component?.Team != null && component.Team.Side != BattleSideEnum.None)
                        {
                            string strValue = MultiplayerOptions.OptionType.CultureTeam1.GetStrValue();
                            if (component.Team.Side != BattleSideEnum.Attacker)
                            {
                                strValue = MultiplayerOptions.OptionType.CultureTeam2.GetStrValue();
                            }
                            if (this.GetCurrentGoldForPeer(component) >= MultiplayerClassDivisions.GetMinimumTroopCost(MBObjectManager.Instance.GetObject <BasicCultureObject>(strValue)))
                            {
                                this.RoundController.RoundWinner = component.Team.Side;
                                roundEndReason = RoundEndReason.SideDepleted;
                                roundResult    = component.Team.Side == BattleSideEnum.Attacker ? CaptureTheFlagCaptureResultEnum.AttackersWin : CaptureTheFlagCaptureResultEnum.DefendersWin;
                                break;
                            }
                        }
                    }
                }
            }
            if (roundResult == CaptureTheFlagCaptureResultEnum.NotCaptured)
            {
                return;
            }
            this.RoundController.RoundEndReason = roundEndReason;
            this.HandleRoundEnd(roundResult);
        }
 private void CapturePointCaptured(CaptureTheFlagCaptureResultEnum result) => this._captureResult = result;
 private void OnRoundStarted() => this._captureResult = CaptureTheFlagCaptureResultEnum.NotCaptured;
 public override void OnMissionRestart()
 {
     this._captureResult  = CaptureTheFlagCaptureResultEnum.NotCaptured;
     this._captureTimeOut = false;
 }