Files
@ r5520:aa1247f0561e
Branch filter:
Location: cpp/openttd-patchpack/source/src/tunnel_map.c - annotation
r5520:aa1247f0561e
954 B
text/x-c
(svn r7823) -Fix (r7384 / r7368 / r3757 / r7388): News windows could still cause crashes because
DeleteVehicleNews shuffles around _news_items which can wreak havoc with the NewsItem*
of a currently open news window. While here also correctly update _current_news and
_forced_news for the same reasons. Should really work now.
DeleteVehicleNews shuffles around _news_items which can wreak havoc with the NewsItem*
of a currently open news window. While here also correctly update _current_news and
_forced_news for the same reasons. Should really work now.
r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 | /* $Id$ */
#include "stdafx.h"
#include "openttd.h"
#include "tile.h"
#include "tunnel_map.h"
TileIndex GetOtherTunnelEnd(TileIndex tile)
{
DiagDirection dir = GetTunnelDirection(tile);
TileIndexDiff delta = TileOffsByDiagDir(dir);
uint z = GetTileZ(tile);
dir = ReverseDiagDir(dir);
do {
tile += delta;
} while (
!IsTunnelTile(tile) ||
GetTunnelDirection(tile) != dir ||
GetTileZ(tile) != z
);
return tile;
}
static bool IsTunnelInWayDir(TileIndex tile, uint z, DiagDirection dir)
{
TileIndexDiff delta = TileOffsByDiagDir(dir);
uint height;
do {
tile -= delta;
height = GetTileZ(tile);
} while (z < height);
return
z == height &&
IsTunnelTile(tile) &&
GetTunnelDirection(tile) == dir;
}
bool IsTunnelInWay(TileIndex tile, uint z)
{
return
IsTunnelInWayDir(tile, z, DIAGDIR_NE) ||
IsTunnelInWayDir(tile, z, DIAGDIR_SE) ||
IsTunnelInWayDir(tile, z, DIAGDIR_SW) ||
IsTunnelInWayDir(tile, z, DIAGDIR_NW);
}
|