////////////////

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

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

                var fork = new CrystalCaveGen(
                    tileX: 0,
                    tileY: 0,
                    length: randLen,
                    forks: new List <WormGen>(),
                    minRadius: CrystalCaveGen.MinNormalRadius,
                    maxRadius: CrystalCaveGen.MaxNormalRadius,
                    starterNodeCount: 0,
                    finisherNodeCount: CrystalCaveGen.NodeRangeOfEnd
                    );

                randForks.Add(fork);
            }

            return(new CrystalCaveGen(
                       tileX: tileX,
                       tileY: tileY,
                       length: length,
                       forks: randForks,
                       minRadius: CrystalCaveGen.MinNormalRadius,
                       maxRadius: CrystalCaveGen.MaxNormalRadius,
                       starterNodeCount: CrystalCaveGen.NodeRangeOfStart,
                       finisherNodeCount: CrystalCaveGen.NodeRangeOfEnd
                       ));
        }
        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.º 3
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));
        }