srcstr = srcstr + str(src[s])\r
if s < len(src)-1:\r
srcstr = srcstr + ","\r
+ \r
+ # Failsafe\r
+ if srcstr == "0":\r
+ srcstr = ""\r
+ numbers = list(range(1, 16))\r
+ src = random.sample(numbers, 5)\r
+ for s in range(len(src)):\r
+ srcstr = srcstr + str(src[s])\r
+ if s < len(src)-1:\r
+ srcstr = srcstr + ","\r
\r
# Patch and border sources. There can only be one for each.\r
brd_src = None\r
self._vstep = self._findVerticalStepping()\r
self._latlngfld = self.latlng_folder([lat,lng])\r
self._prep = prep\r
+ self._tiles_visited = []\r
mstr_msg("orthographic", "Initiated with LAT: " + str(lat) + ", LNG: " + str(lng))\r
\r
\r
\r
# We now need to "raytrace" the resources for correct placement\r
mstr_msg("orthographic", "Performing resource plamement tracing for tile")\r
+\r
+ # Let's set up an array which keeps track of all used tiles, per resource\r
+ \r
+ for l in mstr_ortho_layers:\r
+ self._tiles_visited.append([(l[0], l[1])]) # Store tag and value as tuple for each possible resource\r
\r
for lat_grid in range(1, maxlatlng[0]+1):\r
for lng_grid in range(1, maxlatlng[1]+1):\r
\r
for l in range(0, len(fnlines)):\r
lyr = fnlines[l].split(" ")\r
+ \r
+ vstidx = -1\r
+ for vst in range(0, len(self._tiles_visited)):\r
+ if self._tiles_visited[vst][0][0] == lyr[0] and self._tiles_visited[vst][0][1] == lyr[1]:\r
+ vstidx = vst\r
+ break\r
+ \r
tp = mstr_tileprep(self._lat, self._long, lat_grid, lng_grid, lyr[0], lyr[1], None, False)\r
tp._setLatLngFold(self._latlngfld)\r
+ tp._setAlreadyVisitedTiles(self._tiles_visited[vstidx])\r
tp._placeTileSources(mlat, mlng)\r
+ self.adjust_tiles_visited(lyr[0], lyr[1], tp._all_visited)\r
+\r
\r
+ # Adjust the tiles visited for one resource\r
+ def adjust_tiles_visited(self, tag, value, tiles):\r
+ lyridx = -1\r
+ for v in range(0, len(self._tiles_visited)):\r
+ if self._tiles_visited[v][0][0] == tag and self._tiles_visited[v][0][1] == value:\r
+ lyridx = v\r
+ break\r
+ \r
+ for t in range(1, len(tiles)):\r
+ fnd = False\r
+ for v in range(1, len(self._tiles_visited[lyridx])):\r
+ if self._tiles_visited[lyridx][v][0] == tiles[t][0] and self._tiles_visited[lyridx][v][1] == tiles[t][1]:\r
+ fnd = True\r
+ break\r
+ if fnd == False:\r
+ self._tiles_visited[lyridx].append((tiles[t][0], tiles[t][1]))\r
\r
# Generates X-Plane 11/12 scenery with\r
# - the finished orthos\r
self._mask = mask
latlngfld = xplane_latlng_folder([lat, lng])
self._tileinfo = mstr_tileinfo(lat, lng, v, h, latlngfld)
+ self._already_visited = [] # To be filled later
+ self._all_visited = []
# Special case for the final step of an ortho
self._is_completion = is_completion
return visited
+ # Let the orthographic class pass all visited tiles for this resource
+ def _setAlreadyVisitedTiles(self, tiles):
+ self._already_visited = tiles
+
+
# Walk through the now existing data files and make sure we always pick the correct
# sources for every tile, thus evading previous edge detection errors
def _placeTileSources(self, mlat, mlng):
vst = self._scanConnections((visited[v][0], visited[v][1]))
for l in range(len(vst)):
if self._checkVisited(visited, (vst[l][0], vst[l][1])) == False: visited.append((vst[l][0], vst[l][1]))
+
+ self._all_visited = visited
# We will take the resource of the original tile we have started
# our scan from. If there is nothing, we can choose.
# This is then used for all visited tiles.
tv = self._tile_v
th = self._tile_h
- resstring = self._getResourceInfo(tv, th)
- if resstring == "0" or resstring == "": resstring = self._selectResources()
+ resstring = self._selectResources()
for v in range(0, len(visited)):
self._storeResourceInfo(visited[v][0], visited[v][1], resstring)