private RiverMaker GenerateRiver(Map map) { Tile tile = Find.WorldGrid[map.Tile]; List <Tile.RiverLink> visibleRivers = tile.VisibleRivers; if (visibleRivers != null && visibleRivers.Count != 0) { WorldGrid worldGrid = Find.WorldGrid; int tile2 = map.Tile; Tile.RiverLink riverLink = (from rl in visibleRivers orderby - rl.river.degradeThreshold select rl).First(); float headingFromTo = worldGrid.GetHeadingFromTo(tile2, riverLink.neighbor); float num = Rand.Range(0.3f, 0.7f); IntVec3 size = map.Size; float x = num * (float)size.x; float num2 = Rand.Range(0.3f, 0.7f); IntVec3 size2 = map.Size; Vector3 vector = new Vector3(x, 0f, num2 * (float)size2.z); Vector3 center = vector; float angle = headingFromTo; Tile.RiverLink riverLink2 = (from rl in visibleRivers orderby - rl.river.degradeThreshold select rl).FirstOrDefault(); RiverMaker riverMaker = new RiverMaker(center, angle, riverLink2.river); this.GenerateRiverLookupTexture(map, riverMaker); return(riverMaker); } return(null); }
public static int GetDirection6WayIntFromTo(this WorldGrid grid, int fromTileID, int toTileID) { float headingFromTo = grid.GetHeadingFromTo(fromTileID, toTileID); if (headingFromTo >= 330f || headingFromTo < 30f) { return(0); } if (headingFromTo < 90f) { return(1); } if (headingFromTo < 150f) { return(2); } if (headingFromTo < 210f) { return(3); } if (headingFromTo < 270f) { return(4); } return(5); }
private RiverMaker GenerateRiver(Map map) { Tile tile = Find.WorldGrid[map.Tile]; List <Tile.RiverLink> rivers = tile.Rivers; if (rivers == null || rivers.Count == 0) { return(null); } WorldGrid worldGrid = Find.WorldGrid; int tile2 = map.Tile; Tile.RiverLink riverLink = (from rl in rivers orderby - rl.river.degradeThreshold select rl).First(); float num = worldGrid.GetHeadingFromTo(tile2, riverLink.neighbor); Rot4 a = Find.World.CoastDirectionAt(map.Tile); if (a != Rot4.Invalid) { num = a.AsAngle + (float)Rand.RangeInclusive(-30, 30); } float num2 = Rand.Range(0.3f, 0.7f); IntVec3 size = map.Size; float x = num2 * (float)size.x; float num3 = Rand.Range(0.3f, 0.7f); IntVec3 size2 = map.Size; Vector3 vector = new Vector3(x, 0f, num3 * (float)size2.z); Vector3 center = vector; float angle = num; Tile.RiverLink riverLink2 = (from rl in rivers orderby - rl.river.degradeThreshold select rl).FirstOrDefault(); RiverMaker riverMaker = new RiverMaker(center, angle, riverLink2.river); GenerateRiverLookupTexture(map, riverMaker); return(riverMaker); }