public static CrystalCavePuddleGen Create(
            WormNode sourceNode,
            int tileX,
            int tileY,
            int length,
            int forkCount = 0)
        {
            var randForks = new List <WormGen>(forkCount);

            for (int i = 0; i < forkCount; i++)
            {
                int randLen = WorldGen.genRand.Next(
                    Math.Max(length / 2, 3),
                    Math.Max(length, 4)
                    );

                var fork = CrystalCaveGen.Create(0, 0, randLen, 0);

                randForks.Add(fork);
            }

            return(new CrystalCavePuddleGen(sourceNode, tileX, tileY, length, randForks));
        }
Exemplo n.º 2
0
        ////////////////

        public static CrystalCaveSystemGen Create(
            GenerationProgress progress,
            float thisProgress,
            int tileX,
            int tileY)
        {
            int totalLength = WorldGen.genRand.Next(
                CrystalCaveSystemGen.MinimumLength,
                CrystalCaveSystemGen.MaximumLength
                );
            int len1 = WorldGen.genRand.Next(35, totalLength - 35);
            int len2 = totalLength - len1;

            int totalForks = WorldGen.genRand.Next(4, 8);
            int forks1     = WorldGen.genRand.Next(2, totalForks);
            int forks2     = totalForks - forks1;

            var wormDefs = new List <WormGen> {
                CrystalCaveGen.Create(tileX, tileY, len1, forks1),
                CrystalCaveGen.Create(tileX, tileY, len2, forks2),
            };

            return(new CrystalCaveSystemGen(progress, thisProgress, wormDefs));
        }