1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-18 04:23:20 +01:00

refactor ride entries for ride window

This commit is contained in:
IntelOrca
2014-09-20 16:02:21 +01:00
parent 8355bf6a61
commit ac5985eaa0
4 changed files with 44 additions and 36 deletions

View File

@@ -107,6 +107,8 @@
#define RCT2_ADDRESS_RUN_INTRO_TICK_PART 0x009AC319
#define RCT2_ADDRESS_RIDE_ENTRIES 0x009ACFA4
#define RCT2_ADDRESS_INSTALLED_OBJECT_LIST 0x009ADAE8
#define RCT2_ADDRESS_CURRENT_SOUND_DEVICE 0x009AF280

View File

@@ -635,4 +635,9 @@ void ride_init_vehicle_speed(rct_ride *ride)
}
}
}
}
rct_ride_type *ride_get_entry(rct_ride *ride)
{
return GET_RIDE_ENTRY(ride->subtype);
}

View File

@@ -501,6 +501,7 @@ extern rct_ride* g_ride_list;
/** Helper macros until rides are stored in this module. */
#define GET_RIDE(x) (&g_ride_list[x])
#define GET_RIDE_MEASUREMENT(x) (&(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_MEASUREMENTS, rct_ride_measurement)[x]))
#define GET_RIDE_ENTRY(x) RCT2_ADDRESS(RCT2_ADDRESS_RIDE_ENTRIES, rct_ride_type**)[x]
/**
* Helper macro loop for enumerating through all the non null rides.
@@ -528,5 +529,6 @@ int ride_get_total_length(rct_ride *ride);
int ride_can_have_multiple_circuits(rct_ride *ride);
track_colour ride_get_track_colour(rct_ride *ride, int colourScheme);
vehicle_colour ride_get_vehicle_colour(rct_ride *ride, int vehicleIndex);
rct_ride_type *ride_get_entry(rct_ride *ride);
#endif

View File

@@ -915,7 +915,7 @@ static void window_ride_draw_tab_vehicle(rct_drawpixelinfo *dpi, rct_window *w)
rct_widget *widget;
int widgetIndex, spriteIndex, x, y, width, height;
uint8 *ebp;
rct_ride_type *rideEntry, **rideEntries = (rct_ride_type**)0x009ACFA4;
rct_ride_type *rideEntry;
vehicle_colour vehicleColour;
widgetIndex = WIDX_TAB_1 + WINDOW_PARK_PAGE_VEHICLE;
@@ -942,7 +942,7 @@ static void window_ride_draw_tab_vehicle(rct_drawpixelinfo *dpi, rct_window *w)
ride = GET_RIDE(w->number);
RCT2_CALLPROC_X(0x006DE4CD, (ride->num_cars_per_train << 8) | ride->subtype, 0, 0, 0, 0, 0, 0);
rideEntry = rideEntries[ride->subtype];
rideEntry = ride_get_entry(ride);
if (rideEntry->var_008 & 1) {
dpi->zoom_level = 1;
dpi->width *= 2;
@@ -1932,12 +1932,12 @@ static void window_ride_vehicle_mousedown(int widgetIndex, rct_window *w, rct_wi
{
rct_widget *dropdownWidget = widget - 1;
rct_ride *ride;
rct_ride_type *rideEntry, **rideEntries = (rct_ride_type**)0x009ACFA4;
rct_ride_type *rideEntry;
rct_string_id stringId;
int i, minCars, maxCars, cars;
ride = GET_RIDE(w->number);
rideEntry = rideEntries[ride->subtype];
rideEntry = ride_get_entry(ride);
switch (widgetIndex) {
case WIDX_VEHICLE_TYPE_DROPDOWN:
@@ -1999,7 +1999,7 @@ static void window_ride_vehicle_dropdown()
rct_window *w;
short widgetIndex, dropdownIndex;
rct_ride *ride;
rct_ride_type *rideEntry, **rideEntries = (rct_ride_type**)0x009ACFA4;
rct_ride_type *rideEntry;
window_dropdown_get_registers(w, widgetIndex, dropdownIndex);
@@ -2007,7 +2007,7 @@ static void window_ride_vehicle_dropdown()
return;
ride = GET_RIDE(w->number);
rideEntry = rideEntries[ride->subtype];
rideEntry = ride_get_entry(ride);
switch (widgetIndex) {
case WIDX_VEHICLE_TYPE_DROPDOWN:
@@ -2043,7 +2043,7 @@ static void window_ride_vehicle_invalidate()
rct_window *w;
rct_widget *widgets;
rct_ride *ride;
rct_ride_type *rideEntry, **rideEntries = (rct_ride_type**)0x009ACFA4;
rct_ride_type *rideEntry;
rct_string_id stringId;
int carsPerTrain;
@@ -2058,7 +2058,7 @@ static void window_ride_vehicle_invalidate()
window_ride_set_pressed_tab(w);
ride = GET_RIDE(w->number);
rideEntry = rideEntries[ride->subtype];
rideEntry = ride_get_entry(ride);
RCT2_GLOBAL(0x013CE952 + 0, uint16) = ride->name;
RCT2_GLOBAL(0x013CE952 + 2, uint32) = ride->name_arguments;
@@ -2117,7 +2117,7 @@ static void window_ride_vehicle_paint()
rct_window *w;
rct_drawpixelinfo *dpi;
rct_ride *ride;
rct_ride_type *rideEntry, **rideEntries = (rct_ride_type**)0x009ACFA4;
rct_ride_type *rideEntry;
rct_string_id stringId;
int x, y;
sint16 factor;
@@ -2128,7 +2128,7 @@ static void window_ride_vehicle_paint()
window_ride_draw_tab_images(dpi, w);
ride = GET_RIDE(w->number);
rideEntry = rideEntries[ride->subtype];
rideEntry = ride_get_entry(ride);
x = w->x + 8;
y = w->y + 64;
@@ -2142,7 +2142,7 @@ static void window_ride_vehicle_paint()
gfx_draw_string_left(dpi, 3142, &stringId, 0, x, y);
y += 15;
if (!(rideEntry->var_008 & 0x2000) || var_496(w) > 1) {
if (!(rideEntry->var_008 & 0x2000) && var_496(w) > 1) {
// Excitement Factor
factor = rideEntry->excitement_multipler;
gfx_draw_string_left(dpi, 3125, &factor, 0, x, y);
@@ -2165,9 +2165,9 @@ typedef struct {
short y;
int sprite_index;
int tertiary_colour;
} unkpaintstruct;
} rct_vehichle_paintinfo;
unkpaintstruct _sprites_to_draw[144];
rct_vehichle_paintinfo _sprites_to_draw[144];
/**
*
@@ -2178,16 +2178,16 @@ static void window_ride_vehicle_scrollpaint()
rct_window *w;
rct_drawpixelinfo *dpi;
rct_ride *ride;
rct_ride_type *rideEntry, **rideEntries = (rct_ride_type**)0x009ACFA4;
rct_ride_type *rideEntry;
rct_widget *widget;
int x, y, startX, startY, i, j, vehicleColourIndex, spriteIndex, ebp;
unkpaintstruct *nextSpriteToDraw, *current, tmp;
rct_vehichle_paintinfo *nextSpriteToDraw, *current, tmp;
vehicle_colour vehicleColour;
window_paint_get_registers(w, dpi);
ride = GET_RIDE(w->number);
rideEntry = rideEntries[ride->subtype];
rideEntry = ride_get_entry(ride);
// Background
gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width, dpi->y + dpi->height, 12);
@@ -2332,7 +2332,7 @@ static void window_ride_mode_tweak_decrease(rct_window *w)
*/
static void window_ride_mode_dropdown(rct_window *w, rct_widget *widget)
{
rct_ride_type *rideEntry, **rideEntries = (rct_ride_type**)0x009ACFA4;
rct_ride_type *rideEntry;
rct_widget *dropdownWidget;
rct_ride *ride;
const uint8 *availableModes, *mode;
@@ -2340,7 +2340,7 @@ static void window_ride_mode_dropdown(rct_window *w, rct_widget *widget)
dropdownWidget = widget - 1;
ride = GET_RIDE(w->number);
rideEntry = rideEntries[ride->subtype];
rideEntry = ride_get_entry(ride);
// Seek to available modes for this ride
availableModes = RideAvailableModes;
@@ -2586,7 +2586,7 @@ static void window_ride_operating_invalidate()
rct_window *w;
rct_widget *widgets;
rct_ride *ride;
rct_ride_type *rideEntry, **rideEntries = (rct_ride_type**)0x009ACFA4;
rct_ride_type *rideEntry;
rct_string_id format, caption, tooltip;
window_get_register(w);
@@ -2600,7 +2600,7 @@ static void window_ride_operating_invalidate()
window_ride_set_pressed_tab(w);
ride = GET_RIDE(w->number);
rideEntry = rideEntries[ride->subtype];
rideEntry = ride_get_entry(ride);
RCT2_GLOBAL(0x013CE952 + 0, uint16) = ride->name;
RCT2_GLOBAL(0x013CE952 + 2, uint32) = ride->name_arguments;
@@ -3262,12 +3262,12 @@ static void window_ride_colour_mousedown(int widgetIndex, rct_window *w, rct_wid
uint16 colourSchemeIndex;
vehicle_colour vehicleColour;
rct_widget *dropdownWidget;
rct_ride_type *rideEntry, **rideEntries = (rct_ride_type**)0x009ACFA4;
rct_ride_type *rideEntry;
int i, numItems;
rct_string_id stringId;
ride = GET_RIDE(w->number);
rideEntry = rideEntries[ride->subtype];
rideEntry = ride_get_entry(ride);
colourSchemeIndex = *((uint16*)&w->var_494);
dropdownWidget = widget - 1;
@@ -3494,7 +3494,7 @@ static void window_ride_colour_invalidate()
{
rct_window *w;
rct_widget *widgets;
rct_ride_type *rideEntry, **rideEntries = (rct_ride_type**)0x009ACFA4;
rct_ride_type *rideEntry;
rct_ride *ride;
track_colour trackColour;
vehicle_colour vehicleColour;
@@ -3511,7 +3511,7 @@ static void window_ride_colour_invalidate()
window_ride_set_pressed_tab(w);
ride = GET_RIDE(w->number);
rideEntry = rideEntries[ride->subtype];
rideEntry = ride_get_entry(ride);
RCT2_GLOBAL(0x013CE952 + 0, uint16) = ride->name;
RCT2_GLOBAL(0x013CE952 + 2, uint32) = ride->name_arguments;
@@ -3678,14 +3678,14 @@ static void window_ride_colour_paint()
rct_drawpixelinfo *dpi, *clippedDpi;
rct_widget *widget;
rct_ride *ride;
rct_ride_type *rideEntry, **rideEntries = (rct_ride_type**)0x009ACFA4;
rct_ride_type *rideEntry;
int x, y, spriteIndex, terniaryColour;
track_colour trackColour;
window_paint_get_registers(w, dpi);
ride = GET_RIDE(w->number);
rideEntry = rideEntries[ride->subtype];
rideEntry = ride_get_entry(ride);
window_draw_widgets(w, dpi);
window_ride_draw_tab_images(dpi, w);
@@ -3770,7 +3770,7 @@ static void window_ride_colour_scrollpaint()
rct_window *w;
rct_drawpixelinfo *dpi;
rct_ride *ride;
rct_ride_type *rideEntry, **rideEntries = (rct_ride_type**)0x009ACFA4;
rct_ride_type *rideEntry;
rct_widget *vehiclePreviewWidget;
uint8 *unk;
int colour, x, y, spriteIndex;
@@ -3779,7 +3779,7 @@ static void window_ride_colour_scrollpaint()
window_paint_get_registers(w, dpi);
ride = GET_RIDE(w->number);
rideEntry = rideEntries[ride->subtype];
rideEntry = ride_get_entry(ride);
vehiclePreviewWidget = &window_ride_colour_widgets[WIDX_VEHICLE_PREVIEW];
vehicleColour = ride_get_vehicle_colour(ride, w->var_48C);
@@ -3797,7 +3797,7 @@ static void window_ride_colour_scrollpaint()
colour = RCT2_ADDRESS(0x00F64E38, uint8)[colour];
unk = (uint8*)rideEntry + (colour * 101);
y += RCT2_GLOBAL(unk + 0x24, uint8);
y += RCT2_GLOBAL(unk + 0x24, sint8);
// Draw the coloured spinning vehicle
spriteIndex = RCT2_GLOBAL(unk + 0x2C, uint8) & 0x800 ? w->frame_no / 4 : w->frame_no / 2;
@@ -4632,7 +4632,7 @@ static void window_ride_income_invalidate()
{
rct_window *w;
rct_widget *widgets;
rct_ride_type *rideEntry, **rideEntries = (rct_ride_type**)0x009ACFA4;
rct_ride_type *rideEntry;
rct_string_id stringId;
int primaryItem, secondaryItem;
@@ -4650,7 +4650,7 @@ static void window_ride_income_invalidate()
RCT2_GLOBAL(0x013CE952 + 0, uint16) = ride->name;
RCT2_GLOBAL(0x013CE952 + 2, uint32) = ride->name_arguments;
rideEntry = rideEntries[ride->subtype];
rideEntry = ride_get_entry(ride);
// Primary item
w->pressed_widgets &= ~(1 << WIDX_PRIMARY_PRICE_SAME_THROUGHOUT_PARK);
@@ -4751,7 +4751,7 @@ static void window_ride_income_paint()
rct_window *w;
rct_drawpixelinfo *dpi;
rct_ride *ride;
rct_ride_type *rideEntry, **rideEntries = (rct_ride_type**)0x009ACFA4;
rct_ride_type *rideEntry;
rct_string_id stringId;
money32 profit, costPerHour;
int x, y, primaryItem, secondaryItem;
@@ -4762,7 +4762,7 @@ static void window_ride_income_paint()
window_ride_draw_tab_images(dpi, w);
ride = GET_RIDE(w->number);
rideEntry = rideEntries[ride->subtype];
rideEntry = ride_get_entry(ride);
x = w->x + window_ride_income_widgets[WIDX_PAGE_BACKGROUND].left + 4;
y = w->y + window_ride_income_widgets[WIDX_PAGE_BACKGROUND].top + 29;
@@ -4958,7 +4958,6 @@ static void window_ride_customer_paint()
sint16 popularity, satisfaction, queueTime, age;
sint32 customersPerHour;
rct_string_id stringId;
rct_ride_type **rideEntries = (rct_ride_type**)0x009ACFA4;
window_paint_get_registers(w, dpi);
@@ -5005,7 +5004,7 @@ static void window_ride_customer_paint()
y += 5;
// Primary shop items sold
shopItem = rideEntries[ride->subtype]->shop_item;
shopItem = ride_get_entry(ride)->shop_item;
if (shopItem != 0xFF) {
stringId = 2016 + shopItem;
if (stringId >= 2048)
@@ -5020,7 +5019,7 @@ static void window_ride_customer_paint()
// Secondary shop items sold / on-ride photos sold
shopItem = ride->lifecycle_flags & RIDE_LIFECYCLE_ON_RIDE_PHOTO ?
RCT2_GLOBAL(0x0097D7CB + (ride->type * 4), uint8) :
rideEntries[ride->subtype]->shop_item_secondary;
ride_get_entry(ride)->shop_item_secondary;
if (shopItem != 0xFF) {
stringId = 2016 + shopItem;
if (stringId >= 2048)