public override bool Check(IDiplomaticContract diplomaticContract, global::Empire empireWhichProvides, global::Empire empireWhichReceives) { global::Game game = Services.GetService <IGameService>().Game as global::Game; IDiplomaticContractRepositoryService service = game.Services.GetService <IDiplomaticContractRepositoryService>(); Predicate <DiplomaticContract> match = (DiplomaticContract contract) => (contract.EmpireWhichProposes == empireWhichProvides && contract.EmpireWhichReceives == empireWhichReceives) || (contract.EmpireWhichProposes == empireWhichReceives && contract.EmpireWhichReceives == empireWhichProvides); int num = -100; bool flag = false; foreach (DiplomaticContract diplomaticContract2 in service.FindAll(match)) { if (diplomaticContract2.State == DiplomaticContractState.Signed) { string[] diplomaticTermNames = this.DiplomaticTermNames; for (int i = 0; i < diplomaticTermNames.Length; i++) { string termname = diplomaticTermNames[i]; if (termname.Contains("ToWar")) { flag = true; } if (!this.OnlyWhenProposer) { if (diplomaticContract2.Terms.Any((DiplomaticTerm term) => term.Definition.Name.ToString() == termname)) { num = Mathf.Max(num, diplomaticContract2.TurnAtTheBeginningOfTheState); } } else if (diplomaticContract2.Terms.Any((DiplomaticTerm term) => term.Definition.Name.ToString() == termname && term.EmpireWhichProvides == empireWhichProvides)) { num = Mathf.Max(num, diplomaticContract2.TurnAtTheBeginningOfTheState); } } } } if (flag) { match = ((DiplomaticContract contract) => contract.EmpireWhichProposes == empireWhichProvides || contract.EmpireWhichReceives == empireWhichProvides); Func <DiplomaticTerm, bool> < > 9__4; foreach (DiplomaticContract diplomaticContract3 in service.FindAll(match)) { if (diplomaticContract3.State == DiplomaticContractState.Signed) { IEnumerable <DiplomaticTerm> terms = diplomaticContract3.Terms; Func <DiplomaticTerm, bool> predicate; if ((predicate = < > 9__4) == null) { predicate = (< > 9__4 = ((DiplomaticTerm term) => term is DiplomaticTermProposal && term.EmpireWhichProvides == empireWhichProvides && (term as DiplomaticTermProposal).ChosenEmpire == empireWhichReceives && term.Definition.Name == "AskToDeclareWar")); } if (terms.Any(predicate)) { num = Mathf.Max(num, diplomaticContract3.TurnAtTheBeginningOfTheState); } } } } return(base.Inverted ^ game.Turn - num >= this.Cooldown); }
protected override IEnumerator OnShow(params object[] parameters) { yield return(base.OnShow(parameters)); base.StartCoroutine(this.ShowWhileHover()); if (Amplitude.Unity.Framework.Application.Version.Accessibility <= Accessibility.Private) { IPlayerControllerRepositoryService playerControllerRepository = base.Game.Services.GetService <IPlayerControllerRepositoryService>(); Diagnostics.Assert(playerControllerRepository != null); Game game = base.Game as Game; IDiplomaticContractRepositoryService diplomacyService = game.Services.GetService <IDiplomaticContractRepositoryService>(); Diagnostics.Assert(diplomacyService != null); this.existingContracts = diplomacyService.FindAll((DiplomaticContract contract) => contract.EmpireWhichProposes == this.AmbassadorEmpire && contract.EmpireWhichReceives == playerControllerRepository.ActivePlayerController.Empire && contract.State != DiplomaticContractState.Negotiation).ToList <DiplomaticContract>(); this.DebugShowNotifButton.Visible = (this.existingContracts.Count > 0); } else { this.DebugShowNotifButton.Visible = false; } this.RefreshContent(); yield break; }