Merge pull request #4181 from marijnvdwerf/clean/data-1

Misc RCT data integration
This commit is contained in:
Ted John 2016-08-12 20:52:10 +01:00 committed by GitHub
commit 97b0245697
19 changed files with 666 additions and 52 deletions

View File

@ -26,6 +26,21 @@
#include "news_item.h"
rct_news_item *gNewsItems = RCT2_ADDRESS(RCT2_ADDRESS_NEWS_ITEM_LIST, rct_news_item);
/** rct2: 0x0097BE7C */
const uint8 news_type_properties[] = {
0, // NEWS_ITEM_NULL
NEWS_TYPE_HAS_LOCATION | NEWS_TYPE_HAS_SUBJECT, // NEWS_ITEM_RIDE
NEWS_TYPE_HAS_LOCATION | NEWS_TYPE_HAS_SUBJECT, // NEWS_ITEM_PEEP_ON_RIDE
NEWS_TYPE_HAS_LOCATION | NEWS_TYPE_HAS_SUBJECT, // NEWS_ITEM_PEEP
NEWS_TYPE_HAS_SUBJECT, // NEWS_ITEM_MONEY
NEWS_TYPE_HAS_LOCATION, // NEWS_ITEM_BLANK
NEWS_TYPE_HAS_SUBJECT, // NEWS_ITEM_RESEARCH
NEWS_TYPE_HAS_SUBJECT, // NEWS_ITEM_PEEPS
NEWS_TYPE_HAS_SUBJECT, // NEWS_ITEM_AWARD
NEWS_TYPE_HAS_SUBJECT, // NEWS_ITEM_GRAPH
};
void window_game_bottom_toolbar_invalidate_news_item();
static int news_item_get_new_history_slot();

View File

@ -32,6 +32,13 @@ enum {
NEWS_ITEM_GRAPH
};
enum {
NEWS_TYPE_HAS_LOCATION = 1,
NEWS_TYPE_HAS_SUBJECT = 2,
};
extern const uint8 news_type_properties[10];
#pragma pack(push, 1)
/**
* News item structure.

View File

@ -692,12 +692,12 @@ void path_paint(uint8 direction, uint16 height, rct_map_element * map_element)
}
if (footpath_element_path_scenery_is_ghost(map_element)) {
sceneryImageFlags = RCT2_ADDRESS(0x993CC4, uint32_t)[gConfigGeneral.construction_marker_colour];
sceneryImageFlags = construction_markers[gConfigGeneral.construction_marker_colour];
}
if (map_element->flags & MAP_ELEMENT_FLAG_GHOST) {
gPaintInteractionType = VIEWPORT_INTERACTION_ITEM_NONE;
imageFlags = RCT2_ADDRESS(0x993CC4, uint32_t)[gConfigGeneral.construction_marker_colour];
imageFlags = construction_markers[gConfigGeneral.construction_marker_colour];
}
sint16 x = RCT2_GLOBAL(0x009DE56A, sint16), y = RCT2_GLOBAL(0x009DE56E, sint16);

View File

@ -59,7 +59,7 @@ void scenery_paint(uint8 direction, int height, rct_map_element* mapElement) {
}
if (mapElement->flags & MAP_ELEMENT_FLAG_GHOST) {
gPaintInteractionType = VIEWPORT_INTERACTION_ITEM_NONE;
baseImageid = RCT2_ADDRESS(0x993CC4, uint32_t)[gConfigGeneral.construction_marker_colour];
baseImageid = construction_markers[gConfigGeneral.construction_marker_colour];
}
uint32 dword_F64EB0 = baseImageid;

View File

@ -204,7 +204,7 @@ void scenery_multiple_paint(uint8 direction, uint16 height, rct_map_element *map
}
if (mapElement->flags & MAP_ELEMENT_FLAG_GHOST) {
gPaintInteractionType = VIEWPORT_INTERACTION_ITEM_NONE;
ebp = RCT2_ADDRESS(0x993CC4, uint32_t)[gConfigGeneral.construction_marker_colour];
ebp = construction_markers[gConfigGeneral.construction_marker_colour];
image_id &= 0x7FFFF;
dword_F4387C = ebp;
image_id |= dword_F4387C;

View File

@ -19,6 +19,32 @@
#include "../paint/paint.h"
#include "supports.h"
/** rct2: 0x0097AF20, 0x0097AF21 */
const rct_xy8 loc_97AF20[] = {
{4, 4},
{28, 4},
{4, 28},
{28, 28},
{16, 16},
{16, 4},
{4, 16},
{28, 16},
{16, 28}
};
/** rct2: 0x0097B052, 0x0097B053 */
const rct_xy16 loc_97B052[] = {
{-15, -1},
{0, -2},
{-2, -1},
{-1, -15},
{-26, -1},
{0, -2},
{-2, -1},
{-1, -26}
};
typedef struct supports_id_desc {
uint16 full;
uint16 half;
@ -371,10 +397,10 @@ bool metal_a_supports_paint_setup(int supportType, int segment, int special, int
uint8 ebp = esi[segment * 8 + 1];
sint8 xOffset = RCT2_ADDRESS(0x0097AF20, sint8)[segment * 2];
sint8 yOffset = RCT2_ADDRESS(0x0097AF20 + 1, sint8)[segment * 2];
xOffset += RCT2_ADDRESS(0x0097B052, sint8)[ebp * 2];
yOffset += RCT2_ADDRESS(0x0097B052 + 1, sint8)[ebp * 2];
sint8 xOffset = loc_97AF20[segment].x;
sint8 yOffset = loc_97AF20[segment].y;
xOffset += loc_97B052[ebp].x;
yOffset += loc_97B052[ebp].y;
sint16 boundBoxLengthX = RCT2_ADDRESS(0x0097B062, uint8)[ebp * 2];
sint16 boundBoxLengthY = RCT2_ADDRESS(0x0097B062 + 1, uint8)[ebp * 2];
@ -393,8 +419,8 @@ bool metal_a_supports_paint_setup(int supportType, int segment, int special, int
height = gSupportSegments[segment].height;
}else{
sint8 xOffset = RCT2_ADDRESS(0x0097AF20, sint8)[segment * 2];
sint8 yOffset = RCT2_ADDRESS(0x0097AF20 + 1, sint8)[segment * 2];
sint8 xOffset = loc_97AF20[segment].x;
sint8 yOffset = loc_97AF20[segment].y;
uint32 image_id = RCT2_ADDRESS(0x0097B15C, uint16)[supportType * 2];
image_id += RCT2_ADDRESS(0x0097B404, sint16)[gSupportSegments[segment].slope & 0x1F];
@ -416,8 +442,8 @@ bool metal_a_supports_paint_setup(int supportType, int segment, int special, int
heightDiff -= height;
if (heightDiff > 0) {
sint8 xOffset = RCT2_ADDRESS(0x0097AF20, sint8)[segment * 2];
sint8 yOffset = RCT2_ADDRESS(0x0097AF20 + 1, sint8)[segment * 2];
sint8 xOffset = loc_97AF20[segment].x;
sint8 yOffset = loc_97AF20[segment].y;
uint32 image_id = RCT2_ADDRESS(0x0097B15C + 2, uint16)[supportType * 2];
image_id += heightDiff - 1;
@ -443,8 +469,8 @@ bool metal_a_supports_paint_setup(int supportType, int segment, int special, int
if (z <= 0)
break;
sint8 xOffset = RCT2_ADDRESS(0x0097AF20, sint8)[segment * 2];
sint8 yOffset = RCT2_ADDRESS(0x0097AF20 + 1, sint8)[segment * 2];
sint8 xOffset = loc_97AF20[segment].x;
sint8 yOffset = loc_97AF20[segment].y;
uint32 image_id = RCT2_ADDRESS(0x0097B15C + 2, uint16)[supportType * 2];
image_id += z - 1;
@ -470,8 +496,8 @@ bool metal_a_supports_paint_setup(int supportType, int segment, int special, int
height--;
}
sint16 boundBoxOffsetX = RCT2_ADDRESS(0x0097AF20, uint8)[segment * 2];
sint16 boundBoxOffsetY = RCT2_ADDRESS(0x0097AF21, uint8)[segment * 2];
sint16 boundBoxOffsetX = loc_97AF20[segment].x;
sint16 boundBoxOffsetY = loc_97AF20[segment].y;
sint16 boundBoxOffsetZ = height;
si = height + special;
@ -485,8 +511,8 @@ bool metal_a_supports_paint_setup(int supportType, int segment, int special, int
if (z <= 0)
break;
sint8 xOffset = RCT2_ADDRESS(0x0097AF20, sint8)[segment * 2];
sint8 yOffset = RCT2_ADDRESS(0x0097AF20 + 1, sint8)[segment * 2];
sint8 xOffset = loc_97AF20[segment].x;
sint8 yOffset = loc_97AF20[segment].y;
uint32 image_id = RCT2_ADDRESS(0x0097B15C + 2, uint16)[supportType * 2];
image_id += z - 1;

View File

@ -3802,6 +3802,18 @@ static void peep_update_ride(rct_peep* peep){
}
}
static const uint32 loc_992A18[9] = {
(1 << 14) | (1 << 13) | (1 << 12) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 7),
(1 << 14) | (1 << 13) | (1 << 12) | (1 << 2) | (1 << 1),
(1 << 14) | (1 << 13) | (1 << 12) | (1 << 4) | (1 << 1),
(1 << 14) | (1 << 13) | (1 << 12) | (1 << 3) | (1 << 1),
(1 << 14) | (1 << 13) | (1 << 12) | (1 << 5) | (1 << 1),
(1 << 14) | (1 << 13) | (1 << 12) | (1 << 6) | (1 << 1),
(1 << 14) | (1 << 13) | (1 << 12) | (1 << 11)| (1 << 9),
(1 << 14) | (1 << 13) | (1 << 12) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 7),
(1 << 14) | (1 << 13) | (1 << 12) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 7),
};
/**
*
* rct2: 0x006C0E8B
@ -3886,10 +3898,10 @@ static void peep_update_fixing(int steps, rct_peep* peep){
}
int subState = peep->sub_state;
uint32 ebp = RCT2_ADDRESS(0x992A18, uint32)[8];
uint32 ebp = loc_992A18[8];
if (peep->state != PEEP_STATE_INSPECTING) {
ebp = RCT2_ADDRESS(0x992A18, uint32)[ride->breakdown_reason_pending];
ebp = loc_992A18[ride->breakdown_reason_pending];
}
do {
@ -9661,7 +9673,7 @@ static void peep_easter_egg_peep_interactions(rct_peep *peep)
*/
static bool sub_69101A(rct_map_element *esi) {
rct_ride *ride = get_ride(esi->properties.track.ride_index);
if (RCT2_ADDRESS(0x97C3AF, uint8)[ride->type] != 0) {
if (gRideClassifications[ride->type] != RIDE_CLASS_RIDE) {
return true;
}

View File

@ -44,21 +44,12 @@ rct_crooked_house_bound_box crooked_house_data[] = {
* @param (edx) height
*/
static void sub_88ABA4(uint8 direction, uint8 x_offset, uint8 y_offset, uint32 segment, int height) {
//RCT2_CALLPROC_X(0x88ABA4, al, segment, cl, height, 0, direction, 0);
//return;
// push dword_9DE578
rct_map_element *original_map_element = g_currently_drawn_item;
// push edx
RCT2_GLOBAL(0x14281B0, uint32) = segment;
RCT2_GLOBAL(0x14281B4, uint32) = direction;
rct_ride *ride = get_ride(original_map_element->properties.track.ride_index);
rct_ride_entry *ride_type = get_ride_entry(ride->subtype);
RCT2_GLOBAL(0x0014281B8, uint32) = ride_type->vehicles[0].base_image_id;
if (ride->lifecycle_flags & RIDE_LIFECYCLE_ON_TRACK) {
if (ride->vehicles[0] != (uint16)-1) {
rct_sprite *sprite = get_sprite(ride->vehicles[0]);

View File

@ -53,6 +53,7 @@
#pragma region Ride classification table
/** rct2: 0x0097C3AF */
const uint8 gRideClassifications[255] = {
RIDE_CLASS_RIDE, RIDE_CLASS_RIDE, RIDE_CLASS_RIDE, RIDE_CLASS_RIDE,
RIDE_CLASS_RIDE, RIDE_CLASS_RIDE, RIDE_CLASS_RIDE, RIDE_CLASS_RIDE,
@ -5830,7 +5831,7 @@ static int ride_get_random_colour_preset_index(uint8 ride_type)
return 0;
}
colourPresets = RCT2_ADDRESS(0x0097D934, track_colour_preset_list*)[ride_type];
colourPresets = &RideColourPresets[ride_type];
// 200 attempts to find a colour preset that hasn't already been used in the park for this ride type
for (int i = 0; i < 200; i++) {
@ -5852,7 +5853,7 @@ static void ride_set_colour_preset(rct_ride *ride, uint8 index) {
const track_colour_preset_list *colourPresets;
const track_colour *colours;
colourPresets = RCT2_ADDRESS(0x0097D934, track_colour_preset_list*)[ride->type];
colourPresets = &RideColourPresets[ride->type];
colours = &colourPresets->list[index];
for (int i = 0; i < 4; i++) {
ride->track_colour_main[i] = colours->main;

View File

@ -30,6 +30,7 @@
#include "track.h"
#include "../audio/audio.h"
#include "../sprites.h"
#include "../interface/colour.h"
const bool hasRunningTrack[0x60] = {
true, // 0 Spiral Roller coaster
@ -2483,3 +2484,559 @@ const uint8 RideConstructionDefaultTrackType[] = {
TRACK_ELEM_END_STATION, // RIDE_TYPE_59
TRACK_ELEM_END_STATION, // RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER
};
#define TRACK_COLOUR_PRESETS(...) {countof(((track_colour[]){__VA_ARGS__})), {__VA_ARGS__}}
#define DEFAULT_FLAT_RIDE_COLOUR_PRESET TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_RED, COLOUR_LIGHT_BLUE, COLOUR_YELLOW } )
#define DEFAULT_STALL_COLOUR_PRESET TRACK_COLOUR_PRESETS( { COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED } )
const track_colour_preset_list RideColourPresets[] = {
// RIDE_TYPE_SPIRAL_ROLLER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_DARK_GREEN },
{ COLOUR_GREY, COLOUR_GREY, COLOUR_BORDEAUX_RED },
),
// RIDE_TYPE_STAND_UP_ROLLER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_BLACK },
{ COLOUR_BLACK, COLOUR_LIGHT_BLUE, COLOUR_BLACK },
{ COLOUR_LIGHT_ORANGE, COLOUR_WHITE, COLOUR_LIGHT_ORANGE },
{ COLOUR_BORDEAUX_RED, COLOUR_YELLOW, COLOUR_BORDEAUX_RED },
{ COLOUR_MOSS_GREEN, COLOUR_MOSS_GREEN, COLOUR_WHITE },
{ COLOUR_SATURATED_BROWN, COLOUR_LIGHT_ORANGE, COLOUR_SATURATED_BROWN },
),
// RIDE_TYPE_SUSPENDED_SWINGING_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_OLIVE_GREEN, COLOUR_OLIVE_GREEN, COLOUR_LIGHT_BROWN },
{ COLOUR_BLACK, COLOUR_LIGHT_BLUE, COLOUR_BLACK },
{ COLOUR_SATURATED_BROWN, COLOUR_YELLOW, COLOUR_SATURATED_BROWN },
{ COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_OLIVE_GREEN },
),
// RIDE_TYPE_INVERTED_ROLLER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_BLACK },
{ COLOUR_WHITE, COLOUR_YELLOW, COLOUR_WHITE },
{ COLOUR_SALMON_PINK, COLOUR_SALMON_PINK, COLOUR_GREY },
{ COLOUR_BLACK, COLOUR_BRIGHT_RED, COLOUR_BLACK },
{ COLOUR_SATURATED_BROWN, COLOUR_WHITE, COLOUR_SATURATED_BROWN },
{ COLOUR_YELLOW, COLOUR_YELLOW, COLOUR_BLACK },
),
// RIDE_TYPE_JUNIOR_ROLLER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_YELLOW, COLOUR_YELLOW, COLOUR_SATURATED_BROWN },
{ COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_DARK_OLIVE_GREEN },
{ COLOUR_TEAL, COLOUR_YELLOW, COLOUR_TEAL },
{ COLOUR_SATURATED_BROWN, COLOUR_SATURATED_BROWN, COLOUR_OLIVE_GREEN },
{ COLOUR_BLACK, COLOUR_LIGHT_BLUE, COLOUR_BLACK },
),
// RIDE_TYPE_MINIATURE_RAILWAY
TRACK_COLOUR_PRESETS(
{ COLOUR_LIGHT_BLUE, COLOUR_WHITE, COLOUR_DARK_BROWN },
{ COLOUR_BRIGHT_RED, COLOUR_WHITE, COLOUR_BLACK },
),
// RIDE_TYPE_MONORAIL
TRACK_COLOUR_PRESETS(
{ COLOUR_GREY, COLOUR_GREY, COLOUR_DARK_OLIVE_GREEN },
{ COLOUR_GREY, COLOUR_GREY, COLOUR_SATURATED_BROWN },
{ COLOUR_GREY, COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED },
{ COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_BLACK },
{ COLOUR_OLIVE_GREEN, COLOUR_OLIVE_GREEN, COLOUR_WHITE },
),
// RIDE_TYPE_MINI_SUSPENDED_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_BLACK, COLOUR_BLACK, COLOUR_SATURATED_BROWN },
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_BLACK },
),
// RIDE_TYPE_BOAT_RIDE
TRACK_COLOUR_PRESETS(
{ COLOUR_MOSS_GREEN, COLOUR_MOSS_GREEN, COLOUR_WHITE },
{ COLOUR_BLACK, COLOUR_BLACK, COLOUR_DARK_GREEN },
{ COLOUR_LIGHT_BROWN, COLOUR_LIGHT_BROWN, COLOUR_YELLOW },
{ COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED },
),
// RIDE_TYPE_WOODEN_WILD_MOUSE
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_WHITE },
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_SATURATED_BROWN },
{ COLOUR_LIGHT_BLUE, COLOUR_LIGHT_BLUE, COLOUR_SATURATED_BROWN },
),
// RIDE_TYPE_STEEPLECHASE
TRACK_COLOUR_PRESETS(
{ COLOUR_LIGHT_BLUE, COLOUR_LIGHT_BLUE, COLOUR_BLACK },
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_BLACK },
{ COLOUR_BRIGHT_GREEN, COLOUR_BRIGHT_GREEN, COLOUR_BLACK },
{ COLOUR_YELLOW, COLOUR_YELLOW, COLOUR_BLACK },
{ COLOUR_LIGHT_ORANGE, COLOUR_LIGHT_ORANGE, COLOUR_BLACK },
{ COLOUR_WHITE, COLOUR_WHITE, COLOUR_BLACK },
{ COLOUR_BRIGHT_PINK, COLOUR_BRIGHT_PINK, COLOUR_BLACK },
),
// RIDE_TYPE_CAR_RIDE
TRACK_COLOUR_PRESETS(
{ COLOUR_SATURATED_BROWN, COLOUR_SATURATED_BROWN, COLOUR_GREY },
{ COLOUR_LIGHT_PURPLE, COLOUR_LIGHT_PURPLE, COLOUR_WHITE },
{ COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_OLIVE_GREEN },
{ COLOUR_GREY, COLOUR_GREY, COLOUR_BLACK },
),
// RIDE_TYPE_LAUNCHED_FREEFALL
TRACK_COLOUR_PRESETS(
{ COLOUR_WHITE, COLOUR_BRIGHT_RED, COLOUR_LIGHT_PURPLE },
{ COLOUR_DARK_GREEN, COLOUR_YELLOW, COLOUR_WHITE },
),
// RIDE_TYPE_BOBSLEIGH_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_WHITE, COLOUR_BRIGHT_RED, COLOUR_WHITE },
{ COLOUR_LIGHT_BLUE, COLOUR_WHITE, COLOUR_BLACK },
{ COLOUR_YELLOW, COLOUR_BRIGHT_RED, COLOUR_BLACK },
),
// RIDE_TYPE_OBSERVATION_TOWER
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_RED, COLOUR_BLACK, COLOUR_GREY },
{ COLOUR_LIGHT_BLUE, COLOUR_YELLOW, COLOUR_GREY },
),
// RIDE_TYPE_LOOPING_ROLLER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_LIGHT_BROWN, COLOUR_LIGHT_BROWN, COLOUR_BLACK },
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_BLACK },
{ COLOUR_WHITE, COLOUR_WHITE, COLOUR_SATURATED_RED },
{ COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_WHITE },
{ COLOUR_LIGHT_PURPLE, COLOUR_LIGHT_PURPLE, COLOUR_DARK_GREEN },
{ COLOUR_OLIVE_GREEN, COLOUR_OLIVE_GREEN, COLOUR_LIGHT_BROWN },
{ COLOUR_GREY, COLOUR_LIGHT_ORANGE, COLOUR_GREY },
),
// RIDE_TYPE_DINGHY_SLIDE
TRACK_COLOUR_PRESETS(
{ COLOUR_DARK_GREEN, COLOUR_SATURATED_BROWN, COLOUR_DARK_GREEN },
{ COLOUR_TEAL, COLOUR_BORDEAUX_RED, COLOUR_TEAL },
{ COLOUR_BRIGHT_RED, COLOUR_GREY, COLOUR_SATURATED_RED },
),
// RIDE_TYPE_MINE_TRAIN_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_DARK_BROWN, COLOUR_GREY, COLOUR_DARK_BROWN },
{ COLOUR_DARK_BROWN, COLOUR_GREY, COLOUR_BLACK },
),
// RIDE_TYPE_CHAIRLIFT
TRACK_COLOUR_PRESETS(
{ COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_GREY },
{ COLOUR_WHITE, COLOUR_WHITE, COLOUR_OLIVE_GREEN },
{ COLOUR_LIGHT_BROWN, COLOUR_LIGHT_BROWN, COLOUR_WHITE },
),
// RIDE_TYPE_CORKSCREW_ROLLER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_BLACK },
{ COLOUR_LIGHT_BLUE, COLOUR_LIGHT_BLUE, COLOUR_WHITE },
{ COLOUR_BLACK, COLOUR_BORDEAUX_RED, COLOUR_BLACK },
{ COLOUR_WHITE, COLOUR_WHITE, COLOUR_DARK_GREEN },
),
// RIDE_TYPE_MAZE
TRACK_COLOUR_PRESETS(
{ COLOUR_GREY, COLOUR_GREY, COLOUR_GREY },
),
// RIDE_TYPE_SPIRAL_SLIDE
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_RED, COLOUR_YELLOW, COLOUR_DARK_BROWN },
{ COLOUR_LIGHT_BLUE, COLOUR_BRIGHT_PINK, COLOUR_LIGHT_PURPLE },
),
// RIDE_TYPE_GO_KARTS
TRACK_COLOUR_PRESETS(
{ COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_DARK_BROWN },
{ COLOUR_YELLOW, COLOUR_YELLOW, COLOUR_BORDEAUX_RED },
{ COLOUR_DARK_GREEN, COLOUR_DARK_GREEN, COLOUR_DARK_GREEN },
{ COLOUR_DARK_BROWN, COLOUR_DARK_BROWN, COLOUR_BLACK },
),
// RIDE_TYPE_LOG_FLUME
TRACK_COLOUR_PRESETS(
{ COLOUR_DARK_BROWN, COLOUR_DARK_BROWN, COLOUR_GREY },
{ COLOUR_OLIVE_GREEN, COLOUR_BLACK, COLOUR_GREY },
),
// RIDE_TYPE_RIVER_RAPIDS
TRACK_COLOUR_PRESETS(
{ COLOUR_WHITE, COLOUR_BLACK, COLOUR_DARK_BROWN },
),
// RIDE_TYPE_DODGEMS
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_RED, COLOUR_SATURATED_BROWN, COLOUR_SATURATED_BROWN },
{ COLOUR_LIGHT_BLUE, COLOUR_GREY, COLOUR_GREY },
{ COLOUR_DARK_GREEN, COLOUR_BLACK, COLOUR_DARK_GREEN },
),
// RIDE_TYPE_PIRATE_SHIP
TRACK_COLOUR_PRESETS(
{ COLOUR_DARK_BROWN, COLOUR_DARK_BROWN, COLOUR_BLACK },
),
// RIDE_TYPE_SWINGING_INVERTER_SHIP
TRACK_COLOUR_PRESETS(
{ COLOUR_BORDEAUX_RED, COLOUR_YELLOW, COLOUR_BLACK },
{ COLOUR_BLACK, COLOUR_SATURATED_BROWN, COLOUR_BLACK },
),
// RIDE_TYPE_FOOD_STALL
DEFAULT_STALL_COLOUR_PRESET,
// RIDE_TYPE_1D
DEFAULT_STALL_COLOUR_PRESET,
// RIDE_TYPE_DRINK_STALL
DEFAULT_STALL_COLOUR_PRESET,
// RIDE_TYPE_1F
DEFAULT_STALL_COLOUR_PRESET,
// RIDE_TYPE_SHOP
DEFAULT_STALL_COLOUR_PRESET,
// RIDE_TYPE_MERRY_GO_ROUND
DEFAULT_FLAT_RIDE_COLOUR_PRESET,
// RIDE_TYPE_22
DEFAULT_STALL_COLOUR_PRESET,
// RIDE_TYPE_INFORMATION_KIOSK
DEFAULT_STALL_COLOUR_PRESET,
// RIDE_TYPE_TOILETS
DEFAULT_FLAT_RIDE_COLOUR_PRESET,
// RIDE_TYPE_FERRIS_WHEEL
TRACK_COLOUR_PRESETS(
{ COLOUR_BLACK, COLOUR_BLACK, COLOUR_BLACK },
{ COLOUR_GREY, COLOUR_GREY, COLOUR_GREY },
),
// RIDE_TYPE_MOTION_SIMULATOR
DEFAULT_FLAT_RIDE_COLOUR_PRESET,
// RIDE_TYPE_3D_CINEMA
DEFAULT_FLAT_RIDE_COLOUR_PRESET,
// RIDE_TYPE_TOP_SPIN
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_RED, COLOUR_YELLOW, COLOUR_YELLOW },
{ COLOUR_TEAL, COLOUR_WHITE, COLOUR_WHITE },
{ COLOUR_DARK_GREEN, COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED },
),
// RIDE_TYPE_SPACE_RINGS
DEFAULT_FLAT_RIDE_COLOUR_PRESET,
// RIDE_TYPE_REVERSE_FREEFALL_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_DARK_GREEN, COLOUR_YELLOW, COLOUR_DARK_GREEN },
{ COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_YELLOW },
{ COLOUR_GREY, COLOUR_SALMON_PINK, COLOUR_GREY },
),
// RIDE_TYPE_LIFT
TRACK_COLOUR_PRESETS(
{ COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_GREY },
{ COLOUR_DARK_GREEN, COLOUR_DARK_GREEN, COLOUR_GREY },
{ COLOUR_BLACK, COLOUR_BLACK, COLOUR_GREY },
),
// RIDE_TYPE_VERTICAL_DROP_ROLLER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_BLACK, COLOUR_GREY, COLOUR_BLACK },
{ COLOUR_DARK_GREEN, COLOUR_DARK_GREEN, COLOUR_GREY },
),
// RIDE_TYPE_CASH_MACHINE
DEFAULT_FLAT_RIDE_COLOUR_PRESET,
// RIDE_TYPE_TWIST
DEFAULT_FLAT_RIDE_COLOUR_PRESET,
// RIDE_TYPE_HAUNTED_HOUSE
DEFAULT_FLAT_RIDE_COLOUR_PRESET,
// RIDE_TYPE_FIRST_AID
DEFAULT_FLAT_RIDE_COLOUR_PRESET,
// RIDE_TYPE_CIRCUS_SHOW
DEFAULT_FLAT_RIDE_COLOUR_PRESET,
// RIDE_TYPE_GHOST_TRAIN
TRACK_COLOUR_PRESETS(
{ COLOUR_DARK_GREEN, COLOUR_BORDEAUX_RED, COLOUR_BLACK },
{ COLOUR_TEAL, COLOUR_WHITE, COLOUR_DARK_BROWN },
{ COLOUR_DARK_BROWN, COLOUR_BORDEAUX_RED, COLOUR_BLACK },
{ COLOUR_BORDEAUX_RED, COLOUR_YELLOW, COLOUR_BLACK },
),
// RIDE_TYPE_TWISTER_ROLLER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_YELLOW, COLOUR_YELLOW, COLOUR_BORDEAUX_RED },
{ COLOUR_AQUAMARINE, COLOUR_AQUAMARINE, COLOUR_DARK_PURPLE },
{ COLOUR_WHITE, COLOUR_WHITE, COLOUR_LIGHT_BLUE },
{ COLOUR_DARK_GREEN, COLOUR_MOSS_GREEN, COLOUR_DARK_BROWN },
{ COLOUR_BORDEAUX_RED, COLOUR_LIGHT_ORANGE, COLOUR_WHITE },
),
// RIDE_TYPE_WOODEN_ROLLER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_BORDEAUX_RED, COLOUR_BLACK, COLOUR_WHITE },
{ COLOUR_BRIGHT_RED, COLOUR_BLACK, COLOUR_GREY },
{ COLOUR_YELLOW, COLOUR_DARK_BROWN, COLOUR_DARK_BROWN },
{ COLOUR_TEAL, COLOUR_BORDEAUX_RED, COLOUR_WHITE },
{ COLOUR_LIGHT_BLUE, COLOUR_BLACK, COLOUR_BLACK },
),
// RIDE_TYPE_SIDE_FRICTION_ROLLER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_WHITE, COLOUR_DARK_BROWN, COLOUR_WHITE },
{ COLOUR_SATURATED_BROWN, COLOUR_WHITE, COLOUR_SATURATED_BROWN },
{ COLOUR_DARK_BROWN, COLOUR_LIGHT_BROWN, COLOUR_DARK_BROWN },
),
// RIDE_TYPE_WILD_MOUSE
TRACK_COLOUR_PRESETS(
{ COLOUR_LIGHT_BLUE, COLOUR_LIGHT_BLUE, COLOUR_YELLOW },
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_WHITE },
{ COLOUR_DARK_PURPLE, COLOUR_BRIGHT_PINK, COLOUR_DARK_PURPLE },
{ COLOUR_LIGHT_BROWN, COLOUR_LIGHT_BROWN, COLOUR_BORDEAUX_RED },
),
// RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_PINK, COLOUR_YELLOW, COLOUR_YELLOW },
{ COLOUR_LIGHT_PURPLE, COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED },
{ COLOUR_BORDEAUX_RED, COLOUR_WHITE, COLOUR_WHITE },
),
// RIDE_TYPE_38
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_PINK, COLOUR_YELLOW, COLOUR_YELLOW },
{ COLOUR_LIGHT_PURPLE, COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED },
{ COLOUR_BORDEAUX_RED, COLOUR_WHITE, COLOUR_WHITE },
),
// RIDE_TYPE_FLYING_ROLLER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_OLIVE_GREEN, COLOUR_OLIVE_GREEN, COLOUR_TEAL },
{ COLOUR_TEAL, COLOUR_TEAL, COLOUR_BORDEAUX_RED },
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_DARK_PURPLE },
),
// RIDE_TYPE_3A
TRACK_COLOUR_PRESETS(
{ COLOUR_OLIVE_GREEN, COLOUR_OLIVE_GREEN, COLOUR_TEAL },
{ COLOUR_TEAL, COLOUR_TEAL, COLOUR_BORDEAUX_RED },
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_DARK_PURPLE },
),
// RIDE_TYPE_VIRGINIA_REEL
TRACK_COLOUR_PRESETS(
{ COLOUR_SATURATED_BROWN, COLOUR_GREY, COLOUR_SATURATED_BROWN },
{ COLOUR_BLACK, COLOUR_DARK_BROWN, COLOUR_DARK_BROWN },
{ COLOUR_DARK_BROWN, COLOUR_BORDEAUX_RED, COLOUR_DARK_BROWN },
),
// RIDE_TYPE_SPLASH_BOATS
TRACK_COLOUR_PRESETS(
{ COLOUR_DARK_BROWN, COLOUR_DARK_BROWN, COLOUR_BLACK },
{ COLOUR_DARK_GREEN, COLOUR_DARK_GREEN, COLOUR_GREY },
),
// RIDE_TYPE_MINI_HELICOPTERS
TRACK_COLOUR_PRESETS(
{ COLOUR_DARK_PURPLE, COLOUR_YELLOW, COLOUR_DARK_PURPLE },
{ COLOUR_WHITE, COLOUR_WHITE, COLOUR_BRIGHT_RED },
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_YELLOW },
{ COLOUR_BRIGHT_PINK, COLOUR_BRIGHT_PINK, COLOUR_WHITE },
{ COLOUR_LIGHT_BLUE, COLOUR_LIGHT_BLUE, COLOUR_WHITE },
),
// RIDE_TYPE_LAY_DOWN_ROLLER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_YELLOW },
{ COLOUR_DARK_PURPLE, COLOUR_DARK_PURPLE, COLOUR_YELLOW },
{ COLOUR_YELLOW, COLOUR_YELLOW, COLOUR_DARK_GREEN },
),
// RIDE_TYPE_SUSPENDED_MONORAIL
TRACK_COLOUR_PRESETS(
{ COLOUR_BORDEAUX_RED, COLOUR_BLACK, COLOUR_BLACK },
{ COLOUR_DARK_PURPLE, COLOUR_DARK_PURPLE, COLOUR_BLACK },
{ COLOUR_DARK_GREEN, COLOUR_DARK_GREEN, COLOUR_BLACK },
),
// RIDE_TYPE_40
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_YELLOW },
{ COLOUR_DARK_PURPLE, COLOUR_DARK_PURPLE, COLOUR_YELLOW },
{ COLOUR_YELLOW, COLOUR_YELLOW, COLOUR_DARK_GREEN },
),
// RIDE_TYPE_REVERSER_ROLLER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_DARK_BROWN, COLOUR_LIGHT_BROWN, COLOUR_DARK_BROWN },
{ COLOUR_SATURATED_BROWN, COLOUR_BORDEAUX_RED, COLOUR_SATURATED_BROWN },
),
// RIDE_TYPE_HEARTLINE_TWISTER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_WHITE, COLOUR_LIGHT_BLUE, COLOUR_WHITE },
{ COLOUR_BORDEAUX_RED, COLOUR_YELLOW, COLOUR_BLACK },
{ COLOUR_DARK_PURPLE, COLOUR_WHITE, COLOUR_DARK_GREEN },
),
// RIDE_TYPE_MINI_GOLF
TRACK_COLOUR_PRESETS(
{ COLOUR_SATURATED_GREEN, COLOUR_DARK_BROWN, COLOUR_BLACK },
{ COLOUR_MOSS_GREEN, COLOUR_BORDEAUX_RED, COLOUR_DARK_BROWN },
),
// RIDE_TYPE_GIGA_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_WHITE },
{ COLOUR_WHITE, COLOUR_WHITE, COLOUR_YELLOW },
{ COLOUR_YELLOW, COLOUR_YELLOW, COLOUR_BORDEAUX_RED },
{ COLOUR_LIGHT_BLUE, COLOUR_LIGHT_BLUE, COLOUR_BLACK },
),
// RIDE_TYPE_ROTO_DROP
TRACK_COLOUR_PRESETS(
{ COLOUR_BORDEAUX_RED, COLOUR_YELLOW, COLOUR_GREY },
{ COLOUR_BLACK, COLOUR_LIGHT_BLUE, COLOUR_GREY },
),
// RIDE_TYPE_FLYING_SAUCERS
TRACK_COLOUR_PRESETS(
{ COLOUR_DARK_PURPLE, COLOUR_GREY, COLOUR_BLACK },
{ COLOUR_BLACK, COLOUR_YELLOW, COLOUR_BLACK },
),
// RIDE_TYPE_CROOKED_HOUSE
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_RED, COLOUR_BLACK, COLOUR_GREY },
),
// RIDE_TYPE_MONORAIL_CYCLES
TRACK_COLOUR_PRESETS(
{ COLOUR_DARK_BROWN, COLOUR_GREY, COLOUR_DARK_BROWN },
{ COLOUR_GREY, COLOUR_BLACK, COLOUR_GREY },
),
// RIDE_TYPE_COMPACT_INVERTED_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_YELLOW, COLOUR_BRIGHT_YELLOW, COLOUR_BRIGHT_RED },
{ COLOUR_ICY_BLUE, COLOUR_ICY_BLUE, COLOUR_DARK_GREEN },
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_BRIGHT_YELLOW },
{ COLOUR_WHITE, COLOUR_WHITE, COLOUR_DARK_GREEN },
),
// RIDE_TYPE_WATER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_DARK_GREEN, COLOUR_DARK_GREEN, COLOUR_BLACK },
{ COLOUR_DARK_BROWN, COLOUR_DARK_BROWN, COLOUR_BORDEAUX_RED },
{ COLOUR_WHITE, COLOUR_WHITE, COLOUR_DARK_PURPLE },
),
// RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_WHITE, COLOUR_BRIGHT_RED, COLOUR_DARK_BROWN },
{ COLOUR_BRIGHT_RED, COLOUR_LIGHT_BLUE, COLOUR_WHITE },
{ COLOUR_LIGHT_ORANGE, COLOUR_BRIGHT_RED, COLOUR_BRIGHT_YELLOW },
),
// RIDE_TYPE_INVERTED_HAIRPIN_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_YELLOW, COLOUR_BRIGHT_YELLOW, COLOUR_BRIGHT_RED },
{ COLOUR_BLACK, COLOUR_ICY_BLUE, COLOUR_BLACK },
{ COLOUR_WHITE, COLOUR_WHITE, COLOUR_YELLOW },
),
// RIDE_TYPE_MAGIC_CARPET
TRACK_COLOUR_PRESETS(
{ COLOUR_DARK_PURPLE, COLOUR_WHITE, COLOUR_BLACK },
{ COLOUR_YELLOW, COLOUR_WHITE, COLOUR_BLACK },
{ COLOUR_BRIGHT_RED, COLOUR_YELLOW, COLOUR_BLACK },
),
// RIDE_TYPE_SUBMARINE_RIDE
TRACK_COLOUR_PRESETS(
{ COLOUR_GREY, COLOUR_GREY, COLOUR_BLACK },
),
// RIDE_TYPE_RIVER_RAFTS
TRACK_COLOUR_PRESETS(
{ COLOUR_BLACK, COLOUR_BLACK, COLOUR_SATURATED_BROWN },
),
// RIDE_TYPE_50
DEFAULT_FLAT_RIDE_COLOUR_PRESET,
// RIDE_TYPE_ENTERPRISE
DEFAULT_FLAT_RIDE_COLOUR_PRESET,
// RIDE_TYPE_52
DEFAULT_FLAT_RIDE_COLOUR_PRESET,
// RIDE_TYPE_53
DEFAULT_FLAT_RIDE_COLOUR_PRESET,
// RIDE_TYPE_54
DEFAULT_FLAT_RIDE_COLOUR_PRESET,
// RIDE_TYPE_55
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_GREY },
{ COLOUR_YELLOW, COLOUR_YELLOW, COLOUR_SATURATED_BROWN },
),
// RIDE_TYPE_INVERTED_IMPULSE_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_GREY },
{ COLOUR_YELLOW, COLOUR_YELLOW, COLOUR_WHITE },
{ COLOUR_BRIGHT_PURPLE, COLOUR_BRIGHT_PURPLE, COLOUR_BORDEAUX_RED },
),
// RIDE_TYPE_MINI_ROLLER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_GREY, COLOUR_GREY, COLOUR_DARK_BROWN },
{ COLOUR_MOSS_GREEN, COLOUR_MOSS_GREEN, COLOUR_DARK_BROWN },
{ COLOUR_SALMON_PINK, COLOUR_SALMON_PINK, COLOUR_BORDEAUX_RED },
),
// RIDE_TYPE_MINE_RIDE
TRACK_COLOUR_PRESETS(
{ COLOUR_DARK_BROWN, COLOUR_DARK_BROWN, COLOUR_BLACK },
{ COLOUR_BORDEAUX_RED, COLOUR_BORDEAUX_RED, COLOUR_DARK_BROWN },
),
// RIDE_TYPE_59
TRACK_COLOUR_PRESETS(
{ COLOUR_LIGHT_BLUE, COLOUR_LIGHT_BLUE, COLOUR_YELLOW },
),
// RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER
TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_GREEN, COLOUR_BRIGHT_GREEN, COLOUR_WHITE },
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_DARK_BROWN },
{ COLOUR_YELLOW, COLOUR_YELLOW, COLOUR_SATURATED_GREEN },
),
};

View File

@ -166,4 +166,6 @@ extern const rct_shop_item_stats ShopItemStats[SHOP_ITEM_COUNT];
extern const uint8 RideConstructionDefaultTrackType[91];
extern const track_colour_preset_list RideColourPresets[91];
#endif

View File

@ -47,7 +47,7 @@ static void paint_motionsimulator_vehicle(sint8 offsetX, sint8 offsetY, uint8 di
uint16 spriteIndex = ride->vehicles[0];
if (spriteIndex != SPRITE_INDEX_NULL) {
vehicle = GET_VEHICLE(spriteIndex);
RCT2_GLOBAL(RCT2_ADDRESS_PAINT_SETUP_CURRENT_TYPE, uint8) = 2;
gPaintInteractionType = VIEWPORT_INTERACTION_ITEM_SPRITE;
g_currently_drawn_item = vehicle;
}
}

View File

@ -26,6 +26,13 @@
#include "../track_data.h"
#include "../track_paint.h"
/** rct2: 0x014280BC */
static sint16 TopSpinSeatHeightOffset[] = {
-10, -10, -9, -7, -4, -1, 2, 6, 11, 16, 21, 26, 31, 37, 42, 47,
52, 57, 61, 64, 67, 70, 72, 73, 73, 73, 72, 70, 67, 64, 61, 57,
52, 47, 42, 37, 31, 26, 21, 16, 11, 6, 2, -1, -4, -7, -9, -10,
};
/**
*
* rct2: 0x0142811C
@ -36,7 +43,6 @@ static sint8 TopSpinSeatPositionOffset[] = {
0, 4, 9, 13, 17, 21, 24, 27, 29, 31, 33, 34, 34, 34, 33, 31,
29, 27, 24, 21, 17, 13, 9, 4, 0, -3, -8, -12, -16, -20, -23, -26,
-28, -30, -32, -33, -33, -33, -32, -30, -28, -26, -23, -20, -16, -12, -8, -3,
0
};
/**
@ -147,7 +153,8 @@ static void top_spin_paint_vehicle(sint8 al, sint8 cl, uint8 rideIndex, uint8 di
.y = cl,
.z = height
};
seatCoords.z += RCT2_ADDRESS(0x14280BC, sint16)[armRotation];
seatCoords.z += TopSpinSeatHeightOffset[armRotation];
assert(armRotation < sizeof(TopSpinSeatPositionOffset));
switch (direction) {
@ -165,10 +172,6 @@ static void top_spin_paint_vehicle(sint8 al, sint8 cl, uint8 rideIndex, uint8 di
break;
}
RCT2_GLOBAL(0x014280B8, sint8) = (sint8)seatCoords.x;
RCT2_GLOBAL(0x014280B9, sint8) = (sint8)seatCoords.y;
RCT2_GLOBAL(0x014280BA, sint16) = seatCoords.z;
sub_98199C(image_id, (sint8) seatCoords.x, (sint8) seatCoords.y, lengthX, lengthY, 90, seatCoords.z, boundBoxOffsetX, boundBoxOffsetY, boundBoxOffsetZ, rotation);
rct_drawpixelinfo* dpi = unk_140E9A8;

View File

@ -1763,7 +1763,7 @@ static money32 set_maze_track(uint16 x, uint8 flags, uint8 direction, uint16 y,
gCommandPosition.y = y + 8;
gCommandPosition.z = z;
RCT2_GLOBAL(0xF4413E, money32) = 0;
money32 cost = 0;
if (!sub_68B044()) {
return MONEY32_UNDEFINED;
@ -1834,14 +1834,14 @@ static money32 set_maze_track(uint16 x, uint8 flags, uint8 direction, uint16 y,
rct_ride *ride = get_ride(rideIndex);
money32 price = (((RideTrackCosts[ride->type].track_price * TrackPricing[TRACK_ELEM_MAZE]) >> 16));
RCT2_GLOBAL(0x00F4413E, money32) = price / 2 * 10;
cost = price / 2 * 10;
if (!(flags & GAME_COMMAND_FLAG_APPLY)) {
if (gParkFlags & PARK_FLAGS_NO_MONEY) {
return 0;
}
return RCT2_GLOBAL(0xF4413E, money32);
return cost;
}
uint16 flooredX = floor2(x, 32);
@ -1877,7 +1877,7 @@ static money32 set_maze_track(uint16 x, uint8 flags, uint8 direction, uint16 y,
return 0;
}
return RCT2_GLOBAL(0xF4413E, money32);
return cost;
}
@ -1958,7 +1958,7 @@ static money32 set_maze_track(uint16 x, uint8 flags, uint8 direction, uint16 y,
return 0;
}
return RCT2_GLOBAL(0xF4413E, money32);
return cost;
}
/**

View File

@ -1248,7 +1248,7 @@ void track_paint(uint8 direction, int height, rct_map_element *mapElement)
RCT2_GLOBAL(0x00F441A0, uint32) = 0x20000000;
RCT2_GLOBAL(0x00F441A4, uint32) = 0x20C00000;
RCT2_GLOBAL(0x00F4419C, uint32) = (ride->track_colour_supports[trackColourScheme] << 19) | 0x20000000;
if (mapElement->type & 0x40) {
if (mapElement->type & MAP_ELEMENT_TYPE_FLAG_HIGHLIGHT) {
RCT2_GLOBAL(0x00F44198, uint32) = 0x21600000;
RCT2_GLOBAL(0x00F4419C, uint32) = 0x21600000;
RCT2_GLOBAL(0x00F441A0, uint32) = 0x21600000;

View File

@ -289,7 +289,7 @@ static void window_game_bottom_toolbar_invalidate(rct_window *w)
if (x == SPRITE_LOCATION_NULL)
w->disabled_widgets |= (1 << WIDX_NEWS_LOCATE);
if (!((RCT2_ADDRESS(0x0097BE7C, char))[newsItem->type] & 2)) {
if (!(news_type_properties[newsItem->type] & NEWS_TYPE_HAS_SUBJECT)) {
w->disabled_widgets |= (1 << WIDX_NEWS_SUBJECT);
window_game_bottom_toolbar_widgets[WIDX_NEWS_SUBJECT].type = WWT_EMPTY;
}

View File

@ -1602,7 +1602,7 @@ void window_guest_rides_update(rct_window *w)
uint8 ride_id_offset = ride_id / 8;
if (peep->rides_been_on[ride_id_offset] & (1 << ride_id_bit)){
rct_ride* ride = get_ride(ride_id);
if (RCT2_ADDRESS(0x97C3AF, uint8)[ride->type] == 0){
if (gRideClassifications[ride->type] == RIDE_CLASS_RIDE){
w->list_item_positions[curr_list_position] = ride_id;
curr_list_position++;
}

View File

@ -221,12 +221,12 @@ static void window_news_scrollmousedown(rct_window *w, int scrollIndex, int x, i
buttonIndex = 0;
break;
} else if (x < 351) {
if (RCT2_ADDRESS(0x0097BE7C, uint8)[newsItem->type] & 2) {
if (news_type_properties[newsItem->type] & NEWS_TYPE_HAS_SUBJECT) {
buttonIndex = 1;
break;
}
} else if (x < 376) {
if (RCT2_ADDRESS(0x0097BE7C, uint8)[newsItem->type] & 1) {
if (news_type_properties[newsItem->type] & NEWS_TYPE_HAS_LOCATION) {
buttonIndex = 2;
break;
}
@ -304,7 +304,7 @@ static void window_news_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int s
gfx_draw_string_left_wrapped(dpi, &ch, 2, y + 10, 325, STR_STRING, 14);
// Subject button
if ((RCT2_ADDRESS(0x0097BE7C, uint8)[newsItem->type] & 2) && !(newsItem->flags & 1)) {
if ((news_type_properties[newsItem->type] & NEWS_TYPE_HAS_SUBJECT) && !(newsItem->flags & 1)) {
x = 328;
yy = y + 14;
@ -368,7 +368,7 @@ static void window_news_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int s
}
// Location button
if ((RCT2_ADDRESS(0x0097BE7C, uint8)[newsItem->type] & 1) && !(newsItem->flags & 1)) {
if ((news_type_properties[newsItem->type] & NEWS_TYPE_HAS_LOCATION) && !(newsItem->flags & 1)) {
x = 352;
yy = y + 14;

View File

@ -649,7 +649,7 @@ static void window_ride_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi,
break;
case INFORMATION_TYPE_GUESTS_FAVOURITE:
formatSecondary = 0;
if (RCT2_ADDRESS(0x0097C3AF, uint8)[ride->type] == PAGE_RIDES) {
if (gRideClassifications[ride->type] == RIDE_CLASS_RIDE) {
set_format_arg(2, uint16, ride->guests_favourite);
formatSecondary = ride->guests_favourite == 1 ? STR_GUESTS_FAVOURITE_LABEL : STR_GUESTS_FAVOURITE_PLURAL_LABEL;
}