mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-15 19:13:07 +01:00
Review changes
This commit is contained in:
@@ -16,6 +16,7 @@
|
||||
|
||||
#include "map_element.h"
|
||||
#include "../../addresses.h"
|
||||
#include "../../config.h"
|
||||
#include "../../game.h"
|
||||
#include "../../interface/viewport.h"
|
||||
#include "../../paint/paint.h"
|
||||
@@ -23,43 +24,43 @@
|
||||
#include "../../world/map.h"
|
||||
#include "../../world/scenery.h"
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006DFF47
|
||||
*/
|
||||
void scenery_paint(uint8 direction, int height, rct_map_element* mapElement) {
|
||||
//RCT2_CALLPROC_X(0x6DFF47, 0, 0, direction, height, (int)mapElement, 0, 0); return;
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_PAINT_SETUP_CURRENT_TYPE, uint8_t) = VIEWPORT_INTERACTION_ITEM_SCENERY;
|
||||
RCT2_GLOBAL(0x009DEA52, sint16) = 0;
|
||||
RCT2_GLOBAL(0x009DEA54, sint16) = 0;
|
||||
int ebx = 0;
|
||||
rct_xyz16 boxlength;
|
||||
rct_xyz16 boxoffset;
|
||||
boxoffset.x = 0;
|
||||
boxoffset.y = 0;
|
||||
boxoffset.z = height;
|
||||
int baseImageid = 0;
|
||||
if (RCT2_GLOBAL(0x009DEA6F, uint8) & 1) {
|
||||
rct_map_element *mapElement2 = RCT2_GLOBAL(0x00F63674, rct_map_element*);
|
||||
while (mapElement2 != mapElement) {
|
||||
mapElement2++;
|
||||
if ((mapElement2 - 1) != (rct_map_element*)0xFFFFFFFF) {
|
||||
continue;
|
||||
}
|
||||
ebx = 0x21700000;
|
||||
break;
|
||||
if (track_design_save_contains_map_element(mapElement)) {
|
||||
baseImageid = 0x21700000;
|
||||
}
|
||||
}
|
||||
if (mapElement->flags & MAP_ELEMENT_FLAG_GHOST) {
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_PAINT_SETUP_CURRENT_TYPE, uint8_t) = VIEWPORT_INTERACTION_ITEM_NONE;
|
||||
ebx = RCT2_ADDRESS(0x993CC4, uint32_t)[RCT2_GLOBAL(RCT2_ADDRESS_CONFIG_CONSTRUCTION_MARKER, uint8)];
|
||||
baseImageid = RCT2_ADDRESS(0x993CC4, uint32_t)[gConfigGeneral.construction_marker_colour];
|
||||
}
|
||||
uint32 dword_F64EB0 = ebx;
|
||||
uint32 dword_F64EB0 = baseImageid;
|
||||
|
||||
rct_scenery_entry *entry = (rct_scenery_entry*)gSmallSceneryEntries[mapElement->properties.scenery.type];;
|
||||
ebx = entry->image + direction;
|
||||
RCT2_GLOBAL(0x00F64ED6, uint16) = 2;
|
||||
RCT2_GLOBAL(0x00F64ED8, uint16) = 2;
|
||||
int ecx;
|
||||
rct_scenery_entry *entry = get_small_scenery_entry(mapElement->properties.scenery.type);
|
||||
baseImageid = entry->image + direction;
|
||||
boxlength.x = 2;
|
||||
boxlength.y = 2;
|
||||
sint8 x_offset = 0;
|
||||
sint8 y_offset = 0;
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG_FULL_TILE) {
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG24) {
|
||||
// 6DFFE3:
|
||||
RCT2_GLOBAL(0x009DEA52, sint16) = RCT2_ADDRESS(0x009A3E7C, uint16)[direction * 4];
|
||||
RCT2_GLOBAL(0x009DEA54, sint16) = RCT2_ADDRESS(0x009A3E7E, uint16)[direction * 4];
|
||||
RCT2_GLOBAL(0x00F64ED6, uint16) = RCT2_ADDRESS(0x009A3E8C, uint16)[direction * 4];
|
||||
RCT2_GLOBAL(0x00F64ED8, uint16) = RCT2_ADDRESS(0x009A3E8E, uint16)[direction * 4];
|
||||
boxoffset.x = RCT2_ADDRESS(0x009A3E7C, uint16)[direction * 4];
|
||||
boxoffset.y = RCT2_ADDRESS(0x009A3E7E, uint16)[direction * 4];
|
||||
boxlength.x = RCT2_ADDRESS(0x009A3E8C, uint16)[direction * 4];
|
||||
boxlength.y = RCT2_ADDRESS(0x009A3E8E, uint16)[direction * 4];
|
||||
x_offset = 3;
|
||||
y_offset = 3;
|
||||
} else {
|
||||
@@ -68,56 +69,55 @@ void scenery_paint(uint8 direction, int height, rct_map_element* mapElement) {
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG_VOFFSET_CENTRE) {
|
||||
x_offset = 3;
|
||||
y_offset = 3;
|
||||
RCT2_GLOBAL(0x00F64ED6, uint16) = 26;
|
||||
RCT2_GLOBAL(0x00F64ED8, uint16) = 26;
|
||||
boxlength.x = 26;
|
||||
boxlength.y = 26;
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG_ALLOW_WALLS) {
|
||||
x_offset = 1;
|
||||
y_offset = 1;
|
||||
RCT2_GLOBAL(0x00F64ED6, uint16) = 30;
|
||||
RCT2_GLOBAL(0x00F64ED8, uint16) = 30;
|
||||
boxlength.x = 30;
|
||||
boxlength.y = 30;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 6DFFC2:
|
||||
ecx = ((mapElement->type >> 6) + get_current_rotation()) & 3;
|
||||
uint32 ecx = ((mapElement->type >> 6) + get_current_rotation()) & 3;
|
||||
x_offset = RCT2_ADDRESS(0x009A3E74, sint8)[ecx * 2];
|
||||
y_offset = RCT2_ADDRESS(0x009A3E75, sint8)[ecx * 2];
|
||||
}
|
||||
// 6E0074:
|
||||
RCT2_GLOBAL(0x009DEA52, sint16) = x_offset;
|
||||
RCT2_GLOBAL(0x009DEA54, sint16) = y_offset;
|
||||
RCT2_GLOBAL(0x009DEA56, sint16) = height;
|
||||
uint8 bblz = entry->small_scenery.height - 4;
|
||||
if (bblz > 0x80) {
|
||||
bblz = 0x80;
|
||||
boxoffset.x = x_offset;
|
||||
boxoffset.y = y_offset;
|
||||
boxlength.z = entry->small_scenery.height - 4;
|
||||
if (boxlength.z > 0x80) {
|
||||
boxlength.z = 0x80;
|
||||
}
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG6) {
|
||||
if (mapElement->properties.scenery.age >= 40) {
|
||||
ebx += 4;
|
||||
baseImageid += 4;
|
||||
}
|
||||
if (mapElement->properties.scenery.age >= 55) {
|
||||
ebx += 4;
|
||||
baseImageid += 4;
|
||||
}
|
||||
}
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG_HAS_PRIMARY_COLOUR) {
|
||||
ebx |= ((mapElement->properties.scenery.colour_1 & 0x1F) << 19) | 0x20000000;
|
||||
baseImageid |= ((mapElement->properties.scenery.colour_1 & 0x1F) << 19) | 0x20000000;
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG_HAS_SECONDARY_COLOUR) {
|
||||
ebx |= ((mapElement->properties.scenery.colour_2 & 0x1F) << 24) | 0x80000000;
|
||||
baseImageid |= ((mapElement->properties.scenery.colour_2 & 0x1F) << 24) | 0x80000000;
|
||||
}
|
||||
}
|
||||
if (dword_F64EB0 != 0) {
|
||||
ebx = (ebx & 0x7FFFF) | dword_F64EB0;
|
||||
baseImageid = (baseImageid & 0x7FFFF) | dword_F64EB0;
|
||||
}
|
||||
if (!(entry->small_scenery.flags & SMALL_SCENERY_FLAG21)) {
|
||||
sub_98197C(ebx, x_offset, y_offset, RCT2_GLOBAL(0x00F64ED6, uint16), RCT2_GLOBAL(0x00F64ED8, uint16), bblz - 1, height, RCT2_GLOBAL(0x009DEA52, sint16), RCT2_GLOBAL(0x009DEA54, sint16), height, get_current_rotation());
|
||||
sub_98197C(baseImageid, x_offset, y_offset, boxlength.x, boxlength.y, boxlength.z - 1, height, boxoffset.x, boxoffset.y, boxoffset.z, get_current_rotation());
|
||||
}
|
||||
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG10) {
|
||||
if (dword_F64EB0 == 0) {
|
||||
// Draw transparent overlay:
|
||||
int image_id = (ebx & 0x7FFFF) + (((mapElement->properties.scenery.colour_1 & 0x1F) + 112) << 19) + 0x40000004;
|
||||
sub_98199C(image_id, x_offset, y_offset, RCT2_GLOBAL(0x00F64ED6, uint16), RCT2_GLOBAL(0x00F64ED8, uint16), bblz - 1, height, RCT2_GLOBAL(0x009DEA52, sint16), RCT2_GLOBAL(0x009DEA54, sint16), height, get_current_rotation());
|
||||
// Draw translucent overlay:
|
||||
int image_id = (baseImageid & 0x7FFFF) + (((mapElement->properties.scenery.colour_1 & 0x1F) + 112) << 19) + 0x40000004;
|
||||
sub_98199C(image_id, x_offset, y_offset, boxlength.x, boxlength.y, boxlength.z - 1, height, boxoffset.x, boxoffset.y, boxoffset.z, get_current_rotation());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -131,7 +131,7 @@ void scenery_paint(uint8 direction, int height, rct_map_element* mapElement) {
|
||||
if (dword_F64EB0 != 0) {
|
||||
image_id = (image_id & 0x7FFFF) | dword_F64EB0;
|
||||
}
|
||||
sub_98199C(image_id, x_offset, y_offset, RCT2_GLOBAL(0x00F64ED6, uint16), RCT2_GLOBAL(0x00F64ED8, uint16), bblz - 1, height, RCT2_GLOBAL(0x009DEA52, sint16), RCT2_GLOBAL(0x009DEA54, sint16), height, get_current_rotation());
|
||||
sub_98199C(image_id, x_offset, y_offset, boxlength.x, boxlength.y, boxlength.z - 1, height, boxoffset.x, boxoffset.y, boxoffset.z, get_current_rotation());
|
||||
} else
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG13) {
|
||||
// 6E043B:
|
||||
@@ -139,19 +139,19 @@ void scenery_paint(uint8 direction, int height, rct_map_element* mapElement) {
|
||||
if (dword_F64EB0 != 0) {
|
||||
image_id = (image_id & 0x7FFFF) | dword_F64EB0;
|
||||
}
|
||||
sub_98199C(image_id, x_offset, y_offset, RCT2_GLOBAL(0x00F64ED6, uint16), RCT2_GLOBAL(0x00F64ED8, uint16), bblz - 1, height, RCT2_GLOBAL(0x009DEA52, sint16), RCT2_GLOBAL(0x009DEA54, sint16), height, get_current_rotation());
|
||||
sub_98199C(image_id, x_offset, y_offset, boxlength.x, boxlength.y, boxlength.z - 1, height, boxoffset.x, boxoffset.y, boxoffset.z, get_current_rotation());
|
||||
|
||||
image_id = direction + entry->image + 4;
|
||||
if (dword_F64EB0 != 0) {
|
||||
image_id = (image_id & 0x7FFFF) | dword_F64EB0;
|
||||
}
|
||||
sub_98199C(image_id, x_offset, y_offset, RCT2_GLOBAL(0x00F64ED6, uint16), RCT2_GLOBAL(0x00F64ED8, uint16), bblz - 1, height, RCT2_GLOBAL(0x009DEA52, sint16), RCT2_GLOBAL(0x009DEA54, sint16), height, get_current_rotation());
|
||||
sub_98199C(image_id, x_offset, y_offset, boxlength.x, boxlength.y, boxlength.z - 1, height, boxoffset.x, boxoffset.y, boxoffset.z, get_current_rotation());
|
||||
|
||||
image_id = ((gCurrentTicks / 2) & 0xF) + entry->image + 24;
|
||||
if (dword_F64EB0 != 0) {
|
||||
image_id = (image_id & 0x7FFFF) | dword_F64EB0;
|
||||
}
|
||||
sub_98199C(image_id, x_offset, y_offset, RCT2_GLOBAL(0x00F64ED6, uint16), RCT2_GLOBAL(0x00F64ED8, uint16), bblz - 1, height, RCT2_GLOBAL(0x009DEA52, sint16), RCT2_GLOBAL(0x009DEA54, sint16), height, get_current_rotation());
|
||||
sub_98199C(image_id, x_offset, y_offset, boxlength.x, boxlength.y, boxlength.z - 1, height, boxoffset.x, boxoffset.y, boxoffset.z, get_current_rotation());
|
||||
} else
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG_IS_CLOCK) {
|
||||
// 6E035C:
|
||||
@@ -173,7 +173,7 @@ void scenery_paint(uint8 direction, int height, rct_map_element* mapElement) {
|
||||
if (dword_F64EB0 != 0) {
|
||||
image_id = (image_id & 0x7FFFF) | dword_F64EB0;
|
||||
}
|
||||
sub_98199C(image_id, x_offset, y_offset, RCT2_GLOBAL(0x00F64ED6, uint16), RCT2_GLOBAL(0x00F64ED8, uint16), bblz - 1, height, RCT2_GLOBAL(0x009DEA52, sint16), RCT2_GLOBAL(0x009DEA54, sint16), height, get_current_rotation());
|
||||
sub_98199C(image_id, x_offset, y_offset, boxlength.x, boxlength.y, boxlength.z - 1, height, boxoffset.x, boxoffset.y, boxoffset.z, get_current_rotation());
|
||||
|
||||
image_id = RCT2_GLOBAL(RCT2_ADDRESS_OS_TIME_MINUTE, uint16) + (direction * 15);
|
||||
if (image_id >= 60) {
|
||||
@@ -183,7 +183,7 @@ void scenery_paint(uint8 direction, int height, rct_map_element* mapElement) {
|
||||
if (dword_F64EB0 != 0) {
|
||||
image_id = (image_id & 0x7FFFF) | dword_F64EB0;
|
||||
}
|
||||
sub_98199C(image_id, x_offset, y_offset, RCT2_GLOBAL(0x00F64ED6, uint16), RCT2_GLOBAL(0x00F64ED8, uint16), bblz - 1, height, RCT2_GLOBAL(0x009DEA52, sint16), RCT2_GLOBAL(0x009DEA54, sint16), height, get_current_rotation());
|
||||
sub_98199C(image_id, x_offset, y_offset, boxlength.x, boxlength.y, boxlength.z - 1, height, boxoffset.x, boxoffset.y, boxoffset.z, get_current_rotation());
|
||||
} else
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG15) {
|
||||
// 6E02F6:
|
||||
@@ -191,7 +191,7 @@ void scenery_paint(uint8 direction, int height, rct_map_element* mapElement) {
|
||||
if (dword_F64EB0 != 0) {
|
||||
image_id = (image_id & 0x7FFFF) | dword_F64EB0;
|
||||
}
|
||||
sub_98199C(image_id, x_offset, y_offset, RCT2_GLOBAL(0x00F64ED6, uint16), RCT2_GLOBAL(0x00F64ED8, uint16), bblz - 1, height, RCT2_GLOBAL(0x009DEA52, sint16), RCT2_GLOBAL(0x009DEA54, sint16), height, get_current_rotation());
|
||||
sub_98199C(image_id, x_offset, y_offset, boxlength.x, boxlength.y, boxlength.z - 1, height, boxoffset.x, boxoffset.y, boxoffset.z, get_current_rotation());
|
||||
} else {
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG16) {
|
||||
// nothing
|
||||
@@ -225,9 +225,9 @@ void scenery_paint(uint8 direction, int height, rct_map_element* mapElement) {
|
||||
image_id = (image_id & 0x7FFFF) | dword_F64EB0;
|
||||
}
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG21) {
|
||||
sub_98197C(image_id, x_offset, y_offset, RCT2_GLOBAL(0x00F64ED6, uint16), RCT2_GLOBAL(0x00F64ED8, uint16), bblz - 1, height, RCT2_GLOBAL(0x009DEA52, sint16), RCT2_GLOBAL(0x009DEA54, sint16), height, get_current_rotation());
|
||||
sub_98197C(image_id, x_offset, y_offset, boxlength.x, boxlength.y, boxlength.z - 1, height, boxoffset.x, boxoffset.y, boxoffset.z, get_current_rotation());
|
||||
} else {
|
||||
sub_98199C(image_id, x_offset, y_offset, RCT2_GLOBAL(0x00F64ED6, uint16), RCT2_GLOBAL(0x00F64ED8, uint16), bblz - 1, height, RCT2_GLOBAL(0x009DEA52, sint16), RCT2_GLOBAL(0x009DEA54, sint16), height, get_current_rotation());
|
||||
sub_98199C(image_id, x_offset, y_offset, boxlength.x, boxlength.y, boxlength.z - 1, height, boxoffset.x, boxoffset.y, boxoffset.z, get_current_rotation());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -236,22 +236,22 @@ void scenery_paint(uint8 direction, int height, rct_map_element* mapElement) {
|
||||
if (mapElement->properties.scenery.colour_1 & 0x20) {
|
||||
if (!(entry->small_scenery.flags & SMALL_SCENERY_FLAG20)) {
|
||||
int ax = 0;
|
||||
int edx = height;
|
||||
if (edx & 0xF) {
|
||||
edx &= 0xFFFFFFF0;
|
||||
int supportHeight = height;
|
||||
if (supportHeight & 0xF) {
|
||||
supportHeight &= 0xFFFFFFF0;
|
||||
ax = 49;
|
||||
}
|
||||
int ebp = 0x20000000;
|
||||
uint32 supportImageColourFlags = 0x20000000;
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG26) {
|
||||
ebp = ((mapElement->properties.scenery.colour_1 & 0x1F) << 19) | 0x20000000;
|
||||
supportImageColourFlags = ((mapElement->properties.scenery.colour_1 & 0x1F) << 19) | 0x20000000;
|
||||
}
|
||||
if (dword_F64EB0 != 0) {
|
||||
ebp = dword_F64EB0;
|
||||
supportImageColourFlags = dword_F64EB0;
|
||||
}
|
||||
if (direction & 1) {
|
||||
wooden_b_supports_paint_setup(1, ax, edx, ebp);
|
||||
wooden_b_supports_paint_setup(1, ax, supportHeight, supportImageColourFlags);
|
||||
} else {
|
||||
wooden_b_supports_paint_setup(0, ax, edx, ebp);
|
||||
wooden_b_supports_paint_setup(0, ax, supportHeight, supportImageColourFlags);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -260,117 +260,35 @@ void scenery_paint(uint8 direction, int height, rct_map_element* mapElement) {
|
||||
uint16 word_F64F2A = height;
|
||||
height += 7;
|
||||
height &= 0xFFF8;
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_PAINT_TILE_MAX_HEIGHT, sint16) < height) {
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_PAINT_TILE_MAX_HEIGHT, sint16) = height;
|
||||
RCT2_GLOBAL(0x141E9DA, uint8) = 0x20;
|
||||
}
|
||||
paint_util_set_general_support_height(height, 0x20);
|
||||
// 6E05FF:
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG23) {
|
||||
height = word_F64F2A;
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG_FULL_TILE) {
|
||||
// 6E0825:
|
||||
RCT2_GLOBAL(0x141E9C4, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9C6, uint8) = 0x20;
|
||||
paint_util_set_segment_support_height(SEGMENT_C4, height, 0x20);
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG_VOFFSET_CENTRE) {
|
||||
RCT2_GLOBAL(0x141E9D0, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9D2, uint8) = 0x20;
|
||||
RCT2_GLOBAL(0x141E9D4, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9D6, uint8) = 0x20;
|
||||
RCT2_GLOBAL(0x141E9C8, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9CA, uint8) = 0x20;
|
||||
RCT2_GLOBAL(0x141E9CC, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9CE, uint8) = 0x20;
|
||||
RCT2_GLOBAL(0x141E9B8, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9BA, uint8) = 0x20;
|
||||
RCT2_GLOBAL(0x141E9BC, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9BE, uint8) = 0x20;
|
||||
RCT2_GLOBAL(0x141E9B4, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9B6, uint8) = 0x20;
|
||||
RCT2_GLOBAL(0x141E9C0, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9C2, uint8) = 0x20;
|
||||
paint_util_set_segment_support_height(SEGMENTS_ALL & ~SEGMENT_C4, height, 0x20);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (!(entry->small_scenery.flags & SMALL_SCENERY_FLAG_VOFFSET_CENTRE)) {
|
||||
return;
|
||||
}
|
||||
int cl = ((mapElement->type >> 6) + get_current_rotation()) & 3;
|
||||
// 6E075C:
|
||||
switch (cl) {
|
||||
case 0:
|
||||
RCT2_GLOBAL(0x141E9B4, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9B6, uint8) = 0x20;
|
||||
RCT2_GLOBAL(0x141E9C8, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9CA, uint8) = 0x20;
|
||||
RCT2_GLOBAL(0x141E9CC, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9CE, uint8) = 0x20;
|
||||
break;
|
||||
case 1:
|
||||
RCT2_GLOBAL(0x141E9BC, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9BE, uint8) = 0x20;
|
||||
RCT2_GLOBAL(0x141E9CC, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9CE, uint8) = 0x20;
|
||||
RCT2_GLOBAL(0x141E9D4, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9D6, uint8) = 0x20;
|
||||
break;
|
||||
case 2:
|
||||
RCT2_GLOBAL(0x141E9C0, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9C2, uint8) = 0x20;
|
||||
RCT2_GLOBAL(0x141E9D0, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9D2, uint8) = 0x20;
|
||||
RCT2_GLOBAL(0x141E9D4, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9D6, uint8) = 0x20;
|
||||
break;
|
||||
case 3:
|
||||
RCT2_GLOBAL(0x141E9B8, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9BA, uint8) = 0x20;
|
||||
RCT2_GLOBAL(0x141E9D0, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9D2, uint8) = 0x20;
|
||||
RCT2_GLOBAL(0x141E9C8, uint16) = height;
|
||||
RCT2_GLOBAL(0x141E9CA, uint8) = 0x20;
|
||||
break;
|
||||
}
|
||||
paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C8 | SEGMENT_CC, get_current_rotation()), height, 0x20);
|
||||
return;
|
||||
}
|
||||
if (entry->small_scenery.flags & (SMALL_SCENERY_FLAG27 | SMALL_SCENERY_FLAG_FULL_TILE)) {
|
||||
RCT2_GLOBAL(0x141E9C4, uint16) = 0xFFFF;
|
||||
paint_util_set_segment_support_height(SEGMENT_C4, 0xFFFF, 0);
|
||||
if (entry->small_scenery.flags & SMALL_SCENERY_FLAG_VOFFSET_CENTRE) {
|
||||
RCT2_GLOBAL(0x141E9D0, uint16) = 0xFFFF;
|
||||
RCT2_GLOBAL(0x141E9D4, uint16) = 0xFFFF;
|
||||
RCT2_GLOBAL(0x141E9C8, uint16) = 0xFFFF;
|
||||
RCT2_GLOBAL(0x141E9CC, uint16) = 0xFFFF;
|
||||
RCT2_GLOBAL(0x141E9B8, uint16) = 0xFFFF;
|
||||
RCT2_GLOBAL(0x141E9BC, uint16) = 0xFFFF;
|
||||
RCT2_GLOBAL(0x141E9B4, uint16) = 0xFFFF;
|
||||
RCT2_GLOBAL(0x141E9C0, uint16) = 0xFFFF;
|
||||
paint_util_set_segment_support_height(SEGMENTS_ALL & ~SEGMENT_C4, 0xFFFF, 0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (!(entry->small_scenery.flags & SMALL_SCENERY_FLAG_VOFFSET_CENTRE)) {
|
||||
return;
|
||||
}
|
||||
int cl = ((mapElement->type >> 6) + get_current_rotation()) & 3;
|
||||
switch (cl) {
|
||||
case 0:
|
||||
RCT2_GLOBAL(0x141E9B4, uint16) = 0xFFFF;
|
||||
RCT2_GLOBAL(0x141E9C8, uint16) = 0xFFFF;
|
||||
RCT2_GLOBAL(0x141E9CC, uint16) = 0xFFFF;
|
||||
break;
|
||||
case 1:
|
||||
RCT2_GLOBAL(0x141E9BC, uint16) = 0xFFFF;
|
||||
RCT2_GLOBAL(0x141E9CC, uint16) = 0xFFFF;
|
||||
RCT2_GLOBAL(0x141E9D4, uint16) = 0xFFFF;
|
||||
break;
|
||||
case 2:
|
||||
RCT2_GLOBAL(0x141E9C0, uint16) = 0xFFFF;
|
||||
RCT2_GLOBAL(0x141E9D0, uint16) = 0xFFFF;
|
||||
RCT2_GLOBAL(0x141E9D4, uint16) = 0xFFFF;
|
||||
break;
|
||||
case 3:
|
||||
RCT2_GLOBAL(0x141E9B8, uint16) = 0xFFFF;
|
||||
RCT2_GLOBAL(0x141E9D0, uint16) = 0xFFFF;
|
||||
RCT2_GLOBAL(0x141E9C8, uint16) = 0xFFFF;
|
||||
break;
|
||||
}
|
||||
paint_util_set_segment_support_height(paint_util_rotate_segments(SEGMENT_B4 | SEGMENT_C8 | SEGMENT_CC, get_current_rotation()), 0xFFFF, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -44,6 +44,7 @@ static uint8 _trackSaveDirection;
|
||||
|
||||
static bool track_design_save_should_select_scenery_around(int rideIndex, rct_map_element *mapElement);
|
||||
static void track_design_save_select_nearby_scenery_for_tile(int rideIndex, int cx, int cy);
|
||||
bool track_design_save_contains_map_element(rct_map_element *mapElement);
|
||||
static bool track_design_save_add_map_element(int interactionType, int x, int y, rct_map_element *mapElement);
|
||||
static void track_design_save_remove_map_element(int interactionType, int x, int y, rct_map_element *mapElement);
|
||||
static bool track_design_save_copy_scenery_to_td6(rct_track_td6 *td6);
|
||||
|
||||
Reference in New Issue
Block a user