Support relaxed end points in TilingPath

Whilst TilingPath has always allowed deviating from the path points
between the start and end point, it didn't allow deviation from the
start or end points themselves. This change allows the end point to
deviate if the tiling would otherwise fail. The start point remains
strictly positioned, as before. Loop end points (which must necessarily
match the start) also remain strict.

The ExperimentalMapGenerator is modified to benefit from the relaxed
tiling constraints. As a result, failed map generation due to tiling
failures is much rarer, and will make some otherwise very inflexible
template categories viable for tiling.

Includes some impure refactoring around the treatment of start,
intermediate, and end segments. As such, this changes map generation
output, even for maps which already tiled perfectly.

A previous workaround used for CnC road templates, whereby additional
segments were defined for road ending templates, is now redundant and
cleaned up.
This commit is contained in:
Ashley Newson
2025-04-06 23:24:42 +01:00
committed by Gustas Kažukauskas
parent b2acc653a0
commit f09959ecba
7 changed files with 204 additions and 226 deletions

View File

@@ -1069,16 +1069,6 @@ Templates:
Inner: Road
Points: 2,1, 2,0
Start: Clear.U
Segment@1extended:
End: Clear.D
Inner: Road
Points: 1,0, 1,1, 1,2
Start: Road.D
Segment@2extended:
End: Road.U
Inner: Road
Points: 2,2, 2,1, 2,0
Start: Clear.U
Template@94:
Id: 94
Images: d02.des
@@ -1100,16 +1090,6 @@ Templates:
Inner: Road
Points: 1,1, 2,1
Start: Clear.R
Segment@1extended:
End: Clear.L
Inner: Road
Points: 2,0, 1,0, 0,0
Start: Road.L
Segment@2extended:
End: Road.R
Inner: Road
Points: 0,1, 1,1, 2,1
Start: Clear.R
Template@95:
Id: 95
Images: d03.des
@@ -1129,16 +1109,6 @@ Templates:
Inner: Road
Points: 0,1, 0,2
Start: Clear.D
Segment@1extended:
End: Clear.U
Inner: Road
Points: 1,2, 1,1, 1,0
Start: Road.U
Segment@2extended:
End: Road.D
Inner: Road
Points: 0,0, 0,1, 0,2
Start: Clear.D
Template@96:
Id: 96
Images: d04.des
@@ -1159,16 +1129,6 @@ Templates:
Inner: Road
Points: 1,1, 0,1
Start: Clear.L
Segment@1extended:
End: Clear.R
Inner: Road
Points: 0,2, 1,2, 2,2
Start: Road.R
Segment@2extended:
End: Road.L
Inner: Road
Points: 2,1, 1,1, 0,1
Start: Clear.L
Template@97:
Id: 97
Images: d05.des

View File

@@ -1143,16 +1143,6 @@ Templates:
Inner: Road
Points: 2,1, 2,0
Start: Clear.U
Segment@1extended:
End: Clear.D
Inner: Road
Points: 1,0, 1,1, 1,2
Start: Road.D
Segment@2extended:
End: Road.U
Inner: Road
Points: 2,2, 2,1, 2,0
Start: Clear.U
Template@94:
Id: 94
Images: d02.sno
@@ -1174,16 +1164,6 @@ Templates:
Inner: Road
Points: 1,1, 2,1
Start: Clear.R
Segment@1extended:
End: Clear.L
Inner: Road
Points: 2,0, 1,0, 0,0
Start: Road.L
Segment@2extended:
End: Road.R
Inner: Road
Points: 0,1, 1,1, 2,1
Start: Clear.R
Template@95:
Id: 95
Images: d03.sno
@@ -1203,16 +1183,6 @@ Templates:
Inner: Road
Points: 0,1, 0,2
Start: Clear.D
Segment@1extended:
End: Clear.U
Inner: Road
Points: 1,2, 1,1, 1,0
Start: Road.U
Segment@2extended:
End: Road.D
Inner: Road
Points: 0,0, 0,1, 0,2
Start: Clear.D
Template@96:
Id: 96
Images: d04.sno
@@ -1233,16 +1203,6 @@ Templates:
Inner: Road
Points: 1,1, 0,1
Start: Clear.L
Segment@1extended:
End: Clear.R
Inner: Road
Points: 0,2, 1,2, 2,2
Start: Road.R
Segment@2extended:
End: Road.L
Inner: Road
Points: 2,1, 1,1, 0,1
Start: Clear.L
Template@97:
Id: 97
Images: d05.sno

View File

@@ -1131,16 +1131,6 @@ Templates:
Inner: Road
Points: 2,1, 2,0
Start: Clear.U
Segment@1extended:
End: Clear.D
Inner: Road
Points: 1,0, 1,1, 1,2
Start: Road.D
Segment@2extended:
End: Road.U
Inner: Road
Points: 2,2, 2,1, 2,0
Start: Clear.U
Template@94:
Id: 94
Images: d02.tem
@@ -1162,16 +1152,6 @@ Templates:
Inner: Road
Points: 1,1, 2,1
Start: Clear.R
Segment@1extended:
End: Clear.L
Inner: Road
Points: 2,0, 1,0, 0,0
Start: Road.L
Segment@2extended:
End: Road.R
Inner: Road
Points: 0,1, 1,1, 2,1
Start: Clear.R
Template@95:
Id: 95
Images: d03.tem
@@ -1191,16 +1171,6 @@ Templates:
Inner: Road
Points: 0,1, 0,2
Start: Clear.D
Segment@1extended:
End: Clear.U
Inner: Road
Points: 1,2, 1,1, 1,0
Start: Road.U
Segment@2extended:
End: Road.D
Inner: Road
Points: 0,0, 0,1, 0,2
Start: Clear.D
Template@96:
Id: 96
Images: d04.tem
@@ -1221,16 +1191,6 @@ Templates:
Inner: Road
Points: 1,1, 0,1
Start: Clear.L
Segment@1extended:
End: Clear.R
Inner: Road
Points: 0,2, 1,2, 2,2
Start: Road.R
Segment@2extended:
End: Road.L
Inner: Road
Points: 2,1, 1,1, 0,1
Start: Clear.L
Template@97:
Id: 97
Images: d05.tem

View File

@@ -1115,16 +1115,6 @@ Templates:
Inner: Road
Points: 2,1, 2,0
Start: Clear.U
Segment@1extended:
End: Clear.D
Inner: Road
Points: 1,0, 1,1, 1,2
Start: Road.D
Segment@2extended:
End: Road.U
Inner: Road
Points: 2,2, 2,1, 2,0
Start: Clear.U
Template@94:
Id: 94
Images: d02.win
@@ -1146,16 +1136,6 @@ Templates:
Inner: Road
Points: 1,1, 2,1
Start: Clear.R
Segment@1extended:
End: Clear.L
Inner: Road
Points: 2,0, 1,0, 0,0
Start: Road.L
Segment@2extended:
End: Road.R
Inner: Road
Points: 0,1, 1,1, 2,1
Start: Clear.R
Template@95:
Id: 95
Images: d03.win
@@ -1175,16 +1155,6 @@ Templates:
Inner: Road
Points: 0,1, 0,2
Start: Clear.D
Segment@1extended:
End: Clear.U
Inner: Road
Points: 1,2, 1,1, 1,0
Start: Road.U
Segment@2extended:
End: Road.D
Inner: Road
Points: 0,0, 0,1, 0,2
Start: Clear.D
Template@96:
Id: 96
Images: d04.win
@@ -1205,16 +1175,6 @@ Templates:
Inner: Road
Points: 1,1, 0,1
Start: Clear.L
Segment@1extended:
End: Clear.R
Inner: Road
Points: 0,2, 1,2, 2,2
Start: Road.R
Segment@2extended:
End: Road.L
Inner: Road
Points: 2,1, 1,1, 0,1
Start: Clear.L
Template@97:
Id: 97
Images: d05.win