mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-04 13:42:55 +01:00
Clean up dropdowns
This commit is contained in:
committed by
Michael Steenbeek
parent
0db5bc6bd2
commit
f2f8cec944
@@ -1211,7 +1211,7 @@ void input_state_widget_pressed(sint32 x, sint32 y, sint32 state, rct_widgetinde
|
||||
goto dropdown_cleanup;
|
||||
}
|
||||
|
||||
if (gDropdownItemsFormat[dropdown_index] == 0) {
|
||||
if (gDropdownItemsFormat[dropdown_index] == DROPDOWN_SEPARATOR) {
|
||||
goto dropdown_cleanup;
|
||||
}
|
||||
}
|
||||
@@ -1346,7 +1346,7 @@ void input_state_widget_pressed(sint32 x, sint32 y, sint32 state, rct_widgetinde
|
||||
return;
|
||||
}
|
||||
|
||||
if (gDropdownItemsFormat[dropdown_index] == 0) {
|
||||
if (gDropdownItemsFormat[dropdown_index] == DROPDOWN_SEPARATOR) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -323,10 +323,10 @@ static void window_dropdown_paint(rct_window *w, rct_drawpixelinfo *dpi)
|
||||
}
|
||||
|
||||
item = gDropdownItemsFormat[i];
|
||||
if (item == (uint16)-1 || item == (uint16)-2) {
|
||||
if (item == DROPDOWN_FORMAT_LAND_PICKER || item == DROPDOWN_FORMAT_COLOUR_PICKER) {
|
||||
// Image item
|
||||
image = (uint32)gDropdownItemsArgs[i];
|
||||
if (item == (uint16)-2 && highlightedIndex == i)
|
||||
if (item == DROPDOWN_FORMAT_COLOUR_PICKER && highlightedIndex == i)
|
||||
image++;
|
||||
|
||||
gfx_draw_sprite(
|
||||
@@ -391,41 +391,20 @@ sint32 dropdown_index_from_point(sint32 x, sint32 y, rct_window *w)
|
||||
return dropdown_index;
|
||||
}
|
||||
|
||||
/**
|
||||
* rct2: 0x006ED43D
|
||||
*/
|
||||
void window_dropdown_show_colour(rct_window *w, rct_widget *widget, uint8 dropdownColour, uint8 selectedColour)
|
||||
{
|
||||
window_dropdown_show_colour_available(w, widget, dropdownColour, selectedColour, 0xFFFFFFFF);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x006ED43D
|
||||
* al: dropdown colour
|
||||
* ah: selected colour
|
||||
* esi: window
|
||||
* edi: widget
|
||||
* ebp: unknown
|
||||
*/
|
||||
void window_dropdown_show_colour_available(rct_window *w, rct_widget *widget, uint8 dropdownColour, uint8 selectedColour,
|
||||
uint32 availableColours)
|
||||
{
|
||||
sint32 i, numItems;
|
||||
|
||||
// Count number of available colours
|
||||
numItems = 0;
|
||||
for (i = 0; i < 32; i++)
|
||||
if (availableColours & (1 << i))
|
||||
numItems++;
|
||||
|
||||
sint32 defaultIndex = -1;
|
||||
// Set items
|
||||
for (i = 0; i < 32; i++) {
|
||||
if (availableColours & (1 << i)) {
|
||||
if (selectedColour == i)
|
||||
defaultIndex = i;
|
||||
for (uint64 i = 0; i < COLOUR_COUNT; i++)
|
||||
{
|
||||
if (selectedColour == i)
|
||||
defaultIndex = i;
|
||||
|
||||
gDropdownItemsFormat[i] = 0xFFFE;
|
||||
gDropdownItemsArgs[i] = ((uint64)i << 32) | (0x20000000 | (i << 19) | SPR_PALETTE_BTN);
|
||||
}
|
||||
gDropdownItemsFormat[i] = DROPDOWN_FORMAT_COLOUR_PICKER;
|
||||
gDropdownItemsArgs[i] = (i << 32) | (0x20000000 | (i << 19) | SPR_PALETTE_BTN);
|
||||
}
|
||||
|
||||
// Show dropdown
|
||||
@@ -435,10 +414,10 @@ void window_dropdown_show_colour_available(rct_window *w, rct_widget *widget, ui
|
||||
widget->bottom - widget->top + 1,
|
||||
dropdownColour,
|
||||
DROPDOWN_FLAG_STAY_OPEN,
|
||||
numItems,
|
||||
COLOUR_COUNT,
|
||||
12,
|
||||
12,
|
||||
gAppropriateImageDropdownItemsPerRow[numItems]
|
||||
gAppropriateImageDropdownItemsPerRow[COLOUR_COUNT]
|
||||
);
|
||||
|
||||
gDropdownIsColour = true;
|
||||
|
||||
@@ -20,7 +20,9 @@
|
||||
#include "../common.h"
|
||||
#include "../interface/window.h"
|
||||
|
||||
#define DROPDOWN_SEPARATOR 0
|
||||
#define DROPDOWN_SEPARATOR 0
|
||||
#define DROPDOWN_FORMAT_COLOUR_PICKER 0xFFFE
|
||||
#define DROPDOWN_FORMAT_LAND_PICKER 0xFFFF
|
||||
|
||||
enum
|
||||
{
|
||||
|
||||
@@ -213,7 +213,7 @@ static void window_land_mousedown(rct_widgetindex widgetIndex, rct_window*w, rct
|
||||
switch (widgetIndex) {
|
||||
case WIDX_FLOOR:
|
||||
for (i = 0; i < TERRAIN_COUNT_REGULAR; i++) {
|
||||
gDropdownItemsFormat[i] = -1;
|
||||
gDropdownItemsFormat[i] = DROPDOWN_FORMAT_LAND_PICKER;
|
||||
gDropdownItemsArgs[i] = SPR_FLOOR_TEXTURE_GRASS + FloorTextureOrder[i];
|
||||
if (FloorTextureOrder[i] == _selectedFloorTexture)
|
||||
defaultIndex = i;
|
||||
@@ -231,7 +231,7 @@ static void window_land_mousedown(rct_widgetindex widgetIndex, rct_window*w, rct
|
||||
break;
|
||||
case WIDX_WALL:
|
||||
for (i = 0; i < TERRAIN_EDGE_COUNT; i++) {
|
||||
gDropdownItemsFormat[i] = -1;
|
||||
gDropdownItemsFormat[i] = DROPDOWN_FORMAT_LAND_PICKER;
|
||||
gDropdownItemsArgs[i] = SPR_WALL_TEXTURE_ROCK + WallTextureOrder[i];
|
||||
if (WallTextureOrder[i] == _selectedWallTexture)
|
||||
defaultIndex = i;
|
||||
|
||||
@@ -696,7 +696,7 @@ static void window_mapgen_base_mousedown(rct_widgetindex widgetIndex, rct_window
|
||||
break;
|
||||
case WIDX_FLOOR_TEXTURE:
|
||||
for (i = 0; i < TERRAIN_COUNT_REGULAR; i++) {
|
||||
gDropdownItemsFormat[i] = -1;
|
||||
gDropdownItemsFormat[i] = DROPDOWN_FORMAT_LAND_PICKER;
|
||||
gDropdownItemsArgs[i] = SPR_FLOOR_TEXTURE_GRASS + FloorTextureOrder[i];
|
||||
if (FloorTextureOrder[i] == _floorTexture)
|
||||
defaultIndex = i;
|
||||
@@ -714,7 +714,7 @@ static void window_mapgen_base_mousedown(rct_widgetindex widgetIndex, rct_window
|
||||
break;
|
||||
case WIDX_WALL_TEXTURE:
|
||||
for (i = 0; i < TERRAIN_EDGE_COUNT; i++) {
|
||||
gDropdownItemsFormat[i] = -1;
|
||||
gDropdownItemsFormat[i] = DROPDOWN_FORMAT_LAND_PICKER;
|
||||
gDropdownItemsArgs[i] = SPR_WALL_TEXTURE_ROCK + WallTextureOrder[i];
|
||||
if (WallTextureOrder[i] == _wallTexture)
|
||||
defaultIndex = i;
|
||||
@@ -1015,7 +1015,7 @@ static void window_mapgen_simplex_mousedown(rct_widgetindex widgetIndex, rct_win
|
||||
break;
|
||||
case WIDX_SIMPLEX_FLOOR_TEXTURE:
|
||||
for (i = 0; i < TERRAIN_COUNT_REGULAR; i++) {
|
||||
gDropdownItemsFormat[i] = -1;
|
||||
gDropdownItemsFormat[i] = DROPDOWN_FORMAT_LAND_PICKER;
|
||||
gDropdownItemsArgs[i] = SPR_FLOOR_TEXTURE_GRASS + FloorTextureOrder[i];
|
||||
if (FloorTextureOrder[i] == _floorTexture)
|
||||
defaultIndex = i;
|
||||
@@ -1033,7 +1033,7 @@ static void window_mapgen_simplex_mousedown(rct_widgetindex widgetIndex, rct_win
|
||||
break;
|
||||
case WIDX_SIMPLEX_WALL_TEXTURE:
|
||||
for (i = 0; i < TERRAIN_EDGE_COUNT; i++) {
|
||||
gDropdownItemsFormat[i] = -1;
|
||||
gDropdownItemsFormat[i] = DROPDOWN_FORMAT_LAND_PICKER;
|
||||
gDropdownItemsArgs[i] = SPR_WALL_TEXTURE_ROCK + WallTextureOrder[i];
|
||||
if (WallTextureOrder[i] == _wallTexture)
|
||||
defaultIndex = i;
|
||||
|
||||
Reference in New Issue
Block a user