Пример #1
0
        public override ILandObject Clone()
        {
            GrassLandObject grassLandObject = new GrassLandObject(this.Position.X, this.Position.Y, this.Altitude, this.LandGrassType);

            grassLandObject.SetTransition(this.LandTransition);

            return(grassLandObject);
        }
Пример #2
0
        public override ILandObject Clone(LandTransition wallLandTransition)
        {
            LandTransition landTransitionOverWall = this.GetLandTransitionOverWall(wallLandTransition);

            if (landTransitionOverWall != LandTransition.NONE)
            {
                GrassLandObject grassLandObject = new GrassLandObject(this.Position.X, this.Position.Y, this.Altitude, this.LandGrassType);
                grassLandObject.SetTransition(landTransitionOverWall);

                return(grassLandObject);
            }
            return(null);
        }
Пример #3
0
        public override int GenerateLandLayer(WorldGenerator worldGenerator, ILandChunk landChunk, IntRect area, int seed, int minAltitude, int maxAltitude)
        {
            ALandLayerGenerator altitudeLandLayerGenerator = worldGenerator.Generators["altitude"];

            ALandLayerGenerator cliffLandLayerGenerator = worldGenerator.Generators["cliff"];

            bool[,] subArea = new bool[3, 3];

            bool isThereGrass = false;

            this.ConstructGrassArea(worldGenerator, area);

            for (int i = 0; i < area.Height; i++)
            {
                for (int j = 0; j < area.Width; j++)
                {
                    int altitude = altitudeLandLayerGenerator.GetComputedPowerAt(j, i);

                    int altitudeOffset = cliffLandLayerGenerator.GetComputedPowerAt(j, i);

                    if ((altitude > -2 || (altitude == -2 && altitudeOffset > 0)) &&
                        altitude < 7)
                    {
                        LandCreationHelper.GetComputedLandType(this, area, i, j, out int grassTypeInt, out int secondTypeInt, out LandTransition landTransition, out LandTransition secondLandTransition);
                        //this.GetComputedLandType(area, i, j, out GrassType grassType, out GrassType secondType, out LandTransition landTransition, out LandTransition secondLandTransition);

                        GrassType grassType  = (GrassType)grassTypeInt;
                        GrassType secondType = (GrassType)secondTypeInt;

                        GroundLandObject groundLandObject       = null;
                        GroundLandObject secondGroundLandObject = null;

                        if (grassType != GrassType.NONE)
                        {
                            groundLandObject = new GrassLandObject(area.Left + j, area.Top + i, altitude, grassType);
                            groundLandObject.SetTransition(landTransition);

                            isThereGrass = true;
                        }

                        if (secondType != grassType && secondType != GrassType.NONE)
                        {
                            secondGroundLandObject = new GrassLandObject(area.Left + j, area.Top + i, 0, secondType);
                            secondGroundLandObject.SetTransition(secondLandTransition);

                            isThereGrass = true;
                        }

                        bool onlyGround = altitude == 6 && altitudeOffset > 0;
                        AssignGround(landChunk, i, j, altitude, altitudeOffset, groundLandObject, secondGroundLandObject, onlyGround);
                    }
                }
            }

            if (isThereGrass)
            {
                landChunk.AddTypeInChunk(typeof(GrassLandObject));
            }

            return(seed);
        }