mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-03 04:43:12 +00:00
(svn r10833) -Fix [FS#1115]: assertion (different cost between test and execution) of overbuilding road tunnels with tram tracks (and vice versa) when the dragged area contains both ends of the tunnel.
This commit is contained in:
parent
c4a3087723
commit
2bff32afb0
@ -588,6 +588,7 @@ CommandCost CmdBuildLongRoad(TileIndex end_tile, uint32 flags, uint32 p1, uint32
|
||||
TileIndex start_tile, tile;
|
||||
CommandCost cost, ret;
|
||||
bool had_bridge = false;
|
||||
bool had_tunnel = false;
|
||||
bool had_success = false;
|
||||
DisallowedRoadDirections drd = DRD_NORTHBOUND;
|
||||
|
||||
@ -633,12 +634,19 @@ CommandCost CmdBuildLongRoad(TileIndex end_tile, uint32 flags, uint32 p1, uint32
|
||||
_error_message = INVALID_STRING_ID;
|
||||
} else {
|
||||
had_success = true;
|
||||
/* Only pay for the upgrade on one side of the bridge */
|
||||
if (IsBridgeTile(tile)) {
|
||||
if ((!had_bridge || GetBridgeRampDirection(tile) == DIAGDIR_SE || GetBridgeRampDirection(tile) == DIAGDIR_SW)) {
|
||||
cost.AddCost(ret);
|
||||
/* Only pay for the upgrade on one side of the bridges and tunnels */
|
||||
if (IsTileType(tile, MP_TUNNELBRIDGE)) {
|
||||
if (IsBridge(tile)) {
|
||||
if ((!had_bridge || GetBridgeRampDirection(tile) == DIAGDIR_SE || GetBridgeRampDirection(tile) == DIAGDIR_SW)) {
|
||||
cost.AddCost(ret);
|
||||
}
|
||||
had_bridge = true;
|
||||
} else {
|
||||
if ((!had_tunnel || GetTunnelDirection(tile) == DIAGDIR_SE || GetTunnelDirection(tile) == DIAGDIR_SW)) {
|
||||
cost.AddCost(ret);
|
||||
}
|
||||
had_tunnel = true;
|
||||
}
|
||||
had_bridge = true;
|
||||
} else {
|
||||
cost.AddCost(ret);
|
||||
}
|
||||
|
@ -219,8 +219,9 @@ static void MakeWindow(bool full_screen)
|
||||
|
||||
// recreate window?
|
||||
if ((full_screen || _wnd.fullscreen) && _wnd.main_wnd) {
|
||||
DestroyWindow(_wnd.main_wnd);
|
||||
HWND wnd = _wnd.main_wnd;
|
||||
_wnd.main_wnd = 0;
|
||||
DestroyWindow(wnd);
|
||||
}
|
||||
|
||||
#if defined(WINCE)
|
||||
@ -519,6 +520,9 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP
|
||||
break;
|
||||
|
||||
case WM_SIZE:
|
||||
/* Resizing a destroy window is NOT good */
|
||||
if (_wnd.main_wnd == 0) return;
|
||||
|
||||
if (wParam != SIZE_MINIMIZED) {
|
||||
/* Set maximized flag when we maximize (obviously), but also when we
|
||||
* switched to fullscreen from a maximized state */
|
||||
@ -792,7 +796,9 @@ void VideoDriver_Win32::Stop()
|
||||
{
|
||||
DeleteObject(_wnd.gdi_palette);
|
||||
DeleteObject(_wnd.dib_sect);
|
||||
DestroyWindow(_wnd.main_wnd);
|
||||
HWND wnd = _wnd.main_wnd;
|
||||
_wnd.main_wnd = 0;
|
||||
DestroyWindow(wnd);
|
||||
|
||||
#if !defined(WINCE)
|
||||
if (_wnd.fullscreen) ChangeDisplaySettings(NULL, 0);
|
||||
|
Loading…
Reference in New Issue
Block a user