Tried swaping to a global variable for ride_list

This commit is contained in:
Duncan Frost 2014-06-29 14:38:38 +01:00
parent 3f91db2109
commit 32624b912c
10 changed files with 41 additions and 37 deletions

View File

@ -44,7 +44,7 @@ int marketing_get_campaign_guest_generation_probability(int campaign)
probability /= 8;
break;
case ADVERTISING_CAMPAIGN_RIDE_FREE:
ride = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[RCT2_ADDRESS(0x01358116, uint8)[campaign]]);
ride = &g_ride_list[RCT2_ADDRESS(0x01358116, uint8)[campaign]];
if (ride->price < 3)
probability /= 8;
break;

View File

@ -182,7 +182,7 @@ void news_item_get_subject_location(int type, int subject, int *x, int *y, int *
switch (type) {
case NEWS_ITEM_RIDE:
ride = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[subject]);
ride = &g_ride_list[subject];
if (ride->overall_view == 0xFFFF) {
*x = SPRITE_LOCATION_NULL;
break;
@ -205,7 +205,7 @@ void news_item_get_subject_location(int type, int subject, int *x, int *y, int *
}
// Find which ride peep is on
ride = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride]);
ride = &g_ride_list[peep->current_ride];
if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_ON_TRACK)) {
*x = SPRITE_LOCATION_NULL;
break;

View File

@ -305,7 +305,7 @@ money32 calculate_park_value()
// Sum ride values
result = 0;
for (i = 0; i < 255; i++) {
ride = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[i]);
ride = &g_ride_list[i];
result += calculate_ride_value(ride);
}

View File

@ -181,7 +181,7 @@ void peep_problem_warnings_update()
hunger_counter++;
break;
}
ride = &RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->var_C5];
ride = &g_ride_list[peep->var_C5];
if (!(RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + ride->type * 8, uint32) & 0x80000))
hunger_counter++;
break;
@ -191,7 +191,7 @@ void peep_problem_warnings_update()
thirst_counter++;
break;
}
ride = &RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->var_C5];
ride = &g_ride_list[peep->var_C5];
if (!(RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + ride->type * 8, uint32) & 0x1000000))
thirst_counter++;
break;
@ -201,7 +201,7 @@ void peep_problem_warnings_update()
bathroom_counter++;
break;
}
ride = &RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->var_C5];
ride = &g_ride_list[peep->var_C5];
if (!(RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + ride->type * 8, uint32) & 0x2000000))
bathroom_counter++;
break;

View File

@ -99,6 +99,8 @@ const uint8 gRideClassifications[255] = {
#pragma endregion
rct_ride* g_ride_list = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride);
int ride_get_count()
{
rct_ride *ride;
@ -139,7 +141,7 @@ void ride_init_all()
rct_ride_measurement *ride_measurement;
for (i = 0; i < MAX_RIDES; i++) {
ride = GET_RIDE(i);
ride = &g_ride_list[i];
ride->type = RIDE_TYPE_NULL;
}
@ -183,7 +185,7 @@ void ride_update_favourited_stat()
if (peep->var_08 != 4)
return;
if (peep->favourite_ride != 0xff) {
ride = GET_RIDE(peep->favourite_ride);
ride = &g_ride_list[peep->favourite_ride];
ride->guests_favourite++;
ride->var_14D |= 1;
@ -280,7 +282,7 @@ void ride_shop_connected(rct_ride* ride, int ride_idx)
}
uint8 track_type = tile->properties.track.type;
ride = GET_RIDE(tile->properties.track.ride_index);
ride = &g_ride_list[tile->properties.track.ride_index];
if (RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + ride->type * 8, uint32) & 0x80000) {
entrance_directions = RCT2_ADDRESS(0x0099CA64, uint8)[track_type * 16];
} else {

View File

@ -326,8 +326,10 @@ enum {
#define MAX_RIDE_MEASUREMENTS 8
#define RIDE_RELIABILITY_UNDEFINED 0xFFFF
extern rct_ride* g_ride_list;
/** Helper macros until rides are stored in this module. */
#define GET_RIDE(x) (&(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[x]))
#define GET_RIDE(x) (&g_ride_list[x])
#define GET_RIDE_MEASUREMENT(x) (&(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_MEASUREMENTS, rct_ride_measurement)[x]))
/**
@ -335,7 +337,7 @@ enum {
*/
#define FOR_ALL_RIDES(i, ride) \
for (i = 0; i < MAX_RIDES; i++) \
if ((ride = GET_RIDE(i))->type != RIDE_TYPE_NULL)
if ((ride = &g_ride_list[i])->type != RIDE_TYPE_NULL)
extern const uint8 gRideClassifications[255];

View File

@ -501,7 +501,7 @@ void scenario_objectives_check()
rct_ride* ride;
int rcs = 0;
for (int i = 0; i < MAX_RIDES; i++) {
ride = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[i]);
ride = &g_ride_list[i];
if (ride->status && ride->excitement > objective_currency)
rcs++;
}

View File

@ -830,7 +830,7 @@ void get_arguments_from_thought(rct_peep_thought thought, uint32* argument_1, ui
int esi = 0x9AC86C;
if ((RCT2_ADDRESS(0x981DB1, uint16)[thought.type] & 0xFF) & 1){
rct_ride* ride = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST,rct_ride)[thought.item]);
rct_ride* ride = &g_ride_list[thought.item];
esi = &(ride->var_04A);
}
else if ((RCT2_ADDRESS(0x981DB1, uint16)[thought.type] & 0xFF) & 2){
@ -880,7 +880,7 @@ void get_arguments_from_action(rct_peep* peep, uint32 *argument_1, uint32* argum
case PEEP_STATE_LEAVING_RIDE:
case PEEP_STATE_ENTERING_RIDE:
*argument_1 = STR_ON_RIDE;
ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride];
ride = g_ride_list[peep->current_ride];
if (RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + ride.type*8, uint32)& 0x400000){
*argument_1 = STR_IN_RIDE;
}
@ -888,14 +888,14 @@ void get_arguments_from_action(rct_peep* peep, uint32 *argument_1, uint32* argum
*argument_2 = ride.var_04C;
break;
case PEEP_STATE_BUYING:
ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride];
ride = g_ride_list[peep->current_ride];
*argument_1 = STR_AT_RIDE | (ride.var_04A << 16);
*argument_2 = ride.var_04C;
break;
case PEEP_STATE_WALKING:
case 0x14:
if (peep->var_C5 != 0xFF){
ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->var_C5];
ride = g_ride_list[peep->var_C5];
*argument_1 = STR_HEADING_FOR | (ride.var_04A << 16);
*argument_2 = ride.var_04C;
}
@ -906,7 +906,7 @@ void get_arguments_from_action(rct_peep* peep, uint32 *argument_1, uint32* argum
break;
case PEEP_STATE_QUEUING_FRONT:
case PEEP_STATE_QUEUING:
ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride];
ride = g_ride_list[peep->current_ride];
*argument_1 = STR_QUEUING_FOR | (ride.var_04A << 16);
*argument_2 = ride.var_04C;
break;
@ -916,7 +916,7 @@ void get_arguments_from_action(rct_peep* peep, uint32 *argument_1, uint32* argum
break;
case PEEP_STATE_WATCHING:
if (peep->current_ride != 0xFF){
ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride];
ride = g_ride_list[peep->current_ride];
*argument_1 = STR_WATCHING_RIDE | (ride.var_04A << 16);
*argument_2 = ride.var_04C;
if (peep->current_seat & 0x1)
@ -965,23 +965,23 @@ void get_arguments_from_action(rct_peep* peep, uint32 *argument_1, uint32* argum
*argument_2 = 0;
}
else{
ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride];
ride = g_ride_list[peep->current_ride];
*argument_1 = STR_RESPONDING_TO_RIDE_BREAKDOWN_CALL | (ride.var_04A << 16);
*argument_2 = ride.var_04C;
}
break;
case PEEP_STATE_FIXING:
ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride];
ride = g_ride_list[peep->current_ride];
*argument_1 = STR_FIXING_RIDE | (ride.var_04A << 16);
*argument_2 = ride.var_04C;
break;
case PEEP_STATE_HEADING_TO_INSPECTION:
ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride];
ride = g_ride_list[peep->current_ride];
*argument_1 = STR_HEADING_TO_RIDE_FOR_INSPECTION | (ride.var_04A << 16);
*argument_2 = ride.var_04C;
break;
case PEEP_STATE_INSPECTING:
ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride];
ride = g_ride_list[peep->current_ride];
*argument_1 = STR_INSPECTING_RIDE | (ride.var_04A << 16);
*argument_2 = ride.var_04C;
break;

View File

@ -63,9 +63,9 @@ rct_widget window_peep_overview_widgets[] = {
{ WWT_TAB, 1, 96, 126, 17, 43, 0x2000144E, 1942}, // Tab 4
{ WWT_TAB, 1, 127, 157, 17, 43, 0x2000144E, 1943}, // Tab 5
{ WWT_TAB, 1, 158, 188, 17, 43, 0x2000144E, 1944}, // Tab 6
{ WWT_12, 1, 3, 166, 45, 56, 0x0FFFFFFFF, STR_NONE}, // Label 1
{ WWT_12, 1, 3, 166, 45, 56, 0x0FFFFFFFF, STR_NONE}, // Label Thought marquee
{ WWT_VIEWPORT, 1, 3, 166, 57, 143, 0x0FFFFFFFF, STR_NONE }, // Viewport
{ WWT_12, 1, 3, 166, 144, 154, 0x0FFFFFFFF, STR_NONE}, // Label 2
{ WWT_12, 1, 3, 166, 144, 154, 0x0FFFFFFFF, STR_NONE}, // Label Action
{ WWT_FLATBTN, 1, 167, 190, 45, 68, SPR_RENAME, 1706}, // Rename Button
{ WWT_FLATBTN, 1, 167, 190, 69, 92, 0x1430, 1055}, // Pickup Button
{ WWT_FLATBTN, 1, 167, 190, 93, 116, SPR_LOCATE, STR_LOCATE_SUBJECT_TIP},// Locate Button
@ -146,7 +146,7 @@ void window_peep_open(rct_peep* peep){
window->var_490 = 0;
window->var_492 = 0;
window->var_494 = 0;
//Call 6987a6
RCT2_CALLPROC_X(0x006987A6, 0, 0, 0, 0, (int)window, 0, 0);
window->min_width = 192;
window->min_height = 157;
window->max_width = 500;
@ -169,7 +169,7 @@ void window_peep_open(rct_peep* peep){
window->event_handlers = RCT2_GLOBAL(0x981D24,uint32);
window->pressed_widgets = 0;
//call 6987A6
RCT2_CALLPROC_X(0x006987A6, 0, 0, 0, 0, (int)window, 0, 0);
window_init_scroll_widgets(window);
//call 69883c

View File

@ -557,7 +557,7 @@ static void window_ride_list_scrollpaint()
}
// Get ride
ride = &RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[i]];
ride = &g_ride_list[w->var_076[i]];
// Ride name
gfx_draw_string_left_clipped(dpi, format, &ride->var_04A, 0, 0, y - 1, 159);
@ -703,7 +703,7 @@ static void window_ride_list_refresh_list(rct_window *w)
RCT2_GLOBAL(0x013CE952, uint32) = ride->var_04C;
RCT2_CALLPROC_X(0x006C2538, ride->var_04A, 0, 0x013CE952, 0, 0, 0x0141ED68, 0);
while (--k >= 0) {
otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]);
otherRide = &g_ride_list[w->var_076[k]];
RCT2_GLOBAL(0x013CE952, uint32) = otherRide->var_04C;
RCT2_CALLPROC_X(0x006C2538, otherRide->var_04A, 0, 0x013CE952, 0, 0, 0x0141EF68, 0);
if (strcmp((char*)0x0141ED68, (char*)0x0141EF68) >= 0)
@ -716,7 +716,7 @@ static void window_ride_list_refresh_list(rct_window *w)
break;
case INFORMATION_TYPE_POPULARITY:
while (--k >= 0) {
otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]);
otherRide = &g_ride_list[w->var_076[k]];
if ((ride->var_158 & 0xFF) * 4 <= (otherRide->var_158 & 0xFF) * 4)
break;
@ -727,7 +727,7 @@ static void window_ride_list_refresh_list(rct_window *w)
break;
case INFORMATION_TYPE_SATISFACTION:
while (--k >= 0) {
otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]);
otherRide = &g_ride_list[w->var_076[k]];
if ((ride->var_14A & 0xFF) * 5 <= (otherRide->var_14A & 0xFF) * 5)
break;
@ -738,7 +738,7 @@ static void window_ride_list_refresh_list(rct_window *w)
break;
case INFORMATION_TYPE_PROFIT:
while (--k >= 0) {
otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]);
otherRide = &g_ride_list[w->var_076[k]];
if (ride->profit <= otherRide->profit)
break;
@ -749,7 +749,7 @@ static void window_ride_list_refresh_list(rct_window *w)
break;
case INFORMATION_TYPE_QUEUE_LENGTH:
while (--k >= 0) {
otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]);
otherRide = &g_ride_list[w->var_076[k]];
if (ride_get_total_queue_length(ride) <= ride_get_total_queue_length(otherRide))
break;
@ -760,7 +760,7 @@ static void window_ride_list_refresh_list(rct_window *w)
break;
case INFORMATION_TYPE_QUEUE_TIME:
while (--k >= 0) {
otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]);
otherRide = &g_ride_list[w->var_076[k]];
if (ride_get_max_queue_time(ride) <= ride_get_max_queue_time(otherRide))
break;
@ -771,7 +771,7 @@ static void window_ride_list_refresh_list(rct_window *w)
break;
case INFORMATION_TYPE_RELIABILITY:
while (--k >= 0) {
otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]);
otherRide = &g_ride_list[w->var_076[k]];
if (ride->var_196 >> 8 <= otherRide->var_196 >> 8)
break;
@ -782,7 +782,7 @@ static void window_ride_list_refresh_list(rct_window *w)
break;
case INFORMATION_TYPE_DOWN_TIME:
while (--k >= 0) {
otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]);
otherRide = &g_ride_list[w->var_076[k]];
if (ride->var_199 <= otherRide->var_199)
break;
@ -793,7 +793,7 @@ static void window_ride_list_refresh_list(rct_window *w)
break;
case INFORMATION_TYPE_GUESTS_FAVOURITE:
while (--k >= 0) {
otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]);
otherRide = &g_ride_list[w->var_076[k]];
if (ride->guests_favourite <= otherRide->guests_favourite)
break;