1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-18 12:33:17 +01:00

Remove old game command for MazePlaceTrack

This commit is contained in:
duncanspumpkin
2019-10-20 15:23:36 +01:00
parent 783ae13538
commit 5842b851c2
4 changed files with 2 additions and 146 deletions

View File

@@ -1041,7 +1041,7 @@ GAME_COMMAND_POINTER* new_game_command_table[GAME_COMMAND_COUNT] = {
nullptr,
game_command_place_track_design,
nullptr,
game_command_place_maze_design,
nullptr,
nullptr,
nullptr,
nullptr,

View File

@@ -68,7 +68,7 @@ enum GAME_COMMAND
GAME_COMMAND_SET_RESEARCH_FUNDING, // GA
GAME_COMMAND_PLACE_TRACK_DESIGN,
GAME_COMMAND_START_MARKETING_CAMPAIGN, // GA
GAME_COMMAND_PLACE_MAZE_DESIGN,
GAME_COMMAND_PLACE_MAZE_DESIGN, // GA
GAME_COMMAND_PLACE_BANNER, // GA
GAME_COMMAND_REMOVE_BANNER, // GA
GAME_COMMAND_SET_SCENERY_COLOUR, // GA

View File

@@ -2071,135 +2071,6 @@ static money32 place_track_design(int16_t x, int16_t y, int16_t z, uint8_t flags
return cost;
}
static money32 place_maze_design(uint8_t flags, Ride* ride, uint16_t mazeEntry, int16_t x, int16_t y, int16_t z)
{
gCommandExpenditureType = RCT_EXPENDITURE_TYPE_RIDE_CONSTRUCTION;
gCommandPosition.x = x + 8;
gCommandPosition.y = y + 8;
gCommandPosition.z = z;
if (!map_check_free_elements_and_reorganise(1))
{
return MONEY32_UNDEFINED;
}
if ((z & 15) != 0)
{
return MONEY32_UNDEFINED;
}
if (!(flags & GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED))
{
if (game_is_paused() && !gCheatsBuildInPauseMode)
{
gGameCommandErrorText = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED;
return MONEY32_UNDEFINED;
}
}
if (flags & GAME_COMMAND_FLAG_APPLY)
{
if (!(flags & GAME_COMMAND_FLAG_GHOST))
{
footpath_remove_litter(x, y, z);
wall_remove_at(floor2(x, 32), floor2(y, 32), z, z + 32);
}
}
if (!gCheatsSandboxMode)
{
if (!map_is_location_owned({ x, y, z }))
{
return MONEY32_UNDEFINED;
}
}
// Check support height
if (!gCheatsDisableSupportLimits)
{
auto surfaceElement = map_get_surface_element_at({ x, y });
uint8_t supportZ = (z + 32) >> 3;
if (supportZ > surfaceElement->base_height)
{
uint8_t supportHeight = (supportZ - surfaceElement->base_height) / 2;
uint8_t maxSupportHeight = RideData5[RIDE_TYPE_MAZE].max_height;
if (supportHeight > maxSupportHeight)
{
gGameCommandErrorText = STR_TOO_HIGH_FOR_SUPPORTS;
return MONEY32_UNDEFINED;
}
}
}
money32 cost = 0;
// Clearance checks
if (!gCheatsDisableClearanceChecks)
{
int32_t fx = floor2(x, 32);
int32_t fy = floor2(y, 32);
int32_t fz0 = z >> 3;
int32_t fz1 = fz0 + 4;
if (!map_can_construct_with_clear_at(
fx, fy, fz0, fz1, &map_place_non_scenery_clear_func, { 0b1111, 0 }, flags, &cost, CREATE_CROSSING_MODE_NONE))
{
return MONEY32_UNDEFINED;
}
uint8_t elctgaw = gMapGroundFlags;
if (elctgaw & ELEMENT_IS_UNDERWATER)
{
gGameCommandErrorText = STR_RIDE_CANT_BUILD_THIS_UNDERWATER;
return MONEY32_UNDEFINED;
}
if (elctgaw & ELEMENT_IS_UNDERGROUND)
{
gGameCommandErrorText = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND;
return MONEY32_UNDEFINED;
}
}
// Calculate price
money32 price = 0;
if (!(gParkFlags & PARK_FLAGS_NO_MONEY))
{
price = RideTrackCosts[ride->type].track_price * TrackPricing[TRACK_ELEM_MAZE];
price = (price >> 17) * 10;
}
cost += price;
if (flags & GAME_COMMAND_FLAG_APPLY)
{
// Place track element
int32_t fx = floor2(x, 32);
int32_t fy = floor2(y, 32);
int32_t fz = z >> 3;
TileElement* tileElement = tile_element_insert({ fx >> 5, fy >> 5, fz }, 0b1111);
tileElement->clearance_height = fz + 4;
tileElement->SetType(TILE_ELEMENT_TYPE_TRACK);
tileElement->AsTrack()->SetTrackType(TRACK_ELEM_MAZE);
tileElement->AsTrack()->SetRideIndex(ride->id);
tileElement->AsTrack()->SetMazeEntry(mazeEntry);
if (flags & GAME_COMMAND_FLAG_GHOST)
{
tileElement->SetGhost(true);
}
map_invalidate_element(fx, fy, tileElement);
ride->maze_tiles++;
ride->stations[0].Height = tileElement->base_height;
ride->stations[0].Start.xy = 0;
if (ride->maze_tiles == 1)
{
ride->overall_view.x = fx / 32;
ride->overall_view.y = fy / 32;
}
}
return cost;
}
/**
*
* rct2: 0x006D13FE
@@ -2217,19 +2088,6 @@ void game_command_place_track_design(
*edi = rideIndex;
}
/**
*
* rct2: 0x006CDEE4
*/
void game_command_place_maze_design(
int32_t* eax, int32_t* ebx, int32_t* ecx, int32_t* edx, [[maybe_unused]] int32_t* esi, int32_t* edi,
[[maybe_unused]] int32_t* ebp)
{
auto ride = get_ride(*edx & 0xFF);
*ebx = place_maze_design(
*ebx & 0xFF, ride, ((*ebx >> 8) & 0xFF) | (((*edx >> 8) & 0xFF) << 8), *eax & 0xFFFF, *ecx & 0xFFFF, *edi & 0xFFFF);
}
#pragma region Track Design Preview
/**

View File

@@ -207,8 +207,6 @@ int32_t place_virtual_track(
void game_command_place_track_design(
int32_t* eax, int32_t* ebx, int32_t* ecx, int32_t* edx, int32_t* esi, int32_t* edi, int32_t* ebp);
void game_command_place_maze_design(
int32_t* eax, int32_t* ebx, int32_t* ecx, int32_t* edx, int32_t* esi, int32_t* edi, int32_t* ebp);
///////////////////////////////////////////////////////////////////////////////
// Track design preview