Example #1
0
        public World(int size, double foodScale = .1, double waterScale = .4,
                     int baseHp    = 1000, int baseEnergy = 1000,
                     int baseFood  = 1000, int baseWater  = 1000,
                     int healCost  = 50, int healAmount   = 100,
                     int hpDrain   = 5, int energyDrain   = 50,
                     int foodDrain = 25, int waterDrain   = 50)
        {
            Init = new InitWorld(size, foodScale, waterScale,
                                 baseHp, baseEnergy,
                                 baseFood, baseWater,
                                 healCost, healAmount,
                                 hpDrain, energyDrain,
                                 foodDrain, waterDrain);

            _food  = Init.StartingFood;
            _water = Init.StartingWater;
        }
Example #2
0
        public InitLifeform(InitWorld bases, IReadOnlyList <double> scales, IReadOnlyList <int> chances)
        {
            Hp     = (int)(bases.BaseHp * scales[0]);
            Energy = (int)(bases.BaseEnergy * scales[1]);
            Food   = (int)(bases.BaseFood * scales[2]);
            Water  = (int)(bases.BaseWater * scales[3]);

            HpScale     = scales[0];
            EnergyScale = scales[1];
            FoodScale   = scales[2];
            WaterScale  = scales[3];

            HealCostScale   = scales[4];
            HealAmountScale = scales[5];

            HpDrainScale     = scales[6];
            EnergyDrainScale = scales[7];
            FoodDrainScale   = scales[8];
            WaterDrainScale  = scales[9];

            HealThresholdScale  = scales[10];
            SleepThresholdScale = scales[11];
            EatThresholdScale   = scales[12];
            DrinkThresholdScale = scales[13];

            HealThreshold  = (int)(Hp * HealThresholdScale);
            SleepThreshold = (int)(Energy * SleepThresholdScale);
            EatThreshold   = (int)(Food * EatThresholdScale);
            DrinkThreshold = (int)(Water * DrinkThresholdScale);

            HpDrain     = (int)(bases.HpDrain * HpDrainScale);
            EnergyDrain = (int)(bases.EnergyDrain * EnergyDrainScale);
            FoodDrain   = (int)(bases.FoodDrain * FoodDrainScale);
            WaterDrain  = (int)(bases.WaterDrain * WaterDrainScale);

            HealCost   = (int)(bases.HealCost * HealCostScale);
            HealAmount = (int)(bases.HealAmount * HealAmountScale);

            EatChance             = chances[0];
            EatChanceRangeLower   = chances[1];
            EatChanceRangeUpper   = chances[2];
            DrinkChance           = chances[3];
            DrinkChanceRangeLower = chances[4];
            DrinkChanceRangeUpper = chances[5];
        }
Example #3
0
        public static string InitToCSV(InitWorld init)
        {
            if (init == null)
            {
                Console.WriteLine("InitWorld was null.");
                return("");
            }

            FieldInfo[] fields = typeof(InitWorld).GetFields();
            string      csv    = fields[0].GetValue(init).ToString();

            for (int i = 1; i < fields.Length; ++i)
            {
                csv += $",{fields[i].GetValue(init)}";
            }

            return(csv);
        }
Example #4
0
        public static InitWorld CSVToInitWorld(string csv)
        {
            object init = new InitWorld();

            FieldInfo[] fields = typeof(InitWorld).GetFields();
            double[]    values = Array.ConvertAll(csv.Split(','), double.Parse);

            if (fields.Length != values.Length)
            {
                Console.WriteLine($"Number of values must match the number of InitWorld properties. v:{values.Length}");
                return(null);
            }

            for (int i = 0; i < fields.Length; ++i)
            {
                fields[i].SetValue(init, values[i]);
            }

            return((InitWorld)init);
        }
Example #5
0
 private static InitLifeform Init(InitWorld bases, int species)
 {
     return(new InitLifeform(bases, SCALES[species], CHANCES[species]));
 }