Files
@ r17167:68f47a8db1b5
Branch filter:
Location: cpp/openttd-patchpack/source/src/road_map.cpp - annotation
r17167:68f47a8db1b5
2.4 KiB
text/x-c
(svn r21916) -Fix [FS#4442]: the minimum speed needed for (realistic) acceleration to work properly can sometimes be more than the (temporary) maximum speed causing Clamp to "fail". Make sure that the minimum speed always overrules the maximum speed
r5584:545d748cc681 r5584:545d748cc681 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r9111:983de9c5a848 r6393:f9322fdf4c2c r5584:545d748cc681 r5584:545d748cc681 r8083:8cd2123a0c7c r5584:545d748cc681 r5584:545d748cc681 r17099:f140f6165f35 r17099:f140f6165f35 r17099:f140f6165f35 r17099:f140f6165f35 r17099:f140f6165f35 r17099:f140f6165f35 r17099:f140f6165f35 r17099:f140f6165f35 r17099:f140f6165f35 r17099:f140f6165f35 r17099:f140f6165f35 r17099:f140f6165f35 r17099:f140f6165f35 r17099:f140f6165f35 r17099:f140f6165f35 r17099:f140f6165f35 r8716:fe14dd1f6c9e r5584:545d748cc681 r8563:f734b85d629c r6661:a60bd28b4b57 r5584:545d748cc681 r7370:ef5901b27aca r5584:545d748cc681 r5584:545d748cc681 r6661:a60bd28b4b57 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5587:034e5e185dc2 r6012:6160fb57dc8a r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r8088:0596dcb18b35 r8716:fe14dd1f6c9e r8716:fe14dd1f6c9e r8716:fe14dd1f6c9e r5584:545d748cc681 r5587:034e5e185dc2 r5584:545d748cc681 r5584:545d748cc681 | /* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file road_map.cpp Complex road accessors. */
#include "stdafx.h"
#include "station_map.h"
#include "tunnelbridge_map.h"
/**
* Returns the RoadBits on an arbitrary tile
* Special behaviour:
* - road depots: entrance is treated as road piece
* - road tunnels: entrance is treated as road piece
* - bridge ramps: start of the ramp is treated as road piece
* - bridge middle parts: bridge itself is ignored
*
* If straight_tunnel_bridge_entrance is set a ROAD_X or ROAD_Y
* for bridge ramps and tunnel entrances is returned depending
* on the orientation of the tunnel or bridge.
* @param tile the tile to get the road bits for
* @param rt the road type to get the road bits form
* @param straight_tunnel_bridge_entrance whether to return straight road bits for tunnels/bridges.
* @return the road bits of the given tile
*/
RoadBits GetAnyRoadBits(TileIndex tile, RoadType rt, bool straight_tunnel_bridge_entrance)
{
if (!HasTileRoadType(tile, rt)) return ROAD_NONE;
switch (GetTileType(tile)) {
case MP_ROAD:
switch (GetRoadTileType(tile)) {
default:
case ROAD_TILE_NORMAL: return GetRoadBits(tile, rt);
case ROAD_TILE_CROSSING: return GetCrossingRoadBits(tile);
case ROAD_TILE_DEPOT: return DiagDirToRoadBits(GetRoadDepotDirection(tile));
}
case MP_STATION:
if (!IsRoadStopTile(tile)) return ROAD_NONE;
if (IsDriveThroughStopTile(tile)) return (GetRoadStopDir(tile) == DIAGDIR_NE) ? ROAD_X : ROAD_Y;
return DiagDirToRoadBits(GetRoadStopDir(tile));
case MP_TUNNELBRIDGE:
if (GetTunnelBridgeTransportType(tile) != TRANSPORT_ROAD) return ROAD_NONE;
return straight_tunnel_bridge_entrance ?
AxisToRoadBits(DiagDirToAxis(GetTunnelBridgeDirection(tile))) :
DiagDirToRoadBits(ReverseDiagDir(GetTunnelBridgeDirection(tile)));
default: return ROAD_NONE;
}
}
|