Fix 313c6c45aa: [Script] Return rail types as list instead of bitmask. (#14617)

This is more idiomatic for scripts, and avoids exposing internal representation.
This commit is contained in:
Peter Nelson
2025-09-15 13:59:04 +01:00
committed by dP
parent 511779e468
commit f0f207fdf8
5 changed files with 292 additions and 15 deletions

View File

@@ -245,12 +245,17 @@
return static_cast<ScriptRail::RailType>(::RailVehInfo(engine_id)->railtypes.GetNthSetBit(0).value_or(::RailType::INVALID_RAILTYPE));
}
/* static */ ScriptRail::RailTypes ScriptEngine::GetAllRailTypes(EngineID engine_id)
/* static */ ScriptList *ScriptEngine::GetAllRailTypes(EngineID engine_id)
{
if (!IsValidEngine(engine_id)) return ScriptRail::INVALID_RAILTYPES;
if (GetVehicleType(engine_id) != ScriptVehicle::VT_RAIL) return ScriptRail::INVALID_RAILTYPES;
if (!IsValidEngine(engine_id)) return nullptr;
if (GetVehicleType(engine_id) != ScriptVehicle::VT_RAIL) return nullptr;
return static_cast<ScriptRail::RailTypes>(::RailVehInfo(engine_id)->railtypes.base());
ScriptList *list = new ScriptList();
for (::RailType railtype : ::RailVehInfo(engine_id)->railtypes) {
list->AddItem(railtype);
}
return list;
}
/* static */ bool ScriptEngine::IsArticulated(EngineID engine_id)