public override ILandObject Clone() { GrassLandObject grassLandObject = new GrassLandObject(this.Position.X, this.Position.Y, this.Altitude, this.LandGrassType); grassLandObject.SetTransition(this.LandTransition); return(grassLandObject); }
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); }
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); }