Пример #1
0
        static void Prefix(Map map)
        {
            // Adjust the frequency a bit to match the increased stones spawning in the map
            double multiplier = 0.5d * Find.World.NaturalRockTypesIn(map.Tile).ToList().Count;
            // Adjust the octaves to either be more blob-like or scattered -- base value is 6
            int octaves = Rand.RangeInclusive(3, 8);

            RockNoises.rockNoises = new List <RockNoises.RockNoise>();
            foreach (ThingDef current in Find.World.NaturalRockTypesIn(map.Tile))
            {
                RockNoises.RockNoise rockNoise = new RockNoises.RockNoise()
                {
                    rockDef = current,
                    noise   = new Perlin((multiplier * 0.004999999888241291), 2.0, 0.5, octaves, Rand.Range(0, 2147483647), QualityMode.Medium)
                };
                RockNoises.rockNoises.Add(rockNoise);
                NoiseDebugUI.StoreNoiseRender(rockNoise.noise, rockNoise.rockDef + " score", map.Size.ToIntVec2);
            }
        }
Пример #2
0
        public static void UndergroundRockAdder(Map origin, Map newMap)
        {
            var rockNoises = new List <RockNoises.RockNoise>();

            foreach (ThingDef item in Find.World.NaturalRockTypesIn(origin.Tile))
            {
                RockNoises.RockNoise rockNoise = new RockNoises.RockNoise();
                rockNoise.rockDef = item;
                rockNoise.noise   = new Verse.Noise.Perlin(0.004999999888241291, 2.0, 0.5, 6, Rand.Range(0, int.MaxValue), QualityMode.Medium);
                rockNoises.Add(rockNoise);
                NoiseDebugUI.StoreNoiseRender(rockNoise.noise, rockNoise.rockDef + " score", origin.Size.ToIntVec2);
            }

            foreach (IntVec3 cell in origin.AllCells)
            {
                var originTerrain = cell.GetTerrain(origin);
                var newTerrain    = lastTerrain;
                if (!originTerrain.BuildableByPlayer &&
                    originTerrain.defName != "BrokenAsphalt" &&
                    !originTerrain.IsWater)
                {
                    newTerrain  = originTerrain;
                    lastTerrain = originTerrain;
                }
                if (originTerrain.defName != "WaterDeep")
                {
                    newMap.roofGrid.SetRoof(cell, RoofDefOf.RoofRockThick);
                    newMap.terrainGrid.SetTerrain(cell, newTerrain);
                    GenSpawn.Spawn(RockDefAt(cell, origin, rockNoises), cell, newMap);
                }
                else
                {
                    newMap.terrainGrid.SetTerrain(cell, TerrainDefOf.WaterDeep);
                }
            }
        }