# HG changeset patch # User SamuXarick <43006711+SamuXarick@users.noreply.github.com> # Date 2024-02-14 20:38:32 # Node ID a88826ce6a33e503975b2062793e9c4b053c6d18 # Parent 8c878dd42071a55b0c26a1c5dea57d453e351345 Add: [Script] GetAirportNumHelipads (#12085) Adds a function for Scripts to get the number of helipads of an airport type. diff --git a/regression/regression/main.nut b/regression/regression/main.nut --- a/regression/regression/main.nut +++ b/regression/regression/main.nut @@ -220,6 +220,7 @@ function Regression::Airport() print(" GetAirportWidth(" + i + "): " + AIAirport.GetAirportWidth(i)); print(" GetAirportHeight(" + i + "): " + AIAirport.GetAirportHeight(i)); print(" GetAirportCoverageRadius(" + i + "): " + AIAirport.GetAirportCoverageRadius(i)); + print(" GetAirportNumHelipads(" + i + "): " + AIAirport.GetAirportNumHelipads(i)); } print(" GetBankBalance(): " + AICompany.GetBankBalance(AICompany.COMPANY_SELF)); diff --git a/regression/regression/result.txt b/regression/regression/result.txt --- a/regression/regression/result.txt +++ b/regression/regression/result.txt @@ -805,56 +805,67 @@ ERROR: IsEnd() is invalid as Begin() is GetAirportWidth(-1): -1 GetAirportHeight(-1): -1 GetAirportCoverageRadius(-1): -1 + GetAirportNumHelipads(-1): -1 IsAirportInformationAvailable(0): true IsValidAirportType(0): true GetAirportWidth(0): 4 GetAirportHeight(0): 3 GetAirportCoverageRadius(0): 4 + GetAirportNumHelipads(0): 0 IsAirportInformationAvailable(1): true IsValidAirportType(1): false GetAirportWidth(1): 6 GetAirportHeight(1): 6 GetAirportCoverageRadius(1): 5 + GetAirportNumHelipads(1): 0 IsAirportInformationAvailable(2): true IsValidAirportType(2): false GetAirportWidth(2): 1 GetAirportHeight(2): 1 GetAirportCoverageRadius(2): 4 + GetAirportNumHelipads(2): 1 IsAirportInformationAvailable(3): true IsValidAirportType(3): false GetAirportWidth(3): 6 GetAirportHeight(3): 6 GetAirportCoverageRadius(3): 6 + GetAirportNumHelipads(3): 0 IsAirportInformationAvailable(4): true IsValidAirportType(4): false GetAirportWidth(4): 7 GetAirportHeight(4): 7 GetAirportCoverageRadius(4): 8 + GetAirportNumHelipads(4): 2 IsAirportInformationAvailable(5): true IsValidAirportType(5): false GetAirportWidth(5): 5 GetAirportHeight(5): 4 GetAirportCoverageRadius(5): 4 + GetAirportNumHelipads(5): 2 IsAirportInformationAvailable(6): true IsValidAirportType(6): false GetAirportWidth(6): 2 GetAirportHeight(6): 2 GetAirportCoverageRadius(6): 4 + GetAirportNumHelipads(6): 1 IsAirportInformationAvailable(7): true IsValidAirportType(7): false GetAirportWidth(7): 9 GetAirportHeight(7): 11 GetAirportCoverageRadius(7): 10 + GetAirportNumHelipads(7): 2 IsAirportInformationAvailable(8): true IsValidAirportType(8): false GetAirportWidth(8): 4 GetAirportHeight(8): 2 GetAirportCoverageRadius(8): 4 + GetAirportNumHelipads(8): 3 IsAirportInformationAvailable(9): false IsValidAirportType(9): false GetAirportWidth(9): -1 GetAirportHeight(9): -1 GetAirportCoverageRadius(9): -1 + GetAirportNumHelipads(9): -1 GetBankBalance(): 1999999790 GetPrice(): 5400 BuildAirport(): true @@ -9737,9 +9748,9 @@ ERROR: IsEnd() is invalid as Begin() is --Valuate() with excessive CPU usage-- Your script made an error: excessive CPU usage in valuator function -*FUNCTION [unknown()] regression/main.nut line [2050] +*FUNCTION [unknown()] regression/main.nut line [2051] *FUNCTION [Valuate()] NATIVE line [-1] -*FUNCTION [Start()] regression/main.nut line [2051] +*FUNCTION [Start()] regression/main.nut line [2052] [id] 0 [this] TABLE @@ -9748,7 +9759,7 @@ Your script made an error: excessive CPU [this] INSTANCE Your script made an error: excessive CPU usage in valuator function -*FUNCTION [Start()] regression/main.nut line [2051] +*FUNCTION [Start()] regression/main.nut line [2052] [Infinite] CLOSURE [list] INSTANCE diff --git a/src/script/api/ai_changelog.hpp b/src/script/api/ai_changelog.hpp --- a/src/script/api/ai_changelog.hpp +++ b/src/script/api/ai_changelog.hpp @@ -22,6 +22,7 @@ * \li AITown::ROAD_LAYOUT_RANDOM * \li AIVehicle::IsPrimaryVehicle * \li AITileList_StationCoverage + * \li AIAirport::GetAirportNumHelipads * * API removals: * \li AIError::ERR_PRECONDITION_TOO_MANY_PARAMETERS, that error is never returned anymore. diff --git a/src/script/api/game_changelog.hpp b/src/script/api/game_changelog.hpp --- a/src/script/api/game_changelog.hpp +++ b/src/script/api/game_changelog.hpp @@ -88,6 +88,7 @@ * \li GSStoryPage::IsValidStoryPageButtonFlags * \li GSStoryPage::IsValidStoryPageButtonCursor * \li GSTileList_StationCoverage + * \li GSAirport::GetAirportNumHelipads * * API removals: * \li GSError::ERR_PRECONDITION_TOO_MANY_PARAMETERS, that error is never returned anymore. diff --git a/src/script/api/script_airport.cpp b/src/script/api/script_airport.cpp --- a/src/script/api/script_airport.cpp +++ b/src/script/api/script_airport.cpp @@ -170,3 +170,10 @@ return (int64_t)GetMaintenanceCostFactor(type) * _price[PR_INFRASTRUCTURE_AIRPORT] >> 3; } + +/* static */ SQInteger ScriptAirport::GetAirportNumHelipads(AirportType type) +{ + if (!IsAirportInformationAvailable(type)) return -1; + + return ::AirportSpec::Get(type)->fsm->num_helipads; +} diff --git a/src/script/api/script_airport.hpp b/src/script/api/script_airport.hpp --- a/src/script/api/script_airport.hpp +++ b/src/script/api/script_airport.hpp @@ -207,6 +207,14 @@ public: * @return Monthly maintenance cost of the airport type. */ static Money GetMonthlyMaintenanceCost(AirportType type); + + /** + * Get the number of helipads of this airport type. + * @param type The airport type. + * @pre IsAirportInformationAvailable(type) + * @return Number of helipads of this type of airport. When 0 helicopters will go to normal terminals. + */ + static SQInteger GetAirportNumHelipads(AirportType type); }; #endif /* SCRIPT_AIRPORT_HPP */