Exemple #1
0
    public bool IsTransitionPossible(DiplomaticContractState destinationState)
    {
        bool result = false;

        switch (this.State)
        {
        case DiplomaticContractState.Negotiation:
        {
            DiplomaticTerm.PropositionMethod propositionMethod = this.GetPropositionMethod();
            if (destinationState == DiplomaticContractState.Proposed && propositionMethod == DiplomaticTerm.PropositionMethod.Negotiation)
            {
                result = this.IsValid();
            }
            if (destinationState == DiplomaticContractState.Signed && propositionMethod == DiplomaticTerm.PropositionMethod.Declaration)
            {
                result = this.IsValid();
            }
            if ((destinationState == DiplomaticContractState.Refused || destinationState == DiplomaticContractState.Ignored) && propositionMethod == DiplomaticTerm.PropositionMethod.Negotiation)
            {
                result = true;
            }
            break;
        }

        case DiplomaticContractState.Proposed:
            if (destinationState == DiplomaticContractState.Signed)
            {
                result = this.IsValid();
            }
            if (destinationState == DiplomaticContractState.Refused)
            {
                result = true;
            }
            if (destinationState == DiplomaticContractState.Negotiation)
            {
                result = true;
            }
            if (destinationState == DiplomaticContractState.Ignored)
            {
                for (int i = 0; i < this.terms.Count; i++)
                {
                    DiplomaticTerm diplomaticTerm = this.terms[i];
                    Diagnostics.Assert(diplomaticTerm != null);
                    if (diplomaticTerm.EmpireWhichProvides.Index == this.EmpireWhichProposes.Index && !diplomaticTerm.CanApply(this, new string[0]))
                    {
                        result = true;
                    }
                }
            }
            break;
        }
        return(result);
    }
    private bool CanContractBeValidated()
    {
        if (this.DiplomaticContract.Terms.Count == 0)
        {
            return(false);
        }
        float cost = this.ComputeContractCost(this.DiplomaticContract.EmpireWhichProposes);

        if (!this.DepartmentOfTheTreasury.CanAfford(cost, SimulationProperties.EmpirePoint))
        {
            return(false);
        }
        DiplomaticTerm.PropositionMethod propositionMethod = this.DiplomaticContract.GetPropositionMethod();
        return((propositionMethod == DiplomaticTerm.PropositionMethod.Negotiation && this.DiplomaticContract.IsTransitionPossible(DiplomaticContractState.Proposed)) || (propositionMethod == DiplomaticTerm.PropositionMethod.Declaration && this.DiplomaticContract.IsTransitionPossible(DiplomaticContractState.Signed)));
    }