Loading

Revision differences

Old revision #pxqgmohafNew revision #p3exd3iwd
47 }  47 }  
48   48   
49 /* AyStar callback for checking whether we reached our destination. */  49 /* AyStar callback for checking whether we reached our destination. */  
50@@ -1056,6 +1082,32 @@  50@@ -1056,6 +1082,45 @@
51             MakeRiver(tile, Random());  51             MakeRiver(tile, Random());  
52             /* Remove desert directly around the river tile. */  52             /* Remove desert directly around the river tile. */  
53             CircularTileSearch(&tile, 5, RiverModifyDesertZone, NULL);  53             CircularTileSearch(&tile, 5, RiverModifyDesertZone, NULL);  
54+  54+  
55+            /* Connect the water if a lock would be build on the inclined slope */  55+//            /* Connect the water if a lock would be build on the inclined slope */
56+            Slope slope = GetTileSlope(path->node.tile);  56+//            int height_tile;
57+            if (IsInclinedSlope(slope)) {  57+//            Slope slope = GetTileSlope(path->node.tile, &height_tile);
58+                DiagDirection dir = GetInclinedSlopeDirection(slope);  58+//            if (IsInclinedSlope(slope)) {
59+                int delta_mid = TileOffsByDiagDir(dir);  59+//                DiagDirection dir = GetInclinedSlopeDirection(slope);
60+                int delta     = TileOffsByDiagDir(ChangeDiagDir(dir, DIAGDIRDIFF_90RIGHT));  60+//                int delta_mid = TileOffsByDiagDir(dir);
61+                TileIndex tile_upper = path->node.tile + 2 * delta_mid;  61+//                int delta     = TileOffsByDiagDir(ChangeDiagDir(dir, DIAGDIRDIFF_90RIGHT));
62+                TileIndex tile_upper_right = tile_upper + delta;  62+//                TileIndex tile_upper = path->node.tile + 2 * delta_mid;
63+                TileIndex tile_upper_right_far = tile_upper_right + delta_mid;  63+//                TileIndex tile_upper_right = tile_upper + delta;
64+                TileIndex tile_upper_left = tile_upper - delta;  64+//                TileIndex tile_upper_right_far = tile_upper_right + delta_mid;
65+                TileIndex tile_upper_left_far = tile_upper_left + delta_mid;  65+//                TileIndex tile_upper_left = tile_upper - delta;
66+                TileIndex tile_lower = path->node.tile - 2 * delta_mid;  66+//                TileIndex tile_upper_left_far = tile_upper_left + delta_mid;
67+                TileIndex tile_lower_right = tile_lower + delta;  67+//                TileIndex tile_lower = path->node.tile - 2 * delta_mid;
68+                TileIndex tile_lower_right_far = tile_lower_right - delta_mid;  68+//                TileIndex tile_lower_right = tile_lower + delta;
69+                TileIndex tile_lower_left = tile_lower - delta;  69+//                TileIndex tile_lower_right_far = tile_lower_right - delta_mid;
70+                TileIndex tile_lower_left_far = tile_lower_left - delta_mid;  70+//                TileIndex tile_lower_left = tile_lower - delta;
71+                TileIndex tiles[] = {tile_upper, tile_upper_right, tile_upper_right_far, tile_upper_left, tile_upper_left_far, tile_lower, tile_lower_right, tile_lower_right_far, tile_lower_left, tile_lower_left_far};  71+//                TileIndex tile_lower_left_far = tile_lower_left - delta_mid;
72+                for (int i = 0; i < lengthof(tiles); i++) {  72+
73+                    if (!IsWaterTile(tiles[i]) && IsTileFlat(tiles[i])) {  73+//                int height_tile_delta;
74+                        MakeRiver(tiles[i], Random());  74+//                TileIndex tiles_lower[] = {tile_lower, tile_lower_right, tile_lower_right_far, tile_lower_left, tile_lower_left_far};
75+                        /* Remove desert directly around the river tile. */  75+//                for (int i = 0; i < lengthof(tiles_lower); i++) {
76+                        CircularTileSearch(&tiles[i], 5, RiverModifyDesertZone, NULL);  76+//                    if (!IsWaterTile(tiles_lower[i]) && (GetTileSlope(tiles_lower[i], &height_tile_delta) == SLOPE_FLAT) && height_tile_delta == height_tile) {
77+                    }  77+//                        MakeRiver(tiles_lower[i], Random());
78+                }  78+//                        /* Remove desert directly around the river tile. */
79+            }  79+//                        CircularTileSearch(&tiles_lower[i], 5, RiverModifyDesertZone, NULL);
   80+//                    }
   81+//                }
   82+//
   83+//                TileIndex tiles_upper[] = {tile_upper, tile_upper_right, tile_upper_right_far, tile_upper_left, tile_upper_left_far};
   84+//                for (int i = 0; i < lengthof(tiles_upper); i++) {
   85+//                    if (!IsWaterTile(tiles_upper[i]) && (GetTileSlope(tiles_upper[i], &height_tile_delta) == SLOPE_FLAT) && height_tile_delta == height_tile + 1) {
   86+//                        MakeRiver(tiles_upper[i], Random());
   87+//                        /* Remove desert directly around the river tile. */
   88+//                        CircularTileSearch(&tiles_upper[i], 5, RiverModifyDesertZone, NULL);
   89+//                    }
   90+//                }
   91+//            }
   92+
80         }  93         }  
81     }  94     }  
82 } 95 }