Merge branch 'master' into jgrpp

This commit is contained in:
Jonathan G Rennison
2016-12-12 19:21:33 +00:00
10 changed files with 84 additions and 67 deletions

View File

@@ -55,8 +55,6 @@ RailType _sorted_railtypes[RAILTYPE_END];
uint8 _sorted_railtypes_size;
TileIndex _rail_track_endtile; ///< The end of a rail track; as hidden return from the rail build/remove command for GUI purposes.
assert_compile(sizeof(_original_railtypes) <= sizeof(_railtypes));
/** Enum holding the signal offset in the sprite sheet according to the side it is representing. */
enum SignalOffsets {
SIGNAL_TO_SOUTHWEST,
@@ -74,8 +72,20 @@ enum SignalOffsets {
*/
void ResetRailTypes()
{
memset(_railtypes, 0, sizeof(_railtypes));
memcpy(_railtypes, _original_railtypes, sizeof(_original_railtypes));
assert_compile(lengthof(_original_railtypes) <= lengthof(_railtypes));
uint i = 0;
for (; i < lengthof(_original_railtypes); i++) _railtypes[i] = _original_railtypes[i];
static const RailtypeInfo empty_railtype = {
{0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,{}},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0},
0, RAILTYPES_NONE, RAILTYPES_NONE, 0, 0, 0, RTFB_NONE, 0, 0, 0, 0, 0,
RailTypeLabelList(), 0, 0, RAILTYPES_NONE, RAILTYPES_NONE, 0,
{}, {} };
for (; i < lengthof(_railtypes); i++) _railtypes[i] = empty_railtype;
}
void ResolveRailTypeGUISprites(RailtypeInfo *rti)
@@ -161,11 +171,9 @@ RailType AllocateRailType(RailTypeLabel label)
if (rti->label == 0) {
/* Set up new rail type */
memcpy(rti, &_railtypes[RAILTYPE_RAIL], sizeof(*rti));
*rti = _original_railtypes[RAILTYPE_RAIL];
rti->label = label;
/* Clear alternate label list. Can't use Reset() here as that would free
* the data pointer of RAILTYPE_RAIL and not our new rail type. */
new (&rti->alternate_labels) RailTypeLabelList;
rti->alternate_labels.Clear();
/* Make us compatible with ourself. */
rti->powered_railtypes = (RailTypes)(1 << rt);