1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-15 11:03:00 +01:00

integrate some staff variables

This commit is contained in:
Ted John
2016-05-18 23:46:46 +01:00
parent afc54aef63
commit 3fd252a8c3
6 changed files with 38 additions and 38 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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);

View File

@@ -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)

View File

@@ -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();
}
}

View File

@@ -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);
}