1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-04 13:42:55 +01:00

Clean up dropdowns

This commit is contained in:
Gymnasiast
2017-06-20 10:40:38 +02:00
committed by Michael Steenbeek
parent 0db5bc6bd2
commit f2f8cec944
5 changed files with 24 additions and 43 deletions

View File

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

View File

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

View File

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

View File

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

View File

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