mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-24 07:14:31 +01:00
Part of #13874: Replace Sequence Element Wall table
This commit is contained in:
@@ -400,11 +400,10 @@ GameActions::Result::Ptr TrackPlaceAction::Execute() const
|
||||
|
||||
uint32_t rideTypeFlags = ride->GetRideTypeDescriptor().Flags;
|
||||
|
||||
const uint8_t(*wallEdges)[16];
|
||||
wallEdges = &TrackSequenceElementAllowedWallEdges[_trackType];
|
||||
const auto& teDescriptor = GetTrackElementDescriptor(_trackType);
|
||||
auto wallEdges = teDescriptor.SequenceElementAllowedWallEdges;
|
||||
|
||||
money32 cost = 0;
|
||||
const auto& teDescriptor = GetTrackElementDescriptor(_trackType);
|
||||
const rct_preview_track* trackBlock = teDescriptor.Block;
|
||||
for (int32_t blockIndex = 0; trackBlock->index != 0xFF; trackBlock++, blockIndex++)
|
||||
{
|
||||
@@ -452,7 +451,7 @@ GameActions::Result::Ptr TrackPlaceAction::Execute() const
|
||||
else
|
||||
{
|
||||
// Remove walls in the directions this track intersects
|
||||
uint8_t intersectingDirections = (*wallEdges)[blockIndex];
|
||||
uint8_t intersectingDirections = wallEdges[blockIndex];
|
||||
intersectingDirections ^= 0x0F;
|
||||
intersectingDirections = rol4(intersectingDirections, _origin.direction);
|
||||
for (int32_t i = 0; i < NumOrthogonalDirections; i++)
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "../world/Surface.h"
|
||||
#include "../world/Wall.h"
|
||||
|
||||
using namespace OpenRCT2::TrackMetaData;
|
||||
WallPlaceActionResult::WallPlaceActionResult()
|
||||
: GameActions::Result(GameActions::Status::Ok, STR_CANT_BUILD_THIS_HERE)
|
||||
{
|
||||
@@ -592,7 +593,8 @@ bool WallPlaceAction::TrackIsAllowedWallEdges(
|
||||
{
|
||||
if (!GetRideTypeDescriptor(rideType).HasFlag(RIDE_TYPE_FLAG_TRACK_NO_WALLS))
|
||||
{
|
||||
if (TrackSequenceElementAllowedWallEdges[trackType][trackSequence] & (1 << direction))
|
||||
const auto& teDescriptor = GetTrackElementDescriptor(trackType);
|
||||
if (teDescriptor.SequenceElementAllowedWallEdges[trackSequence] & (1 << direction))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -4587,7 +4587,7 @@ const static uint32_t TrackHeightMarkerPositions[TrackElemType::Count] = {
|
||||
};
|
||||
|
||||
/** rct2: 0x00999A94 */
|
||||
const uint8_t TrackSequenceElementAllowedWallEdges[TrackElemType::Count][MaxSequencesPerPiece] = {
|
||||
const static uint8_t TrackSequenceElementAllowedWallEdges[TrackElemType::Count][MaxSequencesPerPiece] = {
|
||||
{ 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Flat
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::EndStation
|
||||
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::BeginStation
|
||||
|
||||
@@ -57,8 +57,6 @@ constexpr const dodgems_track_size DodgemsTrackSize(track_type_t type)
|
||||
return { 0, 0, 0, 0 };
|
||||
}
|
||||
|
||||
extern const uint8_t TrackSequenceElementAllowedWallEdges[TrackElemType::Count][16];
|
||||
|
||||
struct TrackElementDescriptor
|
||||
{
|
||||
rct_track_coordinates Coordinates;
|
||||
|
||||
Reference in New Issue
Block a user