Merge branch 'master' into jgrpp
# Conflicts: # src/lang/afrikaans.txt # src/lang/basque.txt # src/lang/belarusian.txt # src/lang/brazilian_portuguese.txt # src/lang/bulgarian.txt # src/lang/catalan.txt # src/lang/croatian.txt # src/lang/czech.txt # src/lang/danish.txt # src/lang/dutch.txt # src/lang/english.txt # src/lang/english_AU.txt # src/lang/english_US.txt # src/lang/estonian.txt # src/lang/finnish.txt # src/lang/french.txt # src/lang/gaelic.txt # src/lang/galician.txt # src/lang/german.txt # src/lang/greek.txt # src/lang/hebrew.txt # src/lang/hungarian.txt # src/lang/icelandic.txt # src/lang/indonesian.txt # src/lang/irish.txt # src/lang/italian.txt # src/lang/japanese.txt # src/lang/korean.txt # src/lang/latin.txt # src/lang/latvian.txt # src/lang/lithuanian.txt # src/lang/luxembourgish.txt # src/lang/norwegian_bokmal.txt # src/lang/norwegian_nynorsk.txt # src/lang/polish.txt # src/lang/portuguese.txt # src/lang/romanian.txt # src/lang/russian.txt # src/lang/serbian.txt # src/lang/simplified_chinese.txt # src/lang/slovak.txt # src/lang/slovenian.txt # src/lang/spanish.txt # src/lang/spanish_MX.txt # src/lang/swedish.txt # src/lang/tamil.txt # src/lang/thai.txt # src/lang/traditional_chinese.txt # src/lang/turkish.txt # src/lang/ukrainian.txt # src/lang/unfinished/persian.txt # src/lang/vietnamese.txt # src/lang/welsh.txt # src/rail_cmd.cpp # src/station_cmd.cpp
This commit is contained in:
@@ -530,9 +530,21 @@ static Track ChooseShipTrack(Ship *v, TileIndex tile, DiagDirection enterdir, Tr
|
||||
return track;
|
||||
}
|
||||
|
||||
static inline TrackBits GetAvailShipTracks(TileIndex tile, DiagDirection dir)
|
||||
/**
|
||||
* Get the available water tracks on a tile for a ship entering a tile.
|
||||
* @param tile The tile about to enter.
|
||||
* @param dir The entry direction.
|
||||
* @param trackdir The trackdir the ship has on the old tile.
|
||||
* @return The available trackbits on the next tile.
|
||||
*/
|
||||
static inline TrackBits GetAvailShipTracks(TileIndex tile, DiagDirection dir, Trackdir trackdir)
|
||||
{
|
||||
return GetTileShipTrackStatus(tile) & DiagdirReachesTracks(dir);
|
||||
TrackBits tracks = GetTileShipTrackStatus(tile) & DiagdirReachesTracks(dir);
|
||||
|
||||
/* Do not remove 90 degree turns for OPF, as it isn't able to find paths taking it into account. */
|
||||
if (_settings_game.pf.forbid_90_deg && _settings_game.pf.pathfinder_for_ships != VPF_OPF) tracks &= ~TrackCrossesTracks(TrackdirToTrack(trackdir));
|
||||
|
||||
return tracks;
|
||||
}
|
||||
|
||||
static const byte _ship_subcoord[4][6][3] = {
|
||||
@@ -690,7 +702,7 @@ static void CheckDistanceBetweenShips(TileIndex tile, Ship *v, TrackBits tracks,
|
||||
|
||||
if (HasVehicleOnPos(tile_check, &scc, FindShipOnTile)) continue;
|
||||
|
||||
TrackBits bits = GetAvailShipTracks(tile_check, _ship_search_directions[track][diagdir]);
|
||||
TrackBits bits = GetTileShipTrackStatus(tile_check) & DiagdirReachesTracks(_ship_search_directions[track][diagdir]);
|
||||
if (!IsDiagonalTrack(track)) bits &= TRACK_BIT_CROSS; // No 90 degree turns.
|
||||
|
||||
if (bits != INVALID_TRACK_BIT && bits != TRACK_BIT_NONE) {
|
||||
@@ -847,7 +859,7 @@ static void ShipController(Ship *v)
|
||||
|
||||
DiagDirection diagdir = DiagdirBetweenTiles(gp.old_tile, gp.new_tile);
|
||||
assert(diagdir != INVALID_DIAGDIR);
|
||||
tracks = GetAvailShipTracks(gp.new_tile, diagdir);
|
||||
tracks = GetAvailShipTracks(gp.new_tile, diagdir, v->GetVehicleTrackdir());
|
||||
if (tracks == TRACK_BIT_NONE) goto reverse_direction;
|
||||
|
||||
/* Choose a direction, and continue if we find one */
|
||||
|
Reference in New Issue
Block a user