From ba8690d970946ae4ca1ad06b7d0fcd8fd49c1582 Mon Sep 17 00:00:00 2001 From: Duncan Date: Tue, 22 Mar 2022 21:35:44 +0000 Subject: [PATCH] Move *10 on removal/price to the object load function (#16846) This simplifies the code and ensures that money32/16 is at the same base for all users of these objects --- src/openrct2-ui/windows/Scenery.cpp | 4 ++-- src/openrct2/actions/LandSetHeightAction.cpp | 2 +- src/openrct2/actions/LargeSceneryPlaceAction.cpp | 4 ++-- src/openrct2/actions/LargeSceneryRemoveAction.cpp | 4 ++-- src/openrct2/actions/SmallSceneryPlaceAction.cpp | 4 ++-- src/openrct2/actions/SmallSceneryRemoveAction.cpp | 4 ++-- src/openrct2/object/LargeSceneryObject.cpp | 10 +++++----- src/openrct2/object/SmallSceneryObject.cpp | 10 +++++----- src/openrct2/world/ConstructionClearance.cpp | 2 +- src/openrct2/world/Scenery.h | 12 ++++++------ 10 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/openrct2-ui/windows/Scenery.cpp b/src/openrct2-ui/windows/Scenery.cpp index c17319285a..fdb89b8658 100644 --- a/src/openrct2-ui/windows/Scenery.cpp +++ b/src/openrct2-ui/windows/Scenery.cpp @@ -1127,7 +1127,7 @@ private: auto* sceneryEntry = get_small_scenery_entry(selectedScenery.EntryIndex); if (sceneryEntry != nullptr) { - price = sceneryEntry->price * 10; + price = sceneryEntry->price; name = sceneryEntry->name; } break; @@ -1157,7 +1157,7 @@ private: auto* sceneryEntry = get_large_scenery_entry(selectedScenery.EntryIndex); if (sceneryEntry != nullptr) { - price = sceneryEntry->price * 10; + price = sceneryEntry->price; name = sceneryEntry->name; } break; diff --git a/src/openrct2/actions/LandSetHeightAction.cpp b/src/openrct2/actions/LandSetHeightAction.cpp index c2fdcefcbc..20137a3c6b 100644 --- a/src/openrct2/actions/LandSetHeightAction.cpp +++ b/src/openrct2/actions/LandSetHeightAction.cpp @@ -246,7 +246,7 @@ money32 LandSetHeightAction::GetSmallSceneryRemovalCost() const if (sceneryEntry == nullptr) continue; - cost += MONEY(sceneryEntry->removal_price, 0); + cost += sceneryEntry->removal_price; } return cost; diff --git a/src/openrct2/actions/LargeSceneryPlaceAction.cpp b/src/openrct2/actions/LargeSceneryPlaceAction.cpp index 8429700015..63ebeada1a 100644 --- a/src/openrct2/actions/LargeSceneryPlaceAction.cpp +++ b/src/openrct2/actions/LargeSceneryPlaceAction.cpp @@ -171,7 +171,7 @@ GameActions::Result LargeSceneryPlaceAction::Query() const // Force ride construction to recheck area _currentTrackSelectionFlags |= TRACK_SELECTION_FLAG_RECHECK; - res.Cost = (sceneryEntry->price * 10) + supportsCost; + res.Cost = sceneryEntry->price + supportsCost; res.SetData(std::move(resultData)); return res; @@ -306,7 +306,7 @@ GameActions::Result LargeSceneryPlaceAction::Execute() const // Force ride construction to recheck area _currentTrackSelectionFlags |= TRACK_SELECTION_FLAG_RECHECK; - res.Cost = (sceneryEntry->price * 10) + supportsCost; + res.Cost = sceneryEntry->price + supportsCost; res.SetData(std::move(resultData)); return res; diff --git a/src/openrct2/actions/LargeSceneryRemoveAction.cpp b/src/openrct2/actions/LargeSceneryRemoveAction.cpp index a2bfda9f9e..bf2cc4f036 100644 --- a/src/openrct2/actions/LargeSceneryRemoveAction.cpp +++ b/src/openrct2/actions/LargeSceneryRemoveAction.cpp @@ -116,7 +116,7 @@ GameActions::Result LargeSceneryRemoveAction::Query() const } if (calculate_cost) - res.Cost = sceneryEntry->removal_price * 10; + res.Cost = sceneryEntry->removal_price; return res; } @@ -183,7 +183,7 @@ GameActions::Result LargeSceneryRemoveAction::Execute() const } } - res.Cost = sceneryEntry->removal_price * 10; + res.Cost = sceneryEntry->removal_price; return res; } diff --git a/src/openrct2/actions/SmallSceneryPlaceAction.cpp b/src/openrct2/actions/SmallSceneryPlaceAction.cpp index ca7542dde8..9541569303 100644 --- a/src/openrct2/actions/SmallSceneryPlaceAction.cpp +++ b/src/openrct2/actions/SmallSceneryPlaceAction.cpp @@ -271,7 +271,7 @@ GameActions::Result SmallSceneryPlaceAction::Query() const res.SetData(SmallSceneryPlaceActionResult{ groundFlags, 0, 0 }); res.Expenditure = ExpenditureType::Landscaping; - res.Cost = (sceneryEntry->price * 10) + canBuild.Cost; + res.Cost = sceneryEntry->price + canBuild.Cost; return res; } @@ -405,7 +405,7 @@ GameActions::Result SmallSceneryPlaceAction::Execute() const } res.Expenditure = ExpenditureType::Landscaping; - res.Cost = (sceneryEntry->price * 10) + canBuild.Cost; + res.Cost = sceneryEntry->price + canBuild.Cost; auto* sceneryElement = TileElementInsert( CoordsXYZ{ _loc, zLow }, quarterTile.GetBaseQuarterOccupied()); diff --git a/src/openrct2/actions/SmallSceneryRemoveAction.cpp b/src/openrct2/actions/SmallSceneryRemoveAction.cpp index 358cb19634..3c62183fec 100644 --- a/src/openrct2/actions/SmallSceneryRemoveAction.cpp +++ b/src/openrct2/actions/SmallSceneryRemoveAction.cpp @@ -68,7 +68,7 @@ GameActions::Result SmallSceneryRemoveAction::Query() const GameActions::Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); } - res.Cost = entry->removal_price * 10; + res.Cost = entry->removal_price; res.Expenditure = ExpenditureType::Landscaping; res.Position = _loc; @@ -117,7 +117,7 @@ GameActions::Result SmallSceneryRemoveAction::Execute() const GameActions::Status::InvalidParameters, STR_CANT_REMOVE_THIS, STR_INVALID_SELECTION_OF_OBJECTS); } - res.Cost = entry->removal_price * 10; + res.Cost = entry->removal_price; res.Expenditure = ExpenditureType::Landscaping; res.Position = _loc; diff --git a/src/openrct2/object/LargeSceneryObject.cpp b/src/openrct2/object/LargeSceneryObject.cpp index 570a524b5d..602229781f 100644 --- a/src/openrct2/object/LargeSceneryObject.cpp +++ b/src/openrct2/object/LargeSceneryObject.cpp @@ -29,8 +29,8 @@ void LargeSceneryObject::ReadLegacy(IReadObjectContext* context, OpenRCT2::IStre stream->Seek(6, OpenRCT2::STREAM_SEEK_CURRENT); _legacyType.tool_id = static_cast(stream->ReadValue()); _legacyType.flags = stream->ReadValue(); - _legacyType.price = stream->ReadValue(); - _legacyType.removal_price = stream->ReadValue(); + _legacyType.price = stream->ReadValue() * 10; + _legacyType.removal_price = stream->ReadValue() * 10; stream->Seek(5, OpenRCT2::STREAM_SEEK_CURRENT); _legacyType.scenery_tab_id = OBJECT_ENTRY_INDEX_NULL; _legacyType.scrolling_mode = stream->ReadValue(); @@ -61,7 +61,7 @@ void LargeSceneryObject::ReadLegacy(IReadObjectContext* context, OpenRCT2::IStre if (_legacyType.removal_price <= 0) { // Make sure you don't make a profit when placing then removing. - money16 reimbursement = _legacyType.removal_price; + const auto reimbursement = _legacyType.removal_price; if (reimbursement > _legacyType.price) { context->LogError(ObjectError::InvalidProperty, "Sell price can not be more than buy price."); @@ -140,8 +140,8 @@ void LargeSceneryObject::ReadJson(IReadObjectContext* context, json_t& root) { _legacyType.tool_id = Cursor::FromString(Json::GetString(properties["cursor"]), CursorID::StatueDown); - _legacyType.price = Json::GetNumber(properties["price"]); - _legacyType.removal_price = Json::GetNumber(properties["removalPrice"]); + _legacyType.price = Json::GetNumber(properties["price"]) * 10; + _legacyType.removal_price = Json::GetNumber(properties["removalPrice"]) * 10; _legacyType.scrolling_mode = Json::GetNumber(properties["scrollingMode"], SCROLLING_MODE_NONE); diff --git a/src/openrct2/object/SmallSceneryObject.cpp b/src/openrct2/object/SmallSceneryObject.cpp index 2ec57336be..fecaa5902a 100644 --- a/src/openrct2/object/SmallSceneryObject.cpp +++ b/src/openrct2/object/SmallSceneryObject.cpp @@ -30,8 +30,8 @@ void SmallSceneryObject::ReadLegacy(IReadObjectContext* context, OpenRCT2::IStre _legacyType.flags = stream->ReadValue(); _legacyType.height = stream->ReadValue(); _legacyType.tool_id = static_cast(stream->ReadValue()); - _legacyType.price = stream->ReadValue(); - _legacyType.removal_price = stream->ReadValue(); + _legacyType.price = stream->ReadValue() * 10; + _legacyType.removal_price = stream->ReadValue() * 10; stream->Seek(4, OpenRCT2::STREAM_SEEK_CURRENT); _legacyType.animation_delay = stream->ReadValue(); _legacyType.animation_mask = stream->ReadValue(); @@ -63,7 +63,7 @@ void SmallSceneryObject::ReadLegacy(IReadObjectContext* context, OpenRCT2::IStre if (_legacyType.removal_price <= 0) { // Make sure you don't make a profit when placing then removing. - money16 reimbursement = _legacyType.removal_price; + const auto reimbursement = _legacyType.removal_price; if (reimbursement > _legacyType.price) { context->LogError(ObjectError::InvalidProperty, "Sell price can not be more than buy price."); @@ -231,8 +231,8 @@ void SmallSceneryObject::ReadJson(IReadObjectContext* context, json_t& root) { _legacyType.height = Json::GetNumber(properties["height"]); _legacyType.tool_id = Cursor::FromString(Json::GetString(properties["cursor"]), CursorID::StatueDown); - _legacyType.price = Json::GetNumber(properties["price"]); - _legacyType.removal_price = Json::GetNumber(properties["removalPrice"]); + _legacyType.price = Json::GetNumber(properties["price"]) * 10; + _legacyType.removal_price = Json::GetNumber(properties["removalPrice"]) * 10; _legacyType.animation_delay = Json::GetNumber(properties["animationDelay"]); _legacyType.animation_mask = Json::GetNumber(properties["animationMask"]); _legacyType.num_frames = Json::GetNumber(properties["numFrames"]); diff --git a/src/openrct2/world/ConstructionClearance.cpp b/src/openrct2/world/ConstructionClearance.cpp index f21fa3e787..3096683a26 100644 --- a/src/openrct2/world/ConstructionClearance.cpp +++ b/src/openrct2/world/ConstructionClearance.cpp @@ -37,7 +37,7 @@ static int32_t map_place_clear_func( } if (!(gParkFlags & PARK_FLAGS_NO_MONEY) && scenery != nullptr) - *price += scenery->removal_price * 10; + *price += scenery->removal_price; if (flags & GAME_COMMAND_FLAG_GHOST) return 0; diff --git a/src/openrct2/world/Scenery.h b/src/openrct2/world/Scenery.h index e5d034b1d8..6dc10c325e 100644 --- a/src/openrct2/world/Scenery.h +++ b/src/openrct2/world/Scenery.h @@ -80,8 +80,8 @@ struct LargeSceneryEntry : SceneryEntryBase { CursorID tool_id; uint8_t flags; - int16_t price; - int16_t removal_price; + money32 price; + money32 removal_price; rct_large_scenery_tile* tiles; ObjectEntryIndex scenery_tab_id; uint8_t scrolling_mode; @@ -126,8 +126,8 @@ struct SmallSceneryEntry : SceneryEntryBase uint32_t flags; uint8_t height; CursorID tool_id; - int16_t price; - int16_t removal_price; + money32 price; + money32 removal_price; uint8_t* frame_offsets; uint16_t animation_delay; uint16_t animation_mask; @@ -146,7 +146,7 @@ struct WallSceneryEntry : SceneryEntryBase uint8_t flags; uint8_t height; uint8_t flags2; - int16_t price; + money16 price; ObjectEntryIndex scenery_tab_id; uint8_t scrolling_mode; }; @@ -157,7 +157,7 @@ struct PathBitEntry : SceneryEntryBase uint16_t flags; PathBitDrawType draw_type; CursorID tool_id; - int16_t price; + money16 price; ObjectEntryIndex scenery_tab_id; };