コード例 #1
0
 private static float ApplySupport(ref float popularOptionSupportPoints, ref float overridingOptionSupportPoints, KingdomDecision decision)
 {
     if (popularOptionSupportPoints == overridingOptionSupportPoints + 1.0)
     {
         ++overridingOptionSupportPoints;
         return(decision.GetInfluenceCostOfSupport(Supporter.SupportWeights.SlightlyFavor));
     }
     else if (popularOptionSupportPoints == overridingOptionSupportPoints + 2.0)
     {
         overridingOptionSupportPoints += 2f;
         return(decision.GetInfluenceCostOfSupport(Supporter.SupportWeights.StronglyFavor));
     }
     else if (popularOptionSupportPoints > overridingOptionSupportPoints + 2.0)
     {
         overridingOptionSupportPoints += 3f;
         return(decision.GetInfluenceCostOfSupport(Supporter.SupportWeights.FullyPush));
     }
     else
     {
         return(0.0f);
     }
 }
コード例 #2
0
        private static float GetBaseCompensationCost(ODCostCalculationMethod calculationMethod, DecisionOutcome popularOption, DecisionOutcome overridingOption, KingdomDecision decision)
        {
            float PopularOptionSupportPoints    = popularOption.TotalSupportPoints;
            float OverridingOptionSupportPoints = overridingOption.TotalSupportPoints + 3f;

            switch (calculationMethod)
            {
            case ODCostCalculationMethod.FlatInfluenceOverride:
                return(popularOption.SupporterList.Sum(sup => decision.GetInfluenceCostOfSupport(sup.SupportWeight)));

            case ODCostCalculationMethod.SlightlyFavor:
                return((PopularOptionSupportPoints - OverridingOptionSupportPoints) * decision.GetInfluenceCostOfSupport(Supporter.SupportWeights.SlightlyFavor));

            case ODCostCalculationMethod.StronglyFavor:
                return((PopularOptionSupportPoints - OverridingOptionSupportPoints) * decision.GetInfluenceCostOfSupport(Supporter.SupportWeights.StronglyFavor));

            case ODCostCalculationMethod.FullyPush:
                return((PopularOptionSupportPoints - OverridingOptionSupportPoints) * decision.GetInfluenceCostOfSupport(Supporter.SupportWeights.FullyPush));

            default:
                throw new ArgumentOutOfRangeException(nameof(Settings.Instance.OverrideDecisionCostCalculationMethod.SelectedValue.EnumValue), Settings.Instance.OverrideDecisionCostCalculationMethod.SelectedValue.EnumValue, null);
            }
        }