Debug: Show signalled tunnel/bridge info in debug window

This commit is contained in:
Jonathan G Rennison
2022-06-22 17:57:20 +01:00
parent 229613b06a
commit b5d0c1d493
2 changed files with 29 additions and 3 deletions

View File

@@ -1171,8 +1171,7 @@ GrfSpecFeature GetGrfSpecFeature(TileIndex tile)
} }
case MP_TUNNELBRIDGE: { case MP_TUNNELBRIDGE: {
extern std::vector<const GRFFile *> _new_signals_grfs; if (IsTunnelBridgeWithSignalSimulation(tile)) return GSF_SIGNALS;
if (IsTunnelBridgeWithSignalSimulation(tile) && !_new_signals_grfs.empty()) return GSF_SIGNALS;
return GSF_INVALID; return GSF_INVALID;
} }

View File

@@ -889,6 +889,28 @@ void DumpTileSignalsInfo(char *buffer, const char *last, uint index, NIExtraInfo
} }
} }
void DumpTunnelBridgeSignalsInfo(char *buffer, const char *last, uint index, NIExtraInfoOutput &output)
{
if (IsTunnelBridgeSignalSimulationEntrance(index)) {
char *b = buffer;
const SignalState state = GetTunnelBridgeEntranceSignalState(index);
b += seprintf(b, last, " Entrance: state: %d", state);
if (_extra_aspects > 0 && state == SIGNAL_STATE_GREEN) b += seprintf(b, last, ", aspect: %d", GetTunnelBridgeEntranceSignalAspect(index));
output.print(buffer);
}
if (IsTunnelBridgeSignalSimulationExit(index)) {
char *b = buffer;
const SignalState state = GetTunnelBridgeExitSignalState(index);
b += seprintf(b, last, " Exit: state: %d", state);
if (_extra_aspects > 0 && state == SIGNAL_STATE_GREEN) b += seprintf(b, last, ", aspect: %d", GetTunnelBridgeExitSignalAspect(index));
output.print(buffer);
}
TileIndex end = GetOtherTunnelBridgeEnd(index);
extern uint GetTunnelBridgeSignalSimulationSignalCount(TileIndex begin, TileIndex end);
seprintf(buffer, last, " Spacing: %d, total signals: %d", GetTunnelBridgeSignalSimulationSpacing(index), GetTunnelBridgeSignalSimulationSignalCount(index, end));
output.print(buffer);
}
static const NIVariable _niv_signals[] = { static const NIVariable _niv_signals[] = {
NIV(0x40, "terrain type"), NIV(0x40, "terrain type"),
NIV(A2VRI_SIGNALS_SIGNAL_RESTRICTION_INFO, "restriction info"), NIV(A2VRI_SIGNALS_SIGNAL_RESTRICTION_INFO, "restriction info"),
@@ -898,7 +920,8 @@ static const NIVariable _niv_signals[] = {
}; };
class NIHSignals : public NIHelper { class NIHSignals : public NIHelper {
bool IsInspectable(uint index) const override { return !_new_signals_grfs.empty(); } bool IsInspectable(uint index) const override { return true; }
bool ShowExtraInfoOnly(uint index) const override { return _new_signals_grfs.empty(); }
bool ShowSpriteDumpButton(uint index) const override { return true; } bool ShowSpriteDumpButton(uint index) const override { return true; }
uint GetParent(uint index) const override { return UINT32_MAX; } uint GetParent(uint index) const override { return UINT32_MAX; }
const void *GetInstance(uint index)const override { return nullptr; } const void *GetInstance(uint index)const override { return nullptr; }
@@ -936,6 +959,10 @@ class NIHSignals : public NIHelper {
output.print("Signals:"); output.print("Signals:");
DumpTileSignalsInfo(buffer, lastof(buffer), index, output); DumpTileSignalsInfo(buffer, lastof(buffer), index, output);
} }
if (IsTunnelBridgeWithSignalSimulation(index)) {
output.print("Signals:");
DumpTunnelBridgeSignalsInfo(buffer, lastof(buffer), index, output);
}
} }
/* virtual */ void SpriteDump(uint index, DumpSpriteGroupPrinter print) const override /* virtual */ void SpriteDump(uint index, DumpSpriteGroupPrinter print) const override