public BudgetLifeEnergyComb GetBudgetLifeEnergyComb(List <BudgetLifeEnergyComb> exceptionBudgetLifeEnergyComb) { BudgetLifeEnergyComb comb = null; bool needRetry = true; int retryTime = 100; while (needRetry && retryTime > 0) { comb = GetBonusFromMixedBonus(TotalValue, retryTime); if (comb == null) { needRetry = true; } else { needRetry = false; foreach (BudgetLifeEnergyComb c in exceptionBudgetLifeEnergyComb) { if (c.HaveSameMeaningTo(comb)) { needRetry = true; } } if (needRetry) { comb = null; } } retryTime--; } return(comb); }
public bool HaveSameMeaningTo(BudgetLifeEnergyComb o) { if (Budget <= o.Budget && LifeUpperLimit <= o.LifeUpperLimit && EnergyUpperLimit <= o.EnergyUpperLimit) { return(true); } if (Budget >= o.Budget && LifeUpperLimit >= o.LifeUpperLimit && EnergyUpperLimit >= o.EnergyUpperLimit) { return(true); } return(Budget == o.Budget && LifeUpperLimit == o.LifeUpperLimit && EnergyUpperLimit == o.EnergyUpperLimit); }
public static BudgetLifeEnergyComb GetBonusFromMixedBonus(int value, int seed) { Random rd = new Random(seed); int minValue = (int)Math.Ceiling(0.8f * value / 25); int maxValue = (int)Math.Ceiling(1.5f * value / 25); int curCount_25 = rd.Next(minValue, maxValue + 1); int lifeEnergyTotal = rd.Next(0, curCount_25 / 2 + 1); int budget = (curCount_25 - lifeEnergyTotal) * 25; int life = rd.Next(0, lifeEnergyTotal + 1); int energy = lifeEnergyTotal - life; if (budget == 0 && life == 0 && energy == 0) { return(null); } BudgetLifeEnergyComb BudgetLifeEnergyComb = new BudgetLifeEnergyComb(budget, life, energy); return(BudgetLifeEnergyComb); }
public List <Bonus> GetBonusListFromBonusComb(BudgetLifeEnergyComb comb) { List <Bonus> res = new List <Bonus>(); if (comb.Budget != 0) { Bonus_Budget bb = new Bonus_Budget(comb.Budget); res.Add(bb); } if (comb.LifeUpperLimit != 0) { Bonus_LifeUpperLimit bl = new Bonus_LifeUpperLimit(comb.LifeUpperLimit); res.Add(bl); } if (comb.EnergyUpperLimit != 0) { Bonus_EnergyUpperLimit be = new Bonus_EnergyUpperLimit(comb.EnergyUpperLimit); res.Add(be); } return(res); }