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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }