Esempio n. 1
0
/**
 *
 *  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;
	}
}
Esempio n. 2
0
/**
 *
 *  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;
}
Esempio n. 3
0
/**
 *  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;
}
Esempio n. 4
0
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;
	}
}
Esempio n. 5
0
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;
	}
}