1
0
Fork 0

(svn r17346) [0.7] -Backport from trunk:

- Document: how to manually install AIs
- Fix: Memory leak when trying to bankrupt the local company, other minor improvements of bankruptcy (r17342, r17341, r17340)
- Fix: Not all non-ASCII characters were entered with escapes in the About window (r17309)
- Fix: [NoAI] AIRail::RemoveRailTrack returned ERR_PRECONDITION_ERROR for road/rail-crossings (r17307)
release/0.7
rubidium 2009-09-01 13:16:53 +00:00
parent 36497b584e
commit ad2fbaddc1
18 changed files with 78 additions and 55 deletions

View File

@ -441,7 +441,7 @@
- Fix: [Win32] Some keypress combinations could be handled twice [FS#2206] (r14363)
- Fix: The ownership of roadtiles was not properly set for very old savegames (including TTD's) making it impossible to remove some pieces of road [FS#2311] (r14359)
- Fix: Desync due to randomly ordered vehicle hash by flooding and road vehicle overtake/following (r14356, r14258)
- Fix: Signs were not updated on company bankrupcy/sell, and thus could have the colour of invalid player (r14348)
- Fix: Signs were not updated on company bankruptcy/sell, and thus could have the colour of invalid player (r14348)
- Fix: Delete the RenameSignWindow when 'its' sign is deleted (r14345)
- Fix: Signs from old savegames were lost (causing little memory leaks) (r14340)
- Fix: When a company was renamed and then manager was renamed before building anything, company name changed (r14328)
@ -549,7 +549,7 @@
- Fix: Clear the memory for the new AI during the loading of a savegame so it does not try to execute commands generated in a different savegame, which could be resulting in the AI trying to give orders to stations that do not exist (r13505)
- Fix: Drawing of zoomed out partial sprites could cause deadlocks or crashes (r13502)
- Fix: First determine where to *exactly* build a house before asking a NewGRF whether the location is good instead of possibly moving the house a tile after the NewGRF said the location is good (r13489)
- Fix: Track was not removed on company bankrupcy when there was a ship on lower halftile (r13488)
- Fix: Track was not removed on company bankrupcty when there was a ship on lower halftile (r13488)
- Fix: Let ships also navigate on half-tile sloped watery rail tiles (r13485)
- Fix: Division by zero when one would press 'd' (skip order) when there's no order (r13409)
- Fix: Do not crash when resolving vehicle sprite groups with zero sprites (r13397)
@ -1471,7 +1471,7 @@
- Fix: Some keyboard events possibly lost under high CPU load, handle keyboard input in place instead of global variables magic [FS#279] (r7153)
- Fix: "Position of Main Toolbar" option is not honored when starting new game or loading saved [FS#172] (r7130)
- Fix: Synchronize the engine-renew settings of a player when joining a multiplayer game (r7126)
- Fix: Several errors/glitches related to multiplayer and bankrupcy (mainly server), and non-updated company-information (r7125)
- Fix: Several errors/glitches related to multiplayer and bankrupcty (mainly server), and non-updated company-information (r7125)
- Fix: Cloning a vehicle that has been refitted would incur the expense as running costs, not new vehicles [FS#371] (r7115)
- Fix: Do not let ships enter partial water tiles under bridges; they will travel up land... (r7110)
- Fix: AI tried to build road from the back or side of road stop/depot (r7069)

View File

@ -192,8 +192,18 @@ Do NOT copy files included with OpenTTD into "shared" directories (explained in
the following sections) as sooner or later you will run into graphical glitches
when using other versions of the game.
If you want AIs use the in-game content downloader to download some or download
some from the internet and place them in the ai/ directory.
If you want AIs use the in-game content downloader. If for some reason that is
not possible or you want to use an AI that has not been uploaded to the content
download system download the tar file and place it in the ai/ directory. If the
AI needs libraries you'll have to download those too and put them in the
ai/library/ directory. All AIs and AI Libraries that have been uploaded to
the content download system can be found at http://noai.openttd.org/downloads/
The AIs and libraries can be found their in the form of .tar.gz packages.
OpenTTD can read inside tar files but it does not extract .tar.gz files by
itself.
To figure out which libraries you need for an AI you have to start the AI and
wait for an error message to pop up. The error message will tell you
"couldn't find library 'lib-name'". Download that library and try again.
4.2) OpenTTD directories
---- -------------------------------
@ -502,6 +512,7 @@ Thanks to:
Richard Kempton (RichK67) - Additional airports, initial TGP implementation
Alberto Demichelis - Squirrel scripting language
Markus F.X.J. Oberhumer - MiniLZO for loading old savegames
L. Peter Deutsch - MD5 implementation
Michael Blunck - For revolutionizing TTD with awesome graphics
George - Canal graphics
David Dallaston (Pikka) - Tram tracks

View File

@ -221,7 +221,7 @@
/* static */ bool AIRail::RemoveRailTrack(TileIndex tile, RailTrack rail_track)
{
EnforcePrecondition(false, ::IsValidTile(tile));
EnforcePrecondition(false, ::IsTileType(tile, MP_RAILWAY) && ::IsPlainRailTile(tile));
EnforcePrecondition(false, ::IsPlainRailTile(tile) || ::IsLevelCrossingTile(tile));
EnforcePrecondition(false, GetRailTracks(tile) & rail_track);
EnforcePrecondition(false, KillFirstBit((uint)rail_track) == 0);
@ -404,7 +404,7 @@ static bool IsValidSignalType(int signal_type)
/* static */ bool AIRail::BuildSignal(TileIndex tile, TileIndex front, SignalType signal)
{
EnforcePrecondition(false, AIMap::DistanceManhattan(tile, front) == 1)
EnforcePrecondition(false, ::IsTileType(tile, MP_RAILWAY) && ::IsPlainRailTile(tile));
EnforcePrecondition(false, ::IsPlainRailTile(tile));
EnforcePrecondition(false, ::IsValidSignalType(signal));
Track track = INVALID_TRACK;

View File

@ -626,8 +626,7 @@ static void DisasterTick_Big_Ufo(Vehicle *v)
tile_org = tile = RandomTile();
do {
if (IsTileType(tile, MP_RAILWAY) &&
IsPlainRailTile(tile) &&
if (IsPlainRailTile(tile) &&
IsHumanCompany(GetTileOwner(tile))) {
break;
}

View File

@ -469,6 +469,7 @@ static void CompanyCheckBankrupt(Company *c)
/* If the company has money again, it does not go bankrupt */
if (c->money >= 0) {
c->quarters_of_bankrupcy = 0;
c->bankrupt_asked = 0;
return;
}
@ -521,7 +522,7 @@ static void CompanyCheckBankrupt(Company *c)
* he/she is no long in control of this company. However... when you
* join another company (cheat) the "unowned" company can bankrupt. */
c->bankrupt_asked = MAX_UVALUE(CompanyMask);
c->bankrupt_timeout = 0x456;
free(cni);
break;
}

View File

@ -116,7 +116,7 @@ static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override)
*/
static TrackBits MaskWireBits(TileIndex t, TrackBits tracks)
{
if (!IsTileType(t, MP_RAILWAY) || !IsPlainRailTile(t)) return tracks;
if (!IsPlainRail(t)) return tracks;
TrackdirBits neighbour_tdb = TRACKDIR_BIT_NONE;
for (DiagDirection d = DIAGDIR_BEGIN; d < DIAGDIR_END; d++) {

View File

@ -320,7 +320,7 @@ struct AboutWindow : public Window {
" Owen Rudge (orudge) - Forum host, OS/2 port",
" Peter Nelson (peter1138) - Spiritual descendant from newGRF gods",
" Remko Bijker (Rubidium) - Lead coder and way more",
" Zdenek Sojka (SmatZ) - Bug finder and fixer",
" Zden\xC4\x9Bk Sojka (SmatZ) - Bug finder and fixer",
" Thijs Marinussen (Yexo) - AI Framework",
"",
"Inactive Developers:",
@ -334,23 +334,24 @@ struct AboutWindow : public Window {
" Ludvig Strigeus (ludde) - OpenTTD author, main coder (0.1 - 0.3.3)",
" Serge Paquet (vurlix) - Assistant project manager, coder (0.1 - 0.3.3)",
" Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3.0 - 0.3.6)",
" Benedikt Brüggemeier (skidd13) - Bug fixer and code reworker",
" Benedikt Br\xC3\xBCggemeier (skidd13) - Bug fixer and code reworker",
" Patric Stout (TrueLight) - Programmer (0.3 - pre0.7), sys op (active)",
"",
"Special thanks go out to:",
" Josef Drexler - For his great work on TTDPatch",
" Marcin Grzegorczyk - For his documentation of TTD internals",
" Petr Baudis (pasky) - Many patches, newGRF support",
" Stefan Meißner (sign_de) - For his work on the console",
" Stefan Mei\xC3\x9Fner (sign_de) - For his work on the console",
" Simon Sasburg (HackyKid) - Many bugfixes he has blessed us with",
" Cian Duffy (MYOB) - BeOS port / manual writing",
" Christian Rosentreter (tokai) - MorphOS / AmigaOS port",
" Richard Kempton (richK) - additional airports, initial TGP implementation",
"",
" Alberto Demichelis - Squirrel scripting language © 2003-2008",
" Markus F.X.J. Oberhumer - (Mini)LZO for loading old savegames © 1996-2002",
" Michael Blunck - Pre-Signals and Semaphores © 2003",
" George - Canal/Lock graphics © 2003-2004",
" Alberto Demichelis - Squirrel scripting language \xC2\xA9 2003-2008",
" Markus F.X.J. Oberhumer - (Mini)LZO for loading old savegames \xC2\xA9 1996-2008",
" L. Peter Deutsch - MD5 implementation \xC2\xA9 1999, 2000, 2002",
" Michael Blunck - Pre-Signals and Semaphores \xC2\xA9 2003",
" George - Canal/Lock graphics \xC2\xA9 2003-2004",
" David Dallaston - Tram tracks",
" Marcin Grzegorczyk - Foundations for Tracks on Slopes",
" All Translators - Who made OpenTTD a truly international game",

View File

@ -611,7 +611,7 @@ start_at:
/* Not a regular rail tile?
* Then we can't use the code below, but revert to more general code. */
if (!IsTileType(tile, MP_RAILWAY) || !IsPlainRailTile(tile)) {
if (!IsPlainRailTile(tile)) {
/* We found a tile which is not a normal railway tile.
* Determine which tracks that exist on this tile. */
bits = TrackdirBitsToTrackBits(TrackStatusToTrackdirBits(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0)) & DiagdirReachesTrackdirs(direction));

View File

@ -18,7 +18,7 @@ TrackBits GetReservedTrackbits(TileIndex t)
switch (GetTileType(t)) {
case MP_RAILWAY:
if (IsRailWaypoint(t) || IsRailDepot(t)) return GetRailWaypointReservation(t);
if (IsPlainRailTile(t)) return GetTrackReservation(t);
if (IsPlainRail(t)) return GetTrackReservation(t);
break;
case MP_ROAD:
@ -79,7 +79,7 @@ bool TryReserveRailTrack(TileIndex tile, Track t)
switch (GetTileType(tile)) {
case MP_RAILWAY:
if (IsPlainRailTile(tile)) return TryReserveTrack(tile, t);
if (IsPlainRail(tile)) return TryReserveTrack(tile, t);
if (IsRailWaypoint(tile) || IsRailDepot(tile)) {
if (!GetDepotWaypointReservation(tile)) {
SetDepotWaypointReservation(tile, true);
@ -139,7 +139,7 @@ bool TryReserveRailTrack(TileIndex tile, Track t)
MarkTileDirtyByTile(tile);
break;
}
if (IsPlainRailTile(tile)) UnreserveTrack(tile, t);
if (IsPlainRail(tile)) UnreserveTrack(tile, t);
break;
case MP_ROAD:

View File

@ -118,7 +118,7 @@ static bool CheckTrackCombination(TileIndex tile, TrackBits to_build, uint flags
TrackBits future; // The track layout we want to build
_error_message = STR_1001_IMPOSSIBLE_TRACK_COMBINATION;
if (!IsPlainRailTile(tile)) return false;
if (!IsPlainRail(tile)) return false;
/* So, we have a tile with tracks on it (and possibly signals). Let's see
* what tracks first */
@ -321,7 +321,7 @@ CommandCost CmdBuildSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1, u
case MP_RAILWAY:
if (!CheckTileOwnership(tile)) return CMD_ERROR;
if (!IsPlainRailTile(tile)) return CMD_ERROR;
if (!IsPlainRail(tile)) return CMD_ERROR;
if (!IsCompatibleRail(GetRailType(tile), railtype)) return_cmd_error(STR_1001_IMPOSSIBLE_TRACK_COMBINATION);
@ -481,7 +481,7 @@ CommandCost CmdRemoveSingleRail(TileIndex tile, DoCommandFlag flags, uint32 p1,
case MP_RAILWAY: {
TrackBits present;
if (!IsPlainRailTile(tile) ||
if (!IsPlainRail(tile) ||
(_current_company != OWNER_WATER && !CheckTileOwnership(tile)) ||
!EnsureNoTrainOnTrack(tile, track)) {
return CMD_ERROR;
@ -825,15 +825,15 @@ CommandCost CmdBuildSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1,
if (sigtype > SIGTYPE_LAST) return CMD_ERROR;
if (!ValParamTrackOrientation(track) || !IsTileType(tile, MP_RAILWAY) || !EnsureNoTrainOnTrack(tile, track))
/* You can only build signals on plain rail tiles, and the selected track must exist */
if (!ValParamTrackOrientation(track) || !IsPlainRailTile(tile) ||
!EnsureNoTrainOnTrack(tile, track) || !HasTrack(tile, track)) {
return CMD_ERROR;
}
/* Protect against invalid signal copying */
if (p2 != 0 && (p2 & SignalOnTrack(track)) == 0) return CMD_ERROR;
/* You can only build signals on plain rail tiles, and the selected track must exist */
if (!IsPlainRailTile(tile) || !HasTrack(tile, track)) return CMD_ERROR;
if (!CheckTileOwnership(tile)) return CMD_ERROR;
{
@ -1047,7 +1047,7 @@ static CommandCost CmdSignalTrackHelper(TileIndex tile, DoCommandFlag flags, uin
end_tile = p1;
if (signal_density == 0 || signal_density > 20) return CMD_ERROR;
if (!IsTileType(tile, MP_RAILWAY) || !IsPlainRailTile(tile)) return CMD_ERROR;
if (!IsPlainRailTile(tile)) return CMD_ERROR;
/* for vertical/horizontal tracks, double the given signals density
* since the original amount will be too dense (shorter tracks) */
@ -1172,7 +1172,6 @@ CommandCost CmdRemoveSingleSignal(TileIndex tile, DoCommandFlag flags, uint32 p1
Track track = (Track)GB(p1, 0, 3);
if (!ValParamTrackOrientation(track) ||
!IsTileType(tile, MP_RAILWAY) ||
!IsPlainRailTile(tile) ||
!HasTrack(tile, track) ||
!EnsureNoTrainOnTrack(tile, track) ||
@ -1456,10 +1455,11 @@ static CommandCost ClearTile_Track(TileIndex tile, DoCommandFlag flags)
CommandCost ret;
if (flags & DC_AUTO) {
if (!IsTileOwner(tile, _current_company))
if (!IsTileOwner(tile, _current_company)) {
return_cmd_error(STR_1024_AREA_IS_OWNED_BY_ANOTHER);
}
if (IsPlainRailTile(tile)) {
if (IsPlainRail(tile)) {
return_cmd_error(STR_1008_MUST_REMOVE_RAILROAD_TRACK);
} else {
return_cmd_error(STR_2004_BUILDING_MUST_BE_DEMOLISHED);
@ -1890,7 +1890,7 @@ static void DrawTile_Track(TileInfo *ti)
_drawtile_track_palette = COMPANY_SPRITE_COLOUR(GetTileOwner(ti->tile));
if (IsPlainRailTile(ti->tile)) {
if (IsPlainRail(ti->tile)) {
TrackBits rails = GetTrackBits(ti->tile);
DrawTrackBits(ti, rails);
@ -2060,7 +2060,7 @@ static uint GetSlopeZ_Track(TileIndex tile, uint x, uint y)
Slope tileh = GetTileSlope(tile, &z);
if (tileh == SLOPE_FLAT) return z;
if (IsPlainRailTile(tile)) {
if (IsPlainRail(tile)) {
z += ApplyFoundationToSlope(GetRailFoundation(tileh, GetTrackBits(tile)), &tileh);
return z + GetPartialZ(x & 0xF, y & 0xF, tileh);
} else {
@ -2070,7 +2070,7 @@ static uint GetSlopeZ_Track(TileIndex tile, uint x, uint y)
static Foundation GetFoundation_Track(TileIndex tile, Slope tileh)
{
return IsPlainRailTile(tile) ? GetRailFoundation(tileh, GetTrackBits(tile)) : FlatteningFoundation(tileh);
return IsPlainRail(tile) ? GetRailFoundation(tileh, GetTrackBits(tile)) : FlatteningFoundation(tileh);
}
static void GetAcceptedCargo_Track(TileIndex tile, AcceptedCargo ac)
@ -2096,7 +2096,7 @@ static void TileLoop_Track(TileIndex tile)
/* for non-flat track, use lower part of track
* in other cases, use the highest part with track */
if (IsPlainRailTile(tile)) {
if (IsPlainRail(tile)) {
TrackBits track = GetTrackBits(tile);
Foundation f = GetRailFoundation(slope, track);
@ -2154,7 +2154,7 @@ static void TileLoop_Track(TileIndex tile)
break;
}
if (!IsPlainRailTile(tile)) return;
if (!IsPlainRail(tile)) return;
new_ground = RAIL_GROUND_GRASS;
@ -2176,7 +2176,7 @@ static void TileLoop_Track(TileIndex tile)
(rail & TRACK_BIT_X)
)) {
TileIndex n = tile + TileDiffXY(0, -1);
TrackBits nrail = (IsTileType(n, MP_RAILWAY) && IsPlainRailTile(n) ? GetTrackBits(n) : TRACK_BIT_NONE);
TrackBits nrail = (IsPlainRailTile(n) ? GetTrackBits(n) : TRACK_BIT_NONE);
if (!IsTileType(n, MP_RAILWAY) ||
!IsTileOwner(n, owner) ||
@ -2191,7 +2191,7 @@ static void TileLoop_Track(TileIndex tile)
(rail & TRACK_BIT_X)
)) {
TileIndex n = tile + TileDiffXY(0, 1);
TrackBits nrail = (IsTileType(n, MP_RAILWAY) && IsPlainRailTile(n) ? GetTrackBits(n) : TRACK_BIT_NONE);
TrackBits nrail = (IsPlainRailTile(n) ? GetTrackBits(n) : TRACK_BIT_NONE);
if (!IsTileType(n, MP_RAILWAY) ||
!IsTileOwner(n, owner) ||
@ -2207,7 +2207,7 @@ static void TileLoop_Track(TileIndex tile)
(rail & TRACK_BIT_Y)
)) {
TileIndex n = tile + TileDiffXY(-1, 0);
TrackBits nrail = (IsTileType(n, MP_RAILWAY) && IsPlainRailTile(n) ? GetTrackBits(n) : TRACK_BIT_NONE);
TrackBits nrail = (IsPlainRailTile(n) ? GetTrackBits(n) : TRACK_BIT_NONE);
if (!IsTileType(n, MP_RAILWAY) ||
!IsTileOwner(n, owner) ||
@ -2222,7 +2222,7 @@ static void TileLoop_Track(TileIndex tile)
(rail & TRACK_BIT_Y)
)) {
TileIndex n = tile + TileDiffXY(1, 0);
TrackBits nrail = (IsTileType(n, MP_RAILWAY) && IsPlainRailTile(n) ? GetTrackBits(n) : TRACK_BIT_NONE);
TrackBits nrail = (IsPlainRailTile(n) ? GetTrackBits(n) : TRACK_BIT_NONE);
if (!IsTileType(n, MP_RAILWAY) ||
!IsTileOwner(n, owner) ||
@ -2248,7 +2248,7 @@ set_ground:
static TrackStatus GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
{
/* Case of half tile slope with water. */
if (mode == TRANSPORT_WATER && IsPlainRailTile(tile) && GetRailGroundType(tile) == RAIL_GROUND_WATER) {
if (mode == TRANSPORT_WATER && IsPlainRail(tile) && GetRailGroundType(tile) == RAIL_GROUND_WATER) {
TrackBits tb = GetTrackBits(tile);
switch (tb) {
default: NOT_REACHED();
@ -2551,7 +2551,7 @@ static CommandCost TerraformTile_Track(TileIndex tile, DoCommandFlag flags, uint
{
uint z_old;
Slope tileh_old = GetTileSlope(tile, &z_old);
if (IsPlainRailTile(tile)) {
if (IsPlainRail(tile)) {
TrackBits rail_bits = GetTrackBits(tile);
/* Is there flat water on the lower halftile, that must be cleared expensively? */
bool was_water = (GetRailGroundType(tile) == RAIL_GROUND_WATER && IsSlopeWithOneCornerRaised(tileh_old));

View File

@ -42,12 +42,23 @@ static inline RailTileType GetRailTileType(TileIndex t)
* @pre IsTileType(t, MP_RAILWAY)
* @return true if and only if the tile is normal rail (with or without signals)
*/
static inline bool IsPlainRailTile(TileIndex t)
static inline bool IsPlainRail(TileIndex t)
{
RailTileType rtt = GetRailTileType(t);
return rtt == RAIL_TILE_NORMAL || rtt == RAIL_TILE_SIGNALS;
}
/**
* Checks whether the tile is a rail tile or rail tile with signals.
* @param t the tile to get the information from
* @return true if and only if the tile is normal rail (with or without signals)
*/
static inline bool IsPlainRailTile(TileIndex t)
{
return IsTileType(t, MP_RAILWAY) && IsPlainRail(t);
}
/**
* Checks if a rail tile has signals.
* @param t the tile to get the information from

View File

@ -745,7 +745,7 @@ bool AfterLoadGame()
for (TileIndex t = 0; t < map_size; t++) {
switch (GetTileType(t)) {
case MP_RAILWAY:
if (IsPlainRailTile(t)) {
if (IsPlainRail(t)) {
/* Swap ground type and signal type for plain rail tiles, so the
* ground type uses the same bits as for depots and waypoints. */
uint tmp = GB(_m[t].m4, 0, 4);
@ -1605,7 +1605,7 @@ bool AfterLoadGame()
if (IsLevelCrossing(t)) {
if (!IsValidCompanyID(GetTileOwner(t))) FixOwnerOfRailTrack(t);
}
} else if (IsTileType(t, MP_RAILWAY) && IsPlainRailTile(t)) {
} else if (IsPlainRailTile(t)) {
if (!IsValidCompanyID(GetTileOwner(t))) FixOwnerOfRailTrack(t);
}
}

View File

@ -969,7 +969,7 @@ static const OldChunks _company_chunk[] = {
OCL_SVAR( OC_UINT8, Company, colour ),
OCL_SVAR( OC_UINT8, Company, money_fraction ),
OCL_SVAR( OC_UINT8, Company, quarters_of_bankrupcy ),
OCL_SVAR( OC_UINT8, Company, bankrupt_asked ),
OCL_SVAR( OC_FILE_U8 | OC_VAR_U16, Company, bankrupt_asked ),
OCL_SVAR( OC_FILE_U32 | OC_VAR_I64, Company, bankrupt_value ),
OCL_SVAR( OC_UINT16, Company, bankrupt_timeout ),

View File

@ -2705,7 +2705,7 @@ static PBSTileInfo ExtendTrainReservation(const Vehicle *v, TrackBits *new_track
}
/* Station, depot or waypoint are a possible target. */
bool target_seen = ft.m_is_station || (IsTileType(ft.m_new_tile, MP_RAILWAY) && !IsPlainRailTile(ft.m_new_tile));
bool target_seen = ft.m_is_station || (IsTileType(ft.m_new_tile, MP_RAILWAY) && !IsPlainRail(ft.m_new_tile));
if (target_seen || KillFirstBit(ft.m_new_td_bits) != TRACKDIR_BIT_NONE) {
/* Choice found or possible target encountered.
* On finding a possible target, we need to stop and let the pathfinder handle the

View File

@ -394,7 +394,7 @@ CommandCost CmdBuildBridge(TileIndex end_tile, DoCommandFlag flags, uint32 p1, u
break;
case MP_RAILWAY:
if (!IsPlainRailTile(tile)) goto not_valid_below;
if (!IsPlainRail(tile)) goto not_valid_below;
break;
case MP_ROAD:

View File

@ -434,7 +434,7 @@ static bool IsWateredTile(TileIndex tile, Direction from)
case MP_RAILWAY:
if (GetRailGroundType(tile) == RAIL_GROUND_WATER) {
assert(IsPlainRailTile(tile));
assert(IsPlainRail(tile));
switch (GetTileSlope(tile, NULL)) {
case SLOPE_W: return (from == DIR_SE) || (from == DIR_E) || (from == DIR_NE);
case SLOPE_S: return (from == DIR_NE) || (from == DIR_N) || (from == DIR_NW);
@ -905,7 +905,7 @@ void DoFloodTile(TileIndex target)
/* make coast.. */
switch (GetTileType(target)) {
case MP_RAILWAY: {
if (!IsPlainRailTile(target)) break;
if (!IsPlainRail(target)) break;
FloodVehicles(target);
flooded = FloodHalftile(target);
break;
@ -962,7 +962,7 @@ static void DoDryUp(TileIndex tile)
switch (GetTileType(tile)) {
case MP_RAILWAY:
assert(IsPlainRailTile(tile));
assert(IsPlainRail(tile));
assert(GetRailGroundType(tile) == RAIL_GROUND_WATER);
RailGroundType new_ground;

View File

@ -202,7 +202,7 @@ protected:
FORCEINLINE bool QueryNewTileTrackStatus()
{
CPerfStart perf(*m_pPerf);
if (IsRailTT() && GetTileType(m_new_tile) == MP_RAILWAY && IsPlainRailTile(m_new_tile)) {
if (IsRailTT() && IsPlainRailTile(m_new_tile)) {
m_new_td_bits = (TrackdirBits)(GetTrackBits(m_new_tile) * 0x101);
} else {
m_new_td_bits = TrackStatusToTrackdirBits(GetTileTrackStatus(m_new_tile, TT(), m_veh != NULL ? m_veh->u.road.compatible_roadtypes : 0));

View File

@ -115,7 +115,7 @@ public:
FORCEINLINE int SwitchCost(TileIndex tile1, TileIndex tile2, DiagDirection exitdir)
{
if (IsTileType(tile1, MP_RAILWAY) && IsTileType(tile2, MP_RAILWAY) && IsPlainRailTile(tile1) && IsPlainRailTile(tile2)) {
if (IsPlainRailTile(tile1) && IsPlainRailTile(tile2)) {
bool t1 = KillFirstBit(GetTrackBits(tile1) & DiagdirReachesTracks(ReverseDiagDir(exitdir))) != TRACK_BIT_NONE;
bool t2 = KillFirstBit(GetTrackBits(tile2) & DiagdirReachesTracks(exitdir)) != TRACK_BIT_NONE;
if (t1 && t2) return Yapf().PfGetSettings().rail_doubleslip_penalty;