diff --git a/src/addresses.h b/src/addresses.h index d95538a745..a423340620 100644 --- a/src/addresses.h +++ b/src/addresses.h @@ -200,8 +200,6 @@ #define RCT2_ADDRESS_VOLUME_ADJUST_ZOOM 0x00F438AC -#define RCT2_ADDRESS_STAFF_HIGHLIGHTED_INDEX 0x00F43908 - // Each character is painted onto a drawing surface // any coloured pixels are marked in this bitmap // 8 x 8 in size. @@ -412,8 +410,6 @@ #define RCT2_ADDRESS_WINDOW_RIDE_LIST_SELECTED_TAB 0x00F43824 #define RCT2_ADDRESS_WINDOW_RIDE_LIST_HIGHLIGHTED_ITEM 0x00F43825 -#define RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB 0x00F4390A - #define RCT2_ADDRESS_WINDOW_MAP_SELECTED_TAB 0x014209E4 #define RCT2_ADDRESS_GAME_VERSION_NUMBER 0x0013587BC @@ -568,6 +564,9 @@ #define RCT2_ADDRESS_CONSTRUCT_PATH_VALID_DIRECTIONS 0x00F3EF9E +#define RCT2_ADDRESS_STAFF_HIGHLIGHTED_INDEX 0x00F43908 +#define RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB 0x00F4390A + #define RCT2_ADDRESS_TRACK_PREVIEW_ROTATION 0x00F440AE #define RCT2_ADDRESS_TRACK_PREVIEW_X_MIN 0x00F440F9 #define RCT2_ADDRESS_TRACK_PREVIEW_X_MAX 0x00F440FB diff --git a/src/interface/viewport.c b/src/interface/viewport.c index d81894ba3b..9d22b784a7 100644 --- a/src/interface/viewport.c +++ b/src/interface/viewport.c @@ -21,6 +21,7 @@ #include "../game.h" #include "../input.h" #include "../localisation/localisation.h" +#include "../peep/staff.h" #include "../ride/ride_data.h" #include "../ride/track_data.h" #include "../sprites.h" @@ -64,7 +65,7 @@ void viewport_init_all() gPickupPeepImage = UINT32_MAX; gTooltipNotShownTicks = -1; gMapSelectFlags = 0; - RCT2_GLOBAL(0x009DEA50, sint16) = -1; + gStaffDrawPatrolAreas = 0xFFFF; textinput_cancel(); format_string((char*)0x0141FA44, STR_CANCEL, NULL); format_string((char*)0x0141F944, STR_OK, NULL); diff --git a/src/paint/map_element/surface.c b/src/paint/map_element/surface.c index f624565363..0993b28c94 100644 --- a/src/paint/map_element/surface.c +++ b/src/paint/map_element/surface.c @@ -1125,8 +1125,8 @@ void surface_paint(uint8 direction, uint16 height, rct_map_element * mapElement) // Draw Staff Patrol Areas // loc_660D02 - if (RCT2_GLOBAL(0x009DEA50, sint16) != -1) { - sint32 staffIndex = RCT2_GLOBAL(0x009DEA50, sint16); + if (gStaffDrawPatrolAreas != 0xFFFF) { + sint32 staffIndex = gStaffDrawPatrolAreas; bool is_staff_list = staffIndex & 0x8000; uint8 staffType = staffIndex & 0x7FFF; sint16 x = RCT2_GLOBAL(0x009DE56A, sint16), y = RCT2_GLOBAL(0x009DE56E, sint16); diff --git a/src/peep/staff.h b/src/peep/staff.h index 757e8d2626..9a6fbfd24a 100644 --- a/src/peep/staff.h +++ b/src/peep/staff.h @@ -47,6 +47,7 @@ enum STAFF_ORDERS{ extern uint32 *gStaffPatrolAreas; extern uint8 *gStaffModes; +#define gStaffDrawPatrolAreas RCT2_GLOBAL(0x009DEA50, uint16) #define gStaffColours RCT2_ADDRESS(RCT2_ADDRESS_HANDYMAN_COLOUR, colour_t) #define gStaffHandymanColour RCT2_GLOBAL(RCT2_ADDRESS_HANDYMAN_COLOUR, colour_t) diff --git a/src/windows/staff.c b/src/windows/staff.c index 9194012078..b854b8cdfe 100644 --- a/src/windows/staff.c +++ b/src/windows/staff.c @@ -567,7 +567,7 @@ void window_staff_overview_dropdown(rct_window *w, int widgetIndex, int dropdown else { if (!tool_set(w, widgetIndex, 22)) { show_gridlines(); - RCT2_GLOBAL(0x009DEA50, sint16) = w->number; + gStaffDrawPatrolAreas = w->number; gfx_invalidate_screen(); } } @@ -1218,7 +1218,7 @@ void window_staff_overview_tool_abort(rct_window *w, int widgetIndex) } else if (widgetIndex == WIDX_PATROL){ hide_gridlines(); - RCT2_GLOBAL(0x009DEA50, sint16) = -1; + gStaffDrawPatrolAreas = 0xFFFF; gfx_invalidate_screen(); } } diff --git a/src/windows/staff_list.c b/src/windows/staff_list.c index 14fa4ddb0c..4c6031eb34 100644 --- a/src/windows/staff_list.c +++ b/src/windows/staff_list.c @@ -129,16 +129,15 @@ static rct_widget window_staff_list_widgets[] = { }; static uint16 _window_staff_list_selected_type_count = 0; -// TODO: These are still referenced in non-decompiled code -//static int _window_staff_list_highlighted_index; -//static int _window_staff_list_selected_tab; +static int _windowStaffListHighlightedIndex; +static int _windowStaffListSelectedTab; /* * rct2: 0x006BD39C **/ void window_staff_list_init_vars() { - RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8) = WINDOW_STAFF_LIST_TAB_HANDYMEN; + _windowStaffListSelectedTab = WINDOW_STAFF_LIST_TAB_HANDYMEN; } /* @@ -168,7 +167,7 @@ void window_staff_list_open() (1 << WIDX_STAFF_LIST_QUICK_FIRE); window_init_scroll_widgets(window); - RCT2_GLOBAL(RCT2_ADDRESS_STAFF_HIGHLIGHTED_INDEX, short) = -1; + _windowStaffListHighlightedIndex = -1; window->list_information_type = 0; window_staff_list_widgets[WIDX_STAFF_LIST_UNIFORM_COLOUR_PICKER].type = WWT_EMPTY; @@ -206,7 +205,7 @@ static void window_staff_list_mouseup(rct_window *w, int widgetIndex) window_close(w); break; case WIDX_STAFF_LIST_HIRE_BUTTON: - newStaffId = hire_new_staff_member(RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8)); + newStaffId = hire_new_staff_member(_windowStaffListSelectedTab); if (newStaffId == 0xFFFF) { rct_window* window = window_find_by_class(WC_STAFF_LIST); @@ -219,7 +218,7 @@ static void window_staff_list_mouseup(rct_window *w, int widgetIndex) case WIDX_STAFF_LIST_SHOW_PATROL_AREA_BUTTON: if (!tool_set(w, WIDX_STAFF_LIST_SHOW_PATROL_AREA_BUTTON, 12)) { show_gridlines(); - RCT2_GLOBAL(0x009DEA50, uint16) = RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8) | 0x8000; + gStaffDrawPatrolAreas = _windowStaffListSelectedTab | 0x8000; gfx_invalidate_screen(); } break; @@ -266,15 +265,15 @@ static void window_staff_list_mousedown(int widgetIndex, rct_window* w, rct_widg case WIDX_STAFF_LIST_SECURITY_TAB: case WIDX_STAFF_LIST_ENTERTAINERS_TAB: newSelectedTab = widgetIndex - WIDX_STAFF_LIST_HANDYMEN_TAB;; - if (RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8) == newSelectedTab) + if (_windowStaffListSelectedTab == newSelectedTab) break; - RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8) = (uint8)newSelectedTab; + _windowStaffListSelectedTab = (uint8)newSelectedTab; window_invalidate(w); w->scrolls[0].v_top = 0; window_staff_list_cancel_tools(w); break; case WIDX_STAFF_LIST_UNIFORM_COLOUR_PICKER: - window_dropdown_show_colour(w, widget, w->colours[1], gStaffColours[RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8)]); + window_dropdown_show_colour(w, widget, w->colours[1], gStaffColours[_windowStaffListSelectedTab]); break; } @@ -288,7 +287,7 @@ static void window_staff_list_mousedown(int widgetIndex, rct_window* w, rct_widg static void window_staff_list_dropdown(rct_window *w, int widgetIndex, int dropdownIndex) { if (widgetIndex == WIDX_STAFF_LIST_UNIFORM_COLOUR_PICKER && dropdownIndex != -1) { - update_staff_colour(RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8), dropdownIndex); + update_staff_colour(_windowStaffListSelectedTab, dropdownIndex); } } @@ -305,12 +304,12 @@ void window_staff_list_update(rct_window *w) if (w->list_information_type >= 24) { w->list_information_type = 0; } else { - widget_invalidate(w, WIDX_STAFF_LIST_HANDYMEN_TAB + RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8)); + widget_invalidate(w, WIDX_STAFF_LIST_HANDYMEN_TAB + _windowStaffListSelectedTab); gWindowMapFlashingFlags |= (1 << 2); FOR_ALL_STAFF(spriteIndex, peep) { peep->flags &= ~(SPRITE_FLAGS_PEEP_FLASHING); - if (peep->staff_type == RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8)) { + if (peep->staff_type == _windowStaffListSelectedTab) { peep->flags |= SPRITE_FLAGS_PEEP_FLASHING; } } @@ -329,7 +328,7 @@ static void window_staff_list_tooldown(rct_window *w, int widgetIndex, int x, in uint16 spriteIndex; if (widgetIndex == WIDX_STAFF_LIST_SHOW_PATROL_AREA_BUTTON) { - selectedPeepType = RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8); + selectedPeepType = _windowStaffListSelectedTab; footpath_get_coordinates_from_pos(x, y, &x, &y, &direction, &mapElement); if (x == 0x8000) @@ -383,7 +382,7 @@ void window_staff_list_toolabort(rct_window *w, int widgetIndex) if (widgetIndex == WIDX_STAFF_LIST_SHOW_PATROL_AREA_BUTTON) { hide_gridlines(); tool_cancel(); - RCT2_GLOBAL(0x009DEA50, sint16) = 0xFFFF; + gStaffDrawPatrolAreas = 0xFFFF; gfx_invalidate_screen(); } } @@ -399,14 +398,14 @@ void window_staff_list_scrollgetsize(rct_window *w, int scrollIndex, int *width, uint16 staffCount = 0; FOR_ALL_STAFF(spriteIndex, peep) { - if (peep->staff_type == RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8)) + if (peep->staff_type == _windowStaffListSelectedTab) staffCount++; } _window_staff_list_selected_type_count = staffCount; - if (RCT2_GLOBAL(RCT2_ADDRESS_STAFF_HIGHLIGHTED_INDEX, short) != -1) { - RCT2_GLOBAL(RCT2_ADDRESS_STAFF_HIGHLIGHTED_INDEX, short) = -1; + if (_windowStaffListHighlightedIndex != -1) { + _windowStaffListHighlightedIndex = -1; window_invalidate(w); } @@ -433,7 +432,7 @@ void window_staff_list_scrollmousedown(rct_window *w, int scrollIndex, int x, in i = y / 10; FOR_ALL_STAFF(spriteIndex, peep) { - if (peep->staff_type != RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8)) + if (peep->staff_type != _windowStaffListSelectedTab) continue; if (i == 0) { @@ -457,8 +456,8 @@ void window_staff_list_scrollmouseover(rct_window *w, int scrollIndex, int x, in int i; i = y / 10; - if (i != RCT2_GLOBAL(RCT2_ADDRESS_STAFF_HIGHLIGHTED_INDEX, short)) { - RCT2_GLOBAL(RCT2_ADDRESS_STAFF_HIGHLIGHTED_INDEX, short) = i; + if (i != _windowStaffListHighlightedIndex) { + _windowStaffListHighlightedIndex = i; window_invalidate(w); } } @@ -481,7 +480,7 @@ void window_staff_list_invalidate(rct_window *w) colour_scheme_update(w); int pressed_widgets = w->pressed_widgets & 0xFFFFFF0F; - uint8 tabIndex = RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8); + uint8 tabIndex = _windowStaffListSelectedTab; uint8 widgetIndex = tabIndex + 4; w->pressed_widgets = pressed_widgets | (1ULL << widgetIndex); @@ -530,10 +529,10 @@ void window_staff_list_paint(rct_window *w, rct_drawpixelinfo *dpi) // Widgets window_draw_widgets(w, dpi); - selectedTab = RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8); + selectedTab = _windowStaffListSelectedTab; // Handymen tab image - i = (selectedTab == 0 ? w->list_information_type & 0x0FFFFFFFC : 0); + i = (selectedTab == 0 ? (w->list_information_type & ~3) : 0); i += RCT2_ADDRESS(RCT2_GLOBAL(0x00982710, int), int)[0] + 1; i |= 0x20000000; i |= gStaffHandymanColour << 19; @@ -545,7 +544,7 @@ void window_staff_list_paint(rct_window *w, rct_drawpixelinfo *dpi) ); // Mechanic tab image - i = (selectedTab == 1 ? w->list_information_type & 0x0FFFFFFFC : 0); + i = (selectedTab == 1 ? (w->list_information_type & ~3) : 0); i += RCT2_ADDRESS(RCT2_GLOBAL(0x00982718, int), int)[0] + 1; i |= 0x20000000; i |= gStaffMechanicColour << 19; @@ -557,7 +556,7 @@ void window_staff_list_paint(rct_window *w, rct_drawpixelinfo *dpi) ); // Security tab image - i = (selectedTab == 2 ? w->list_information_type & 0x0FFFFFFFC : 0); + i = (selectedTab == 2 ? (w->list_information_type & ~3) : 0); i += RCT2_ADDRESS(RCT2_GLOBAL(0x00982720, int), int)[0] + 1; i |= 0x20000000; i |= gStaffSecurityColour << 19; @@ -578,7 +577,7 @@ void window_staff_list_paint(rct_window *w, rct_drawpixelinfo *dpi) window_staff_list_widgets[WIDX_STAFF_LIST_ENTERTAINERS_TAB].bottom - window_staff_list_widgets[WIDX_STAFF_LIST_ENTERTAINERS_TAB].top - 1 )) { // Entertainers tab image - i = (selectedTab == 3 ? w->list_information_type & 0x0FFFFFFFC : 0); + i = (selectedTab == 3 ? (w->list_information_type & ~3) : 0); i += RCT2_ADDRESS(RCT2_GLOBAL(0x00982738, int), int)[0] + 1; gfx_draw_sprite(&sprite_dpi, i, 0x0F, 0x17, 0); } @@ -619,7 +618,7 @@ void window_staff_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int sc y = 0; i = 0; - selectedTab = RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_STAFF_LIST_SELECTED_TAB, uint8); + selectedTab = _windowStaffListSelectedTab; FOR_ALL_STAFF(spriteIndex, peep) { if (peep->staff_type == selectedTab) { if (y > dpi->y + dpi->height) { @@ -629,7 +628,7 @@ void window_staff_list_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int sc if (y + 11 >= dpi->y) { int format = (_quick_fire_mode ? 5298 : 1191); - if (i == RCT2_GLOBAL(RCT2_ADDRESS_STAFF_HIGHLIGHTED_INDEX, short)) { + if (i == _windowStaffListHighlightedIndex) { gfx_fill_rect(dpi, 0, y, 800, y + 9, 0x2000031); format = (_quick_fire_mode ? 5299 : 1193); }