Files
@ r24498:e9114d9ab04a
Branch filter:
Location: cpp/openttd-patchpack/source/src/bridge_map.cpp - annotation
r24498:e9114d9ab04a
2.3 KiB
text/x-c
Fix #6468: don't store version of AIs-started-via-console in name
You can do: "startai myai.3", which starts version 3 of "myai".
This is very useful for testing save/load code between different
versions of your AI.
However, when using this syntax, the AI got saved as "myai.3" as
name of the AI, instead of "myai". This caused several problems,
like indicating to the user the AI could not be found, but still
load the AI. But in all cases, the AI never got the chance to
load the saved data, making the whole reason this exists pointless.
By splitting the name and version already in the console command,
the code becomes simpler and AIs started this way now follow the
normal flow after initialization.
You can do: "startai myai.3", which starts version 3 of "myai".
This is very useful for testing save/load code between different
versions of your AI.
However, when using this syntax, the AI got saved as "myai.3" as
name of the AI, instead of "myai". This caused several problems,
like indicating to the user the AI could not be found, but still
load the AI. But in all cases, the AI never got the chance to
load the saved data, making the whole reason this exists pointless.
By splitting the name and version already in the console command,
the code becomes simpler and AIs started this way now follow the
normal flow after initialization.
r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r6418:8a4b147a8f33 r6123:049e9624d068 r5584:545d748cc681 r7764:ffc843cdbcf7 r8083:8cd2123a0c7c r5584:545d748cc681 r21383:942c32fb8b0e r21383:942c32fb8b0e r5584:545d748cc681 r13499:0af2aac7f5aa r13499:0af2aac7f5aa r13527:21498da4c6d5 r13527:21498da4c6d5 r13499:0af2aac7f5aa r13499:0af2aac7f5aa r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r8083:8cd2123a0c7c r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r17097:4984cc3adcdd r17097:4984cc3adcdd r17097:4984cc3adcdd r17097:4984cc3adcdd r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r17097:4984cc3adcdd r17097:4984cc3adcdd r17097:4984cc3adcdd r17097:4984cc3adcdd r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r17097:4984cc3adcdd r17097:4984cc3adcdd r23023:7b8669afd1db r17097:4984cc3adcdd r5584:545d748cc681 r5584:545d748cc681 r5584:545d748cc681 r8083:8cd2123a0c7c r5584:545d748cc681 r5584:545d748cc681 r17097:4984cc3adcdd r18246:8bbceed09429 r23023:7b8669afd1db r18246:8bbceed09429 r17097:4984cc3adcdd r18260:9616113792ef r5584:545d748cc681 r18260:9616113792ef r18246:8bbceed09429 r8083:8cd2123a0c7c r5584:545d748cc681 r7764:ffc843cdbcf7 r18246:8bbceed09429 r5584:545d748cc681 | /*
* 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 bridge_map.cpp Map accessor functions for bridges. */
#include "stdafx.h"
#include "landscape.h"
#include "tunnelbridge_map.h"
#include "safeguards.h"
/**
* Finds the end of a bridge in the specified direction starting at a middle tile
* @param tile the bridge tile to find the bridge ramp for
* @param dir the direction to search in
*/
static TileIndex GetBridgeEnd(TileIndex tile, DiagDirection dir)
{
TileIndexDiff delta = TileOffsByDiagDir(dir);
dir = ReverseDiagDir(dir);
do {
tile += delta;
} while (!IsBridgeTile(tile) || GetTunnelBridgeDirection(tile) != dir);
return tile;
}
/**
* Finds the northern end of a bridge starting at a middle tile
* @param t the bridge tile to find the bridge ramp for
*/
TileIndex GetNorthernBridgeEnd(TileIndex t)
{
return GetBridgeEnd(t, ReverseDiagDir(AxisToDiagDir(GetBridgeAxis(t))));
}
/**
* Finds the southern end of a bridge starting at a middle tile
* @param t the bridge tile to find the bridge ramp for
*/
TileIndex GetSouthernBridgeEnd(TileIndex t)
{
return GetBridgeEnd(t, AxisToDiagDir(GetBridgeAxis(t)));
}
/**
* Starting at one bridge end finds the other bridge end
* @param tile the bridge ramp tile to find the other bridge ramp for
*/
TileIndex GetOtherBridgeEnd(TileIndex tile)
{
assert(IsBridgeTile(tile));
return GetBridgeEnd(tile, GetTunnelBridgeDirection(tile));
}
/**
* Get the height ('z') of a bridge.
* @param t the bridge ramp tile to get the bridge height from
* @return the height of the bridge.
*/
int GetBridgeHeight(TileIndex t)
{
int h;
Slope tileh = GetTileSlope(t, &h);
Foundation f = GetBridgeFoundation(tileh, DiagDirToAxis(GetTunnelBridgeDirection(t)));
/* one height level extra for the ramp */
return h + 1 + ApplyFoundationToSlope(f, &tileh);
}
|