/** * * rct2: 0x0066407B */ static void window_land_mousedown() { int i; short widgetIndex; rct_window *w; rct_widget *widget; __asm mov widgetIndex, dx __asm mov w, esi __asm mov widget, edi switch (widgetIndex) { case WIDX_FLOOR: for (i = 0; i < 14; i++) { gDropdownItemsFormat[i] = -1; gDropdownItemsArgs[i] = SPR_FLOOR_TEXTURE_GRASS + window_land_floor_texture_order[i]; if (window_land_floor_texture_order[i] == _selectedFloorTexture) RCT2_GLOBAL(0x009DEBA2, sint16) = i; } window_dropdown_show_image( w->x + widget->left, w->y + widget->top, widget->bottom - widget->top, w->colours[2], 0, 14, 47, 36, gAppropriateImageDropdownItemsPerRow[14] ); break; case WIDX_WALL: for (i = 0; i < 4; i++) { gDropdownItemsFormat[i] = -1; gDropdownItemsArgs[i] = SPR_WALL_TEXTURE_ROCK + window_land_wall_texture_order[i]; if (window_land_wall_texture_order[i] == _selectedWallTexture) RCT2_GLOBAL(0x009DEBA2, sint16) = i; } window_dropdown_show_image( w->x + widget->left, w->y + widget->top, widget->bottom - widget->top, w->colours[2], 0, 4, 47, 36, gAppropriateImageDropdownItemsPerRow[4] ); break; } }
/** * * 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) { int i, numItems; // Count number of available colours numItems = 0; for (i = 0; i < 32; i++) if (availableColours & (1 << i)) numItems++; int defaultIndex = -1; // Set items for (i = 0; i < 32; i++) { if (availableColours & (1 << i)) { if (selectedColour == i) defaultIndex = i; gDropdownItemsFormat[i] = 0xFFFE; gDropdownItemsArgs[i] = ((uint64)i << 32) | (0x20000000 | (i << 19) | 5059); } } // Show dropdown window_dropdown_show_image( w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, dropdownColour, DROPDOWN_FLAG_STAY_OPEN, numItems, 12, 12, gAppropriateImageDropdownItemsPerRow[numItems] ); gDropdownIsColour = true; gDropdownLastColourHover = -1; gDropdownDefaultIndex = defaultIndex; }
/** * rct2: 0x006ED43D */ void window_dropdown_show_colour(rct_window* w, rct_widget* widget, uint8_t dropdownColour, uint8_t selectedColour) { int32_t defaultIndex = -1; // Set items for (uint64_t i = 0; i < COLOUR_COUNT; i++) { if (selectedColour == i) defaultIndex = i; gDropdownItemsFormat[i] = DROPDOWN_FORMAT_COLOUR_PICKER; gDropdownItemsArgs[i] = (i << 32) | (SPRITE_ID_PALETTE_COLOUR_1(i) | SPR_PALETTE_BTN); } // Show dropdown window_dropdown_show_image( w->x + widget->left, w->y + widget->top, widget->bottom - widget->top + 1, dropdownColour, DROPDOWN_FLAG_STAY_OPEN, COLOUR_COUNT, 12, 12, gAppropriateImageDropdownItemsPerRow[COLOUR_COUNT]); gDropdownIsColour = true; gDropdownLastColourHover = -1; gDropdownDefaultIndex = defaultIndex; }
static void window_mapgen_simplex_mousedown(int widgetIndex, rct_window *w, rct_widget* widget) { int i; switch (widgetIndex) { case WIDX_SIMPLEX_LOW_UP: _simplex_low = min(_simplex_low + 1, 24); window_invalidate(w); break; case WIDX_SIMPLEX_LOW_DOWN: _simplex_low = max(_simplex_low - 1, 0); window_invalidate(w); break; case WIDX_SIMPLEX_HIGH_UP: _simplex_high = min(_simplex_high + 1, 36); window_invalidate(w); break; case WIDX_SIMPLEX_HIGH_DOWN: _simplex_high = max(_simplex_high - 1, 0); window_invalidate(w); break; case WIDX_SIMPLEX_BASE_FREQ_UP: _simplex_base_freq = min(_simplex_base_freq + 5, 1000); window_invalidate(w); break; case WIDX_SIMPLEX_BASE_FREQ_DOWN: _simplex_base_freq = max(_simplex_base_freq - 5, 0); window_invalidate(w); break; case WIDX_SIMPLEX_OCTAVES_UP: _simplex_octaves = min(_simplex_octaves + 1, 10); window_invalidate(w); break; case WIDX_SIMPLEX_OCTAVES_DOWN: _simplex_octaves = max(_simplex_octaves - 1, 1); window_invalidate(w); break; case WIDX_SIMPLEX_MAP_SIZE_UP: _mapSize = min(_mapSize + 1, MAXIMUM_MAP_SIZE_TECHNICAL); window_invalidate(w); break; case WIDX_SIMPLEX_MAP_SIZE_DOWN: _mapSize = max(_mapSize - 1, MINIMUM_MAP_SIZE_TECHNICAL); window_invalidate(w); break; case WIDX_SIMPLEX_WATER_LEVEL_UP: _waterLevel = min(_waterLevel + 2, 54); window_invalidate(w); break; case WIDX_SIMPLEX_WATER_LEVEL_DOWN: _waterLevel = max(_waterLevel - 2, 0); window_invalidate(w); break; case WIDX_SIMPLEX_FLOOR_TEXTURE: for (i = 0; i < 14; i++) { gDropdownItemsFormat[i] = -1; gDropdownItemsArgs[i] = SPR_FLOOR_TEXTURE_GRASS + window_land_floor_texture_order[i]; if (window_land_floor_texture_order[i] == _floorTexture) gDropdownHighlightedIndex = i; } window_dropdown_show_image( w->x + widget->left, w->y + widget->top, widget->bottom - widget->top, w->colours[2], 0, 14, 47, 36, gAppropriateImageDropdownItemsPerRow[14] ); break; case WIDX_SIMPLEX_WALL_TEXTURE: for (i = 0; i < 4; i++) { gDropdownItemsFormat[i] = -1; gDropdownItemsArgs[i] = SPR_WALL_TEXTURE_ROCK + window_land_wall_texture_order[i]; if (window_land_wall_texture_order[i] == _wallTexture) gDropdownHighlightedIndex = i; } window_dropdown_show_image( w->x + widget->left, w->y + widget->top, widget->bottom - widget->top, w->colours[2], 0, 4, 47, 36, gAppropriateImageDropdownItemsPerRow[4] ); break; } }
static void window_mapgen_base_mousedown(int widgetIndex, rct_window *w, rct_widget* widget) { int i; switch (widgetIndex) { case WIDX_MAP_SIZE_UP: _mapSize = min(_mapSize + 1, MAXIMUM_MAP_SIZE_TECHNICAL); window_invalidate(w); break; case WIDX_MAP_SIZE_DOWN: _mapSize = max(_mapSize - 1, MINIMUM_MAP_SIZE_TECHNICAL); window_invalidate(w); break; case WIDX_BASE_HEIGHT_UP: _baseHeight = min(_baseHeight + 2, BASESIZE_MAX); window_invalidate(w); break; case WIDX_BASE_HEIGHT_DOWN: _baseHeight = max(_baseHeight - 2, BASESIZE_MIN); window_invalidate(w); break; case WIDX_WATER_LEVEL_UP: _waterLevel = min(_waterLevel + 2, WATERLEVEL_MAX); window_invalidate(w); break; case WIDX_WATER_LEVEL_DOWN: _waterLevel = max(_waterLevel - 2, WATERLEVEL_MIN); window_invalidate(w); break; case WIDX_FLOOR_TEXTURE: for (i = 0; i < 14; i++) { gDropdownItemsFormat[i] = -1; gDropdownItemsArgs[i] = SPR_FLOOR_TEXTURE_GRASS + window_land_floor_texture_order[i]; if (window_land_floor_texture_order[i] == _floorTexture) gDropdownHighlightedIndex = i; } window_dropdown_show_image( w->x + widget->left, w->y + widget->top, widget->bottom - widget->top, w->colours[2], 0, 14, 47, 36, gAppropriateImageDropdownItemsPerRow[14] ); break; case WIDX_WALL_TEXTURE: for (i = 0; i < 4; i++) { gDropdownItemsFormat[i] = -1; gDropdownItemsArgs[i] = SPR_WALL_TEXTURE_ROCK + window_land_wall_texture_order[i]; if (window_land_wall_texture_order[i] == _wallTexture) gDropdownHighlightedIndex = i; } window_dropdown_show_image( w->x + widget->left, w->y + widget->top, widget->bottom - widget->top, w->colours[2], 0, 4, 47, 36, gAppropriateImageDropdownItemsPerRow[4] ); break; } }