mirror of https://github.com/OpenRCT2/OpenRCT2.git
Add ToGBP function to convert non literals to money32
This commit is contained in:
parent
90dbe60a1f
commit
e63432a416
|
@ -360,7 +360,7 @@ money32 LandSetHeightAction::GetSurfaceHeightChangeCost(SurfaceElement* surfaceE
|
|||
{
|
||||
int32_t cornerHeight = tile_element_get_corner_height(surfaceElement, i);
|
||||
cornerHeight -= map_get_corner_height(_height, _style & TILE_ELEMENT_SURFACE_SLOPE_MASK, i);
|
||||
cost += (abs(cornerHeight) * 5 / 2) * 10;
|
||||
cost += 2.5_GBP * abs(cornerHeight);
|
||||
}
|
||||
return cost;
|
||||
}
|
||||
|
|
|
@ -138,7 +138,7 @@ GameActions::Result MazeSetTrackAction::Query() const
|
|||
|
||||
const auto& ted = GetTrackElementDescriptor(TrackElemType::Maze);
|
||||
money32 price = (((ride->GetRideTypeDescriptor().BuildCosts.TrackPrice * ted.Price) >> 16));
|
||||
res.Cost = price / 2 * 10;
|
||||
res.Cost = (price / 2) * 10;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
@ -174,7 +174,7 @@ GameActions::Result MazeSetTrackAction::Execute() const
|
|||
{
|
||||
const auto& ted = GetTrackElementDescriptor(TrackElemType::Maze);
|
||||
money32 price = (((ride->GetRideTypeDescriptor().BuildCosts.TrackPrice * ted.Price) >> 16));
|
||||
res.Cost = price / 2 * 10;
|
||||
res.Cost = (price / 2) * 10;
|
||||
|
||||
auto startLoc = _loc.ToTileStart();
|
||||
|
||||
|
|
|
@ -98,6 +98,11 @@ constexpr money32 operator"" _GBP(long double money) noexcept
|
|||
return money * 10;
|
||||
}
|
||||
|
||||
constexpr money32 ToMoney32FromGBP(long double money) noexcept
|
||||
{
|
||||
return money * 10;
|
||||
}
|
||||
|
||||
#define MONEY16_UNDEFINED static_cast<money16>(static_cast<uint16_t>(0xFFFF))
|
||||
#define MONEY32_UNDEFINED (static_cast<money32>(0x80000000))
|
||||
#define MONEY64_UNDEFINED (static_cast<money64>(0x8000000000000000))
|
||||
|
|
|
@ -754,7 +754,7 @@ static int32_t cc_set(InteractiveConsole& console, const arguments_t& argv)
|
|||
|
||||
if (argv[0] == "money" && invalidArguments(&invalidArgs, double_valid[0]))
|
||||
{
|
||||
money32 money = static_cast<int32_t>(double_val[0] * 10);
|
||||
money32 money = ToMoney32FromGBP(double_val[0]);
|
||||
if (gCash != money)
|
||||
{
|
||||
auto setCheatAction = SetCheatAction(CheatType::SetMoney, money);
|
||||
|
@ -774,7 +774,7 @@ static int32_t cc_set(InteractiveConsole& console, const arguments_t& argv)
|
|||
else if (argv[0] == "scenario_initial_cash" && invalidArguments(&invalidArgs, int_valid[0]))
|
||||
{
|
||||
auto scenarioSetSetting = ScenarioSetSettingAction(
|
||||
ScenarioSetSetting::InitialCash, std::clamp(int_val[0] * 10, 0.00_GBP, 1000000.00_GBP));
|
||||
ScenarioSetSetting::InitialCash, std::clamp(ToMoney32FromGBP(int_val[0]), 0.00_GBP, 1000000.00_GBP));
|
||||
scenarioSetSetting.SetCallback([&console](const GameAction*, const GameActions::Result* res) {
|
||||
if (res->Error != GameActions::Status::Ok)
|
||||
console.WriteLineError("set scenario_initial_cash command failed, likely due to permissions.");
|
||||
|
@ -787,7 +787,8 @@ static int32_t cc_set(InteractiveConsole& console, const arguments_t& argv)
|
|||
{
|
||||
auto scenarioSetSetting = ScenarioSetSettingAction(
|
||||
ScenarioSetSetting::InitialLoan,
|
||||
std::clamp<money64>((int_val[0] - (int_val[0] % 1000)) * 10, 0.00_GBP, gMaxBankLoan));
|
||||
std::clamp<money64>(
|
||||
ToMoney32FromGBP(int_val[0]) - ToMoney32FromGBP(int_val[0] % 1000), 0.00_GBP, gMaxBankLoan));
|
||||
scenarioSetSetting.SetCallback([&console](const GameAction*, const GameActions::Result* res) {
|
||||
if (res->Error != GameActions::Status::Ok)
|
||||
console.WriteLineError("set current_loan command failed, likely due to permissions.");
|
||||
|
@ -800,7 +801,7 @@ static int32_t cc_set(InteractiveConsole& console, const arguments_t& argv)
|
|||
{
|
||||
auto scenarioSetSetting = ScenarioSetSettingAction(
|
||||
ScenarioSetSetting::MaximumLoanSize,
|
||||
std::clamp((int_val[0] - (int_val[0] % 1000)) * 10, 0.00_GBP, 5000000.00_GBP));
|
||||
std::clamp(ToMoney32FromGBP(int_val[0]) - ToMoney32FromGBP(int_val[0] % 1000), 0.00_GBP, 5000000.00_GBP));
|
||||
scenarioSetSetting.SetCallback([&console](const GameAction*, const GameActions::Result* res) {
|
||||
if (res->Error != GameActions::Status::Ok)
|
||||
console.WriteLineError("set max_loan command failed, likely due to permissions.");
|
||||
|
@ -812,8 +813,7 @@ static int32_t cc_set(InteractiveConsole& console, const arguments_t& argv)
|
|||
else if (argv[0] == "guest_initial_cash" && invalidArguments(&invalidArgs, double_valid[0]))
|
||||
{
|
||||
auto scenarioSetSetting = ScenarioSetSettingAction(
|
||||
ScenarioSetSetting::AverageCashPerGuest,
|
||||
std::clamp(static_cast<int32_t>(double_val[0] * 10), 0.00_GBP, 1000.00_GBP));
|
||||
ScenarioSetSetting::AverageCashPerGuest, std::clamp(ToMoney32FromGBP(double_val[0]), 0.00_GBP, 1000.00_GBP));
|
||||
scenarioSetSetting.SetCallback([&console](const GameAction*, const GameActions::Result* res) {
|
||||
if (res->Error != GameActions::Status::Ok)
|
||||
console.WriteLineError("set guest_initial_cash command failed, likely due to permissions.");
|
||||
|
@ -977,7 +977,7 @@ static int32_t cc_set(InteractiveConsole& console, const arguments_t& argv)
|
|||
else if (argv[0] == "land_rights_cost" && invalidArguments(&invalidArgs, double_valid[0]))
|
||||
{
|
||||
auto scenarioSetSetting = ScenarioSetSettingAction(
|
||||
ScenarioSetSetting::CostToBuyLand, std::clamp(static_cast<int32_t>(double_val[0] * 10), 0.00_GBP, 200.00_GBP));
|
||||
ScenarioSetSetting::CostToBuyLand, std::clamp(ToMoney32FromGBP(double_val[0]), 0.00_GBP, 200.00_GBP));
|
||||
scenarioSetSetting.SetCallback([&console](const GameAction*, const GameActions::Result* res) {
|
||||
if (res->Error != GameActions::Status::Ok)
|
||||
console.WriteLineError("set land_rights_cost command failed, likely due to permissions.");
|
||||
|
@ -990,7 +990,7 @@ static int32_t cc_set(InteractiveConsole& console, const arguments_t& argv)
|
|||
{
|
||||
auto scenarioSetSetting = ScenarioSetSettingAction(
|
||||
ScenarioSetSetting::CostToBuyConstructionRights,
|
||||
std::clamp(static_cast<int32_t>(double_val[0] * 10), 0.00_GBP, 200.00_GBP));
|
||||
std::clamp(ToMoney32FromGBP(double_val[0]), 0.00_GBP, 200.00_GBP));
|
||||
scenarioSetSetting.SetCallback([&console](const GameAction*, const GameActions::Result* res) {
|
||||
if (res->Error != GameActions::Status::Ok)
|
||||
console.WriteLineError("set construction_rights_cost command failed, likely due to permissions.");
|
||||
|
|
|
@ -500,7 +500,7 @@ money32 string_to_money(const char* string_to_monetise)
|
|||
number /= (currencyDesc->rate / 10.0);
|
||||
|
||||
// Check if MONEY resulted in overflow
|
||||
uint64_t result = std::min<uint64_t>(number * 10.0, (std::numeric_limits<uint32_t>::max)());
|
||||
uint64_t result = std::min<uint64_t>(ToMoney32FromGBP(number), (std::numeric_limits<uint32_t>::max)());
|
||||
result *= sign;
|
||||
return static_cast<uint32_t>(result);
|
||||
}
|
||||
|
|
|
@ -504,7 +504,8 @@ money64 Park::CalculateRideValue(const Ride* ride) const
|
|||
if (ride != nullptr && ride->value != RIDE_VALUE_UNDEFINED)
|
||||
{
|
||||
const auto& rtd = ride->GetRideTypeDescriptor();
|
||||
result = (ride->value * 10LL) * (static_cast<money64>(ride_customers_in_last_5_minutes(ride)) + rtd.BonusValue * 4LL);
|
||||
result = ToMoney32FromGBP(static_cast<double long>(ride->value))
|
||||
* (static_cast<money64>(ride_customers_in_last_5_minutes(ride)) + rtd.BonusValue * 4LL);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue