summaryrefslogtreecommitdiff
path: root/src/rail_cmd.cpp
diff options
context:
space:
mode:
authorPeter Nelson <peter1138@openttd.org>2019-02-05 08:23:25 +0000
committerPeterN <peter@fuzzle.org>2019-02-06 07:40:55 +0000
commite3b440c9c50b39092a2f887dba9370b21369f2cb (patch)
tree2c91e502fdcaa94012a30c69ec3d565c560601d2 /src/rail_cmd.cpp
parent4764d1c45e7d82bc35f6fcb25012f5cfe545ce6c (diff)
downloadopenttd-e3b440c9c50b39092a2f887dba9370b21369f2cb.tar.xz
Add #5006: Flag to hide rail type from construction.
Diffstat (limited to 'src/rail_cmd.cpp')
-rw-r--r--src/rail_cmd.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp
index a0fd968cc..f4b26c092 100644
--- a/src/rail_cmd.cpp
+++ b/src/rail_cmd.cpp
@@ -46,6 +46,7 @@ typedef SmallVector<Train *, 16> TrainList;
RailtypeInfo _railtypes[RAILTYPE_END];
RailType _sorted_railtypes[RAILTYPE_END];
uint8 _sorted_railtypes_size;
+RailTypes _railtypes_hidden_mask;
/** Enum holding the signal offset in the sprite sheet according to the side it is representing. */
enum SignalOffsets {
@@ -78,6 +79,8 @@ void ResetRailTypes()
RailTypeLabelList(), 0, 0, RAILTYPES_NONE, RAILTYPES_NONE, 0,
{}, {} };
for (; i < lengthof(_railtypes); i++) _railtypes[i] = empty_railtype;
+
+ _railtypes_hidden_mask = RAILTYPES_NONE;
}
void ResolveRailTypeGUISprites(RailtypeInfo *rti)
@@ -140,11 +143,12 @@ void InitRailTypes()
for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) {
RailtypeInfo *rti = &_railtypes[rt];
ResolveRailTypeGUISprites(rti);
+ if (HasBit(rti->flags, RTF_HIDDEN)) SetBit(_railtypes_hidden_mask, rt);
}
_sorted_railtypes_size = 0;
for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) {
- if (_railtypes[rt].label != 0) {
+ if (_railtypes[rt].label != 0 && !HasBit(_railtypes_hidden_mask, rt)) {
_sorted_railtypes[_sorted_railtypes_size++] = rt;
}
}