Exemple #1
0
        private int GetExtraMinerals(OreValue ore, Ore.Minerals min)
        {
            int reproLvl = Properties.Settings.Default.repro;
            int reproEffLvl = Properties.Settings.Default.reproEff;
            decimal baseRepro = Properties.Settings.Default.baseRepro;
            bool comp = Properties.Settings.Default.compressed;
            Ore selectedOre = ore.baseOre;
            string name = ore.name;
            int qty = ore.qty;

            List<OreValue> selectedOres = new List<OreValue>();

            decimal multiplier;
            decimal reproAbility = (baseRepro *
                (1.0m + (reproLvl * 0.03m) *
                (1.0m + (reproEffLvl * 0.02m)) *
                (1.0m + (selectedOre.Reprocess * 0.02m)))) / 100;
            decimal taxes = (100m - (decimal)Properties.Settings.Default.taxes) / 100m;
            int quantityMod = comp ? 1 : 100;

            if (name.Contains("10%"))
            {
                //========================================================== 10% Ore
                multiplier = (decimal)selectedOre[(int)min] * 1.10m;
                multiplier *= reproAbility;
                multiplier *= taxes;
                if (multiplier != 0)
                {
                    decimal mineralCount = qty * multiplier;
                    return Convert.ToInt32(mineralCount);
                }
            }
            else if (name.Contains("5%"))
            {
                //========================================================== 5% Ore
                multiplier = (decimal)selectedOre[(int)min] * 1.05m;
                multiplier *= reproAbility;
                multiplier *= taxes;
                if (multiplier != 0)
                {
                    decimal mineralCount = qty * multiplier;
                    return Convert.ToInt32(mineralCount);
                }
            }
            else
            {
                //========================================================== Base Ore
                multiplier = (decimal)selectedOre[(int)min] * 1.00m;
                multiplier *= reproAbility;
                multiplier *= taxes;
                if (multiplier != 0)
                {
                    decimal mineralCount = qty * multiplier;
                    return Convert.ToInt32(mineralCount);
                }
            }

            return 0;
        }
Exemple #2
0
        private static int CompareValue(OreValue x, OreValue y)
        {
            if (x.value == 0)
            {
                if (y.value == 0)
                    return 0;
                return 1;
            }
            bool retVal = x.value > y.value;

            if (retVal)
                return 1;
            else
                if (x.value == y.value)
                    return 0;
            return -1;
        }
Exemple #3
0
        private List<OreValue> CheckMinerals(Ore.Minerals min, decimal requirement)
        {
            int reproLvl = Properties.Settings.Default.repro;
            int reproEffLvl = Properties.Settings.Default.reproEff;
            decimal baseRepro = Properties.Settings.Default.baseRepro;
            bool comp = Properties.Settings.Default.compressed;

            List<OreValue> selectedOres = new List<OreValue>();
            if (requirement > 0 && allSortedOres.Count > 0)
            {
                foreach (Ore item in allSortedOres[(int)min])
                {
                    int val;
                    decimal prelim;
                    decimal multiplier;
                    decimal reproAbility = (baseRepro *
                        (1.0m + (reproLvl * 0.03m) *
                        (1.0m + (reproEffLvl * 0.02m)) *
                        (1.0m + (item.Reprocess * 0.02m)))) / 100;
                    decimal taxes = (100m - (decimal)Properties.Settings.Default.taxes) / 100m;
                    int quantityMod = comp ? 1 : 100;

                    //========================================================== 10% Ore
                    multiplier = (decimal)item[(int)min] * 1.10m;
                    multiplier *= reproAbility;
                    multiplier *= taxes;
                    if (multiplier != 0)
                    {
                        prelim = (requirement / multiplier);
                        val = Convert.ToInt32(prelim + 0.5m);
                        val *= quantityMod;

                        OreValue ten = new OreValue();
                        ten.name = item.TenPercentName;
                        ten.qty = val;
                        ten.value = (decimal)val * item.TenPercentPrice;
                        ten.baseOre = item;

                        selectedOres.Add(ten);
                    }

                    //========================================================== 5% Ore
                    multiplier = (decimal)item[(int)min] * 1.05m;
                    multiplier *= reproAbility;
                    multiplier *= taxes;
                    if (multiplier != 0)
                    {
                        prelim = (requirement / multiplier);
                        val = Convert.ToInt32(prelim + 0.5m);
                        val *= quantityMod;

                        OreValue five = new OreValue();
                        five.name = item.FivePercentName;
                        five.qty = val;
                        five.value = (decimal)val * item.FivePrecentPrice;
                        five.baseOre = item;

                        selectedOres.Add(five);
                    }

                    //========================================================== Base Ore
                    multiplier = (decimal)item[(int)min] * 1.00m;
                    multiplier *= reproAbility;
                    multiplier *= taxes;
                    if (multiplier != 0)
                    {
                        prelim = (requirement / multiplier);
                        val = Convert.ToInt32(prelim + 0.5m);
                        val *= quantityMod;

                        OreValue baseOre = new OreValue();
                        baseOre.name = item.name;
                        baseOre.qty = val;
                        baseOre.value = (decimal)val * item.BasePrice;
                        baseOre.baseOre = item;

                        selectedOres.Add(baseOre);
                    }
                }

                selectedOres.Sort(CompareValue);
            }

            return selectedOres;
        }