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; }
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; }
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; }