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);
    }
Exemple #2
0
    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;
    }