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