Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
    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);
    }