1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-24 08:12:53 +01:00

Fix #11109. Incorrect drawing of staff list after refactor. (#11134)

Looks like I just completely forgot to implement the required changes to the drawing code. Drawing code now uses the new StaffList.
This commit is contained in:
Duncan
2020-03-29 22:00:28 +01:00
committed by GitHub
parent 920150b06d
commit 87b90f2304

View File

@@ -672,10 +672,6 @@ static constexpr const uint32_t staffCostumeSprites[] = {
*/
void window_staff_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_t scrollIndex)
{
int32_t spriteIndex, y, i, staffOrderIcon_x, staffOrders, staffOrderSprite;
uint8_t selectedTab;
Peep* peep;
gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ColourMapA[w->colours[1]].mid_light);
// How much space do we have for the name and action columns? (Discount scroll area and icons.)
@@ -684,67 +680,64 @@ void window_staff_list_scrollpaint(rct_window* w, rct_drawpixelinfo* dpi, int32_
const int32_t actionColumnSize = nonIconSpace * 0.58;
const int32_t actionOffset = w->widgets[WIDX_STAFF_LIST_LIST].right - actionColumnSize - 15;
y = 0;
i = 0;
selectedTab = _windowStaffListSelectedTab;
FOR_ALL_STAFF (spriteIndex, peep)
auto y = 0;
auto i = 0;
for (auto spriteIndex : StaffList)
{
if (peep->staff_type == selectedTab)
if (y > dpi->y + dpi->height)
{
if (y > dpi->y + dpi->height)
{
break;
}
if (y + 11 >= dpi->y)
{
int32_t format = (_quick_fire_mode ? STR_RED_STRINGID : STR_BLACK_STRING);
if (i == _windowStaffListHighlightedIndex)
{
gfx_filter_rect(dpi, 0, y, 800, y + (SCROLLABLE_ROW_HEIGHT - 1), PALETTE_DARKEN_1);
format = (_quick_fire_mode ? STR_LIGHTPINK_STRINGID : STR_WINDOW_COLOUR_2_STRINGID);
}
peep->FormatNameTo(gCommonFormatArgs);
gfx_draw_string_left_clipped(dpi, format, gCommonFormatArgs, COLOUR_BLACK, 0, y, nameColumnSize);
peep->FormatActionTo(gCommonFormatArgs);
gfx_draw_string_left_clipped(dpi, format, gCommonFormatArgs, COLOUR_BLACK, actionOffset, y, actionColumnSize);
// True if a patrol path is set for the worker
if (gStaffModes[peep->staff_id] & 2)
{
gfx_draw_sprite(dpi, SPR_STAFF_PATROL_PATH, nameColumnSize + 5, y, 0);
}
staffOrderIcon_x = nameColumnSize + 20;
if (peep->staff_type != 3)
{
staffOrders = peep->staff_orders;
staffOrderSprite = staffOrderBaseSprites[selectedTab];
while (staffOrders != 0)
{
if (staffOrders & 1)
{
gfx_draw_sprite(dpi, staffOrderSprite, staffOrderIcon_x, y, 0);
}
staffOrders = staffOrders >> 1;
staffOrderIcon_x += 9;
// TODO: Remove sprite ID addition
staffOrderSprite++;
}
}
else
{
gfx_draw_sprite(dpi, staffCostumeSprites[peep->sprite_type - 4], staffOrderIcon_x, y, 0);
}
}
y += SCROLLABLE_ROW_HEIGHT;
i++;
break;
}
if (y + 11 >= dpi->y)
{
auto peep = GET_PEEP(spriteIndex);
int32_t format = (_quick_fire_mode ? STR_RED_STRINGID : STR_BLACK_STRING);
if (i == _windowStaffListHighlightedIndex)
{
gfx_filter_rect(dpi, 0, y, 800, y + (SCROLLABLE_ROW_HEIGHT - 1), PALETTE_DARKEN_1);
format = (_quick_fire_mode ? STR_LIGHTPINK_STRINGID : STR_WINDOW_COLOUR_2_STRINGID);
}
peep->FormatNameTo(gCommonFormatArgs);
gfx_draw_string_left_clipped(dpi, format, gCommonFormatArgs, COLOUR_BLACK, 0, y, nameColumnSize);
peep->FormatActionTo(gCommonFormatArgs);
gfx_draw_string_left_clipped(dpi, format, gCommonFormatArgs, COLOUR_BLACK, actionOffset, y, actionColumnSize);
// True if a patrol path is set for the worker
if (gStaffModes[peep->staff_id] & 2)
{
gfx_draw_sprite(dpi, SPR_STAFF_PATROL_PATH, nameColumnSize + 5, y, 0);
}
auto staffOrderIcon_x = nameColumnSize + 20;
if (peep->staff_type != 3)
{
auto staffOrders = peep->staff_orders;
auto staffOrderSprite = staffOrderBaseSprites[_windowStaffListSelectedTab];
while (staffOrders != 0)
{
if (staffOrders & 1)
{
gfx_draw_sprite(dpi, staffOrderSprite, staffOrderIcon_x, y, 0);
}
staffOrders = staffOrders >> 1;
staffOrderIcon_x += 9;
// TODO: Remove sprite ID addition
staffOrderSprite++;
}
}
else
{
gfx_draw_sprite(dpi, staffCostumeSprites[peep->sprite_type - 4], staffOrderIcon_x, y, 0);
}
}
y += SCROLLABLE_ROW_HEIGHT;
i++;
}
}