From 40424601c6f3852ee6f50bd961cff95c2889c86c Mon Sep 17 00:00:00 2001 From: glx22 Date: Thu, 9 Feb 2023 22:47:44 +0100 Subject: [PATCH] Codechange: Use SQInteger for generic numbers in script_cargo --- src/script/api/script_cargo.cpp | 10 ++++++++-- src/script/api/script_cargo.hpp | 9 ++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/script/api/script_cargo.cpp b/src/script/api/script_cargo.cpp index 49fdc4f294..7354c848c0 100644 --- a/src/script/api/script_cargo.cpp +++ b/src/script/api/script_cargo.cpp @@ -70,9 +70,12 @@ return (ScriptCargo::TownEffect)::CargoSpec::Get(cargo_type)->town_effect; } -/* static */ Money ScriptCargo::GetCargoIncome(CargoID cargo_type, uint32 distance, uint32 days_in_transit) +/* static */ Money ScriptCargo::GetCargoIncome(CargoID cargo_type, SQInteger distance, SQInteger days_in_transit) { if (!IsValidCargo(cargo_type)) return -1; + + distance = Clamp(distance, 0, UINT32_MAX); + return ::GetTransportedGoodsIncome(1, distance, Clamp(days_in_transit * 2 / 5, 0, 255), cargo_type); } @@ -82,8 +85,11 @@ return (ScriptCargo::DistributionType)_settings_game.linkgraph.GetDistributionType(cargo_type); } -/* static */ int64 ScriptCargo::GetWeight(CargoID cargo_type, uint32 amount) +/* static */ SQInteger ScriptCargo::GetWeight(CargoID cargo_type, SQInteger amount) { if (!IsValidCargo(cargo_type)) return -1; + + amount = Clamp(amount, 0, UINT32_MAX); + return ::CargoSpec::Get(cargo_type)->WeightOfNUnits(amount); } diff --git a/src/script/api/script_cargo.hpp b/src/script/api/script_cargo.hpp index 67a54a3467..c5b5c1b5f0 100644 --- a/src/script/api/script_cargo.hpp +++ b/src/script/api/script_cargo.hpp @@ -142,10 +142,12 @@ public: * @param cargo_type The cargo to transport. * @pre ScriptCargo::IsValidCargo(cargo_type). * @param distance The distance the cargo travels from begin to end. - * @param days_in_transit Amount of (game) days the cargo is in transit. The max value of this variable is 637. Any value higher returns the same as 637 would. + * The value will be clamped to 0 .. MAX(uint32). + * @param days_in_transit Amount of (game) days the cargo is in transit. + * The max value of this variable is 637. Any value higher returns the same as 637 would. * @return The amount of money that would be earned by this trip. */ - static Money GetCargoIncome(CargoID cargo_type, uint32 distance, uint32 days_in_transit); + static Money GetCargoIncome(CargoID cargo_type, SQInteger distance, SQInteger days_in_transit); /** * Get the cargo distribution type for a cargo. @@ -159,10 +161,11 @@ public: * cargo for the specified type. * @param cargo_type The cargo to check on. * @param amount The quantity of cargo. + * The value will be clamped to 0 .. MAX(uint32). * @pre ScriptCargo::IsValidCargo(cargo_type). * @return The weight in tonnes for that quantity of cargo. */ - static int64 GetWeight(CargoID cargo_type, uint32 amount); + static SQInteger GetWeight(CargoID cargo_type, SQInteger amount); }; #endif /* SCRIPT_CARGO_HPP */