1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-26 16:24:35 +01:00
Files
OpenRCT2/src/openrct2/ride/MazeCost.cpp
2025-03-09 00:26:25 +01:00

35 lines
1.3 KiB
C++

/*****************************************************************************
* Copyright (c) 2014-2025 OpenRCT2 developers
*
* For a complete list of all authors, please refer to contributors.md
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
*
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
#include "MazeCost.h"
#include "../core/Money.hpp"
#include "../world/Location.hpp"
#include "../world/tile_element/SurfaceElement.h"
#include "Ride.h"
#include "RideData.h"
#include "TrackData.h"
using namespace OpenRCT2::TrackMetaData;
namespace OpenRCT2
{
money64 MazeCalculateCost(money64 constructionCost, const Ride& ride, const CoordsXYZ& loc)
{
const auto& ted = GetTrackElementDescriptor(TrackElemType::Maze);
money64 price = (ride.getRideTypeDescriptor().BuildCosts.TrackPrice * ted.priceModifier) >> 16;
auto surfaceElement = MapGetSurfaceElementAt(loc);
auto heightDifference = (loc.z - surfaceElement->GetBaseZ()) / kCoordsZPerTinyZ;
money64 supportCost = heightDifference * ride.getRideTypeDescriptor().BuildCosts.SupportPrice;
return constructionCost + price + supportCost;
}
} // namespace OpenRCT2