From 3c44d5ba5a25f30e8e0683eb8f7225bd36c76e20 Mon Sep 17 00:00:00 2001 From: SamuXarick <43006711+SamuXarick@users.noreply.github.com> Date: Thu, 30 Jan 2025 13:56:07 +0000 Subject: [PATCH] Add: [Script] GetBaseStationID Added ScriptBaseStation::GetBaseStationID to get the StationID of a tile, if there is a basestation (Station or Waypoint). --- src/script/api/ai_changelog.hpp | 1 + src/script/api/game_changelog.hpp | 1 + src/script/api/script_basestation.cpp | 6 ++++++ src/script/api/script_basestation.hpp | 9 +++++++++ 4 files changed, 17 insertions(+) diff --git a/src/script/api/ai_changelog.hpp b/src/script/api/ai_changelog.hpp index d359902418..d88a2b15fc 100644 --- a/src/script/api/ai_changelog.hpp +++ b/src/script/api/ai_changelog.hpp @@ -28,6 +28,7 @@ * \li AICargo::CC_POTABLE * \li AICargo::CC_NON_POTABLE * \li AIVehicleList_Waypoint + * \li AIBaseStation::GetBaseStationID * * Other changes: * \li AIBridge::GetBridgeID renamed to AIBridge::GetBridgeType diff --git a/src/script/api/game_changelog.hpp b/src/script/api/game_changelog.hpp index e57e873a14..7daa242ee7 100644 --- a/src/script/api/game_changelog.hpp +++ b/src/script/api/game_changelog.hpp @@ -29,6 +29,7 @@ * \li GSCargo::CC_NON_POTABLE * \li GSVehicleList_Waypoint * \li GSBaseStation::GetOwner + * \li GSBaseStation::GetBaseStationID * * Other changes: * \li GSBridge::GetBridgeID renamed to GSBridge::GetBridgeType diff --git a/src/script/api/script_basestation.cpp b/src/script/api/script_basestation.cpp index e7bea4ec29..5c133fcd57 100644 --- a/src/script/api/script_basestation.cpp +++ b/src/script/api/script_basestation.cpp @@ -34,6 +34,12 @@ return ScriptCompany::ToScriptCompanyID(::BaseStation::Get(station_id)->owner); } +/* static */ StationID ScriptBaseStation::GetBaseStationID(TileIndex tile) +{ + if (!::IsValidTile(tile) || !::IsTileType(tile, MP_STATION) || ::BaseStation::GetByTile(tile) == nullptr) return StationID::Invalid(); + return ::GetStationIndex(tile); +} + /* static */ std::optional ScriptBaseStation::GetName(StationID station_id) { if (!IsValidBaseStation(station_id)) return std::nullopt; diff --git a/src/script/api/script_basestation.hpp b/src/script/api/script_basestation.hpp index 646bec13ab..5fe8a02666 100644 --- a/src/script/api/script_basestation.hpp +++ b/src/script/api/script_basestation.hpp @@ -42,6 +42,15 @@ public: */ static ScriptCompany::CompanyID GetOwner(StationID station_id); + /** + * Get the StationID of a tile, if there is a basestation. + * @param tile The tile to find the StationID of. + * @pre IsValidTile(tile). + * @return StationID of the basestation. + * @post Use IsValidBaseStation() to see if the basestation is valid. + */ + static StationID GetBaseStationID(TileIndex tile); + /** * Get the name of a basestation. * @param station_id The basestation to get the name of.