|
|
|
@ -84,7 +84,8 @@ static constexpr const rct_string_id ParkEntrancePartStringIds[] = {
|
|
|
|
|
static constexpr const rct_string_id WallSlopeStringIds[] = {
|
|
|
|
|
STR_TILE_INSPECTOR_WALL_FLAT,
|
|
|
|
|
STR_TILE_INSPECTOR_WALL_SLOPED_LEFT,
|
|
|
|
|
STR_TILE_INSPECTOR_WALL_SLOPED_RIGHT
|
|
|
|
|
STR_TILE_INSPECTOR_WALL_SLOPED_RIGHT,
|
|
|
|
|
STR_TILE_INSPECTOR_WALL_ANIMATION_FRAME
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum WINDOW_TILE_INSPECTOR_WIDGET_IDX {
|
|
|
|
@ -177,6 +178,9 @@ enum WINDOW_TILE_INSPECTOR_WIDGET_IDX {
|
|
|
|
|
WIDX_WALL_SPINNER_HEIGHT_DECREASE,
|
|
|
|
|
WIDX_WALL_DROPDOWN_SLOPE,
|
|
|
|
|
WIDX_WALL_DROPDOWN_SLOPE_BUTTON,
|
|
|
|
|
WIDX_WALL_SPINNER_ANIMATION_FRAME,
|
|
|
|
|
WIDX_WALL_SPINNER_ANIMATION_FRAME_INCREASE,
|
|
|
|
|
WIDX_WALL_SPINNER_ANIMATION_FRAME_DECREASE,
|
|
|
|
|
|
|
|
|
|
// Large
|
|
|
|
|
WIDX_LARGE_SCENERY_SPINNER_HEIGHT = PAGE_WIDGETS,
|
|
|
|
@ -357,7 +361,7 @@ static rct_widget EntranceWidgets[] = {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
constexpr int32_t WALL_GBPB = PADDING_BOTTOM; // Wall group box properties bottom
|
|
|
|
|
constexpr int32_t WALL_GBPT = WALL_GBPB + 16 + 2 * 21; // Wall group box properties top
|
|
|
|
|
constexpr int32_t WALL_GBPT = WALL_GBPB + 16 + 3 * 21; // Wall group box properties top
|
|
|
|
|
constexpr int32_t WALL_GBDB = WALL_GBPT + GROUPBOX_PADDING; // Wall group box info bottom
|
|
|
|
|
constexpr int32_t WALL_GBDT = WALL_GBDB + 20 + 2 * 11; // Wall group box info top
|
|
|
|
|
static rct_widget WallWidgets[] = {
|
|
|
|
@ -365,6 +369,7 @@ static rct_widget WallWidgets[] = {
|
|
|
|
|
SPINNER_WIDGETS (1, GBBL(1), GBBR(1), GBBT(WH - WALL_GBPT, 0) + 3, GBBB(WH - WALL_GBPT, 0) - 3, STR_NONE, STR_NONE), // WIDX_WALL_SPINNER_HEIGHT{,_INCREASE,_DECREASE}
|
|
|
|
|
{ WWT_DROPDOWN, 1, GBD(WH - WALL_GBPT, 1, 1), STR_NONE, STR_NONE }, // WIDX_WALL_DROPDOWN_SLOPE
|
|
|
|
|
{ WWT_BUTTON, 1, GBDB(WH - WALL_GBPT, 1, 1), STR_DROPDOWN_GLYPH, STR_NONE }, // WIDX_WALL_DROPDOWN_SLOPE_BUTTON
|
|
|
|
|
SPINNER_WIDGETS (1, GBBL(1), GBBR(1), GBBT(WH - WALL_GBPT, 2) + 3, GBBB(WH - WALL_GBPT, 2) - 3, STR_NONE, STR_NONE), // WIDX_WALL_SPINNER_ANIMATION_FRAME{,_INCREASE,_DECREASE}
|
|
|
|
|
{ WIDGETS_END },
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
@ -507,7 +512,7 @@ static uint64_t PageEnabledWidgets[] = {
|
|
|
|
|
(1ULL << WIDX_CLOSE) | (1ULL << WIDX_BUTTON_CORRUPT) | (1ULL << WIDX_BUTTON_REMOVE) | (1ULL << WIDX_BUTTON_ROTATE) | (1ULL << WIDX_BUTTON_COPY) | (1ULL << WIDX_TRACK_CHECK_APPLY_TO_ALL) | (1ULL << WIDX_TRACK_SPINNER_HEIGHT_INCREASE) | (1ULL << WIDX_TRACK_SPINNER_HEIGHT_DECREASE) | (1ULL << WIDX_TRACK_CHECK_CHAIN_LIFT) | (1ULL << WIDX_TRACK_CHECK_BLOCK_BRAKE_CLOSED) | (1ULL << WIDX_TRACK_CHECK_IS_INDESTRUCTIBLE),
|
|
|
|
|
(1ULL << WIDX_CLOSE) | (1ULL << WIDX_BUTTON_CORRUPT) | (1ULL << WIDX_BUTTON_REMOVE) | (1ULL << WIDX_BUTTON_ROTATE) | (1ULL << WIDX_BUTTON_COPY) | (1ULL << WIDX_SCENERY_SPINNER_HEIGHT_INCREASE) | (1ULL << WIDX_SCENERY_SPINNER_HEIGHT_DECREASE) | (1ULL << WIDX_SCENERY_CHECK_QUARTER_N) | (1ULL << WIDX_SCENERY_CHECK_QUARTER_E) | (1ULL << WIDX_SCENERY_CHECK_QUARTER_S) | (1ULL << WIDX_SCENERY_CHECK_QUARTER_W) | (1ULL << WIDX_SCENERY_CHECK_COLLISION_N) | (1ULL << WIDX_SCENERY_CHECK_COLLISION_E) | (1ULL << WIDX_SCENERY_CHECK_COLLISION_S) | (1ULL << WIDX_SCENERY_CHECK_COLLISION_W),
|
|
|
|
|
(1ULL << WIDX_CLOSE) | (1ULL << WIDX_BUTTON_CORRUPT) | (1ULL << WIDX_BUTTON_REMOVE) | (1ULL << WIDX_BUTTON_ROTATE) | (1ULL << WIDX_BUTTON_COPY) | (1ULL << WIDX_ENTRANCE_SPINNER_HEIGHT_INCREASE) | (1ULL << WIDX_ENTRANCE_SPINNER_HEIGHT_DECREASE) | (1ULL << WIDX_ENTRANCE_BUTTON_MAKE_USABLE),
|
|
|
|
|
(1ULL << WIDX_CLOSE) | (1ULL << WIDX_BUTTON_CORRUPT) | (1ULL << WIDX_BUTTON_REMOVE) | (1ULL << WIDX_BUTTON_ROTATE) | (1ULL << WIDX_BUTTON_COPY) | (1ULL << WIDX_WALL_SPINNER_HEIGHT_INCREASE) | (1ULL << WIDX_WALL_SPINNER_HEIGHT_DECREASE) | (1ULL << WIDX_WALL_DROPDOWN_SLOPE) | (1ULL << WIDX_WALL_DROPDOWN_SLOPE_BUTTON),
|
|
|
|
|
(1ULL << WIDX_CLOSE) | (1ULL << WIDX_BUTTON_CORRUPT) | (1ULL << WIDX_BUTTON_REMOVE) | (1ULL << WIDX_BUTTON_ROTATE) | (1ULL << WIDX_BUTTON_COPY) | (1ULL << WIDX_WALL_SPINNER_HEIGHT_INCREASE) | (1ULL << WIDX_WALL_SPINNER_HEIGHT_DECREASE) | (1ULL << WIDX_WALL_DROPDOWN_SLOPE) | (1ULL << WIDX_WALL_DROPDOWN_SLOPE_BUTTON) | (1ULL << WIDX_WALL_SPINNER_ANIMATION_FRAME_INCREASE) | (1ULL << WIDX_WALL_SPINNER_ANIMATION_FRAME_DECREASE),
|
|
|
|
|
(1ULL << WIDX_CLOSE) | (1ULL << WIDX_BUTTON_CORRUPT) | (1ULL << WIDX_BUTTON_REMOVE) | (1ULL << WIDX_BUTTON_COPY) | (1ULL << WIDX_LARGE_SCENERY_SPINNER_HEIGHT_INCREASE) | (1ULL << WIDX_LARGE_SCENERY_SPINNER_HEIGHT_DECREASE),
|
|
|
|
|
(1ULL << WIDX_CLOSE) | (1ULL << WIDX_BUTTON_CORRUPT) | (1ULL << WIDX_BUTTON_REMOVE) | (1ULL << WIDX_BUTTON_ROTATE) | (1ULL << WIDX_BUTTON_COPY) | (1ULL << WIDX_BANNER_SPINNER_HEIGHT_INCREASE) | (1ULL << WIDX_BANNER_SPINNER_HEIGHT_DECREASE) | (1ULL << WIDX_BANNER_CHECK_BLOCK_NE) | (1ULL << WIDX_BANNER_CHECK_BLOCK_SE) | (1ULL << WIDX_BANNER_CHECK_BLOCK_SW) | (1ULL << WIDX_BANNER_CHECK_BLOCK_NW),
|
|
|
|
|
(1ULL << WIDX_CLOSE) | (1ULL << WIDX_BUTTON_CORRUPT) | (1ULL << WIDX_BUTTON_REMOVE) | (1ULL << WIDX_BUTTON_COPY) | (1ULL << WIDX_CORRUPT_SPINNER_HEIGHT_INCREASE) | (1ULL << WIDX_CORRUPT_SPINNER_HEIGHT_DECREASE) | (1ULL << WIDX_CORRUPT_BUTTON_CLAMP),
|
|
|
|
@ -520,7 +525,7 @@ static uint64_t PageHoldDownWidgets[] = {
|
|
|
|
|
(1ULL << WIDX_SPINNER_X_INCREASE) | (1ULL << WIDX_SPINNER_X_DECREASE) | (1ULL << WIDX_SPINNER_Y_INCREASE) | (1ULL << WIDX_SPINNER_Y_DECREASE) | (1ULL << WIDX_TRACK_SPINNER_HEIGHT_INCREASE) | (1ULL << WIDX_TRACK_SPINNER_HEIGHT_DECREASE),
|
|
|
|
|
(1ULL << WIDX_SPINNER_X_INCREASE) | (1ULL << WIDX_SPINNER_X_DECREASE) | (1ULL << WIDX_SPINNER_Y_INCREASE) | (1ULL << WIDX_SPINNER_Y_DECREASE) | (1ULL << WIDX_SCENERY_SPINNER_HEIGHT_INCREASE) | (1ULL << WIDX_SCENERY_SPINNER_HEIGHT_DECREASE),
|
|
|
|
|
(1ULL << WIDX_SPINNER_X_INCREASE) | (1ULL << WIDX_SPINNER_X_DECREASE) | (1ULL << WIDX_SPINNER_Y_INCREASE) | (1ULL << WIDX_SPINNER_Y_DECREASE) | (1ULL << WIDX_ENTRANCE_SPINNER_HEIGHT_INCREASE) | (1ULL << WIDX_ENTRANCE_SPINNER_HEIGHT_DECREASE),
|
|
|
|
|
(1ULL << WIDX_SPINNER_X_INCREASE) | (1ULL << WIDX_SPINNER_X_DECREASE) | (1ULL << WIDX_SPINNER_Y_INCREASE) | (1ULL << WIDX_SPINNER_Y_DECREASE) | (1ULL << WIDX_WALL_SPINNER_HEIGHT_INCREASE) | (1ULL << WIDX_WALL_SPINNER_HEIGHT_DECREASE),
|
|
|
|
|
(1ULL << WIDX_SPINNER_X_INCREASE) | (1ULL << WIDX_SPINNER_X_DECREASE) | (1ULL << WIDX_SPINNER_Y_INCREASE) | (1ULL << WIDX_SPINNER_Y_DECREASE) | (1ULL << WIDX_WALL_SPINNER_HEIGHT_INCREASE) | (1ULL << WIDX_WALL_SPINNER_HEIGHT_DECREASE) | (1ULL << WIDX_WALL_SPINNER_ANIMATION_FRAME_INCREASE) | (1ULL << WIDX_WALL_SPINNER_ANIMATION_FRAME_DECREASE),
|
|
|
|
|
(1ULL << WIDX_SPINNER_X_INCREASE) | (1ULL << WIDX_SPINNER_X_DECREASE) | (1ULL << WIDX_SPINNER_Y_INCREASE) | (1ULL << WIDX_SPINNER_Y_DECREASE) | (1ULL << WIDX_LARGE_SCENERY_SPINNER_HEIGHT_INCREASE) | (1ULL << WIDX_LARGE_SCENERY_SPINNER_HEIGHT_DECREASE),
|
|
|
|
|
(1ULL << WIDX_SPINNER_X_INCREASE) | (1ULL << WIDX_SPINNER_X_DECREASE) | (1ULL << WIDX_SPINNER_Y_INCREASE) | (1ULL << WIDX_SPINNER_Y_DECREASE) | (1ULL << WIDX_BANNER_SPINNER_HEIGHT_INCREASE) | (1ULL << WIDX_BANNER_SPINNER_HEIGHT_DECREASE),
|
|
|
|
|
(1ULL << WIDX_SPINNER_X_INCREASE) | (1ULL << WIDX_SPINNER_X_DECREASE) | (1ULL << WIDX_SPINNER_Y_INCREASE) | (1ULL << WIDX_SPINNER_Y_DECREASE) | (1ULL << WIDX_CORRUPT_SPINNER_HEIGHT_INCREASE) | (1ULL << WIDX_CORRUPT_SPINNER_HEIGHT_DECREASE),
|
|
|
|
@ -728,6 +733,13 @@ static void window_tile_inspector_wall_set_slope(int32_t elementIndex, int32_t s
|
|
|
|
|
GameActions::Execute(&modifyTile);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void window_tile_inspector_wall_animation_frame_offset(int16_t elementIndex, int8_t animationFrameOffset)
|
|
|
|
|
{
|
|
|
|
|
auto modifyTile = TileModifyAction(
|
|
|
|
|
windowTileInspectorToolMap, TileModifyType::WallSetAnimationFrame, elementIndex, animationFrameOffset);
|
|
|
|
|
GameActions::Execute(&modifyTile);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void window_tile_inspector_track_block_height_offset(int32_t elementIndex, int8_t heightOffset)
|
|
|
|
|
{
|
|
|
|
|
auto modifyTile = TileModifyAction(
|
|
|
|
@ -1117,6 +1129,7 @@ static void window_tile_inspector_mousedown(rct_window* w, rct_widgetindex widge
|
|
|
|
|
window_tile_inspector_base_height_offset(windowTileInspectorSelectedIndex, -1);
|
|
|
|
|
break;
|
|
|
|
|
case WIDX_WALL_DROPDOWN_SLOPE_BUTTON:
|
|
|
|
|
{
|
|
|
|
|
// Use dropdown instead of dropdown button
|
|
|
|
|
widget--;
|
|
|
|
|
|
|
|
|
@ -1135,6 +1148,13 @@ static void window_tile_inspector_mousedown(rct_window* w, rct_widgetindex widge
|
|
|
|
|
TileElement* const tileElement = window_tile_inspector_get_selected_element(w);
|
|
|
|
|
dropdown_set_checked(tileElement->AsWall()->GetSlope(), true);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case WIDX_WALL_SPINNER_ANIMATION_FRAME_INCREASE:
|
|
|
|
|
window_tile_inspector_wall_animation_frame_offset(windowTileInspectorSelectedIndex, 1);
|
|
|
|
|
break;
|
|
|
|
|
case WIDX_WALL_SPINNER_ANIMATION_FRAME_DECREASE:
|
|
|
|
|
window_tile_inspector_wall_animation_frame_offset(windowTileInspectorSelectedIndex, -1);
|
|
|
|
|
break;
|
|
|
|
|
} // switch widget index
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
@ -1652,14 +1672,25 @@ static void window_tile_inspector_invalidate(rct_window* w)
|
|
|
|
|
w->widgets[WIDX_WALL_DROPDOWN_SLOPE].text = WallSlopeStringIds[tileElement->AsWall()->GetSlope()];
|
|
|
|
|
w->widgets[WIDX_WALL_DROPDOWN_SLOPE_BUTTON].top = GBBT(propertiesAnchor, 1) + 4;
|
|
|
|
|
w->widgets[WIDX_WALL_DROPDOWN_SLOPE_BUTTON].bottom = GBBB(propertiesAnchor, 1) - 4;
|
|
|
|
|
w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME].top = GBBT(propertiesAnchor, 2) + 3;
|
|
|
|
|
w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME].bottom = GBBB(propertiesAnchor, 2) - 3;
|
|
|
|
|
w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME_INCREASE].top = GBBT(propertiesAnchor, 2) + 4;
|
|
|
|
|
w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME_INCREASE].bottom = GBBB(propertiesAnchor, 2) - 4;
|
|
|
|
|
w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME_DECREASE].top = GBBT(propertiesAnchor, 2) + 4;
|
|
|
|
|
w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME_DECREASE].bottom = GBBB(propertiesAnchor, 2) - 4;
|
|
|
|
|
const auto wallType = tileElement->AsWall()->GetEntryIndex();
|
|
|
|
|
const rct_wall_scenery_entry wallEntry = get_wall_entry(wallType)->wall;
|
|
|
|
|
const bool canBeSloped = !(wallEntry.flags & WALL_SCENERY_CANT_BUILD_ON_SLOPE);
|
|
|
|
|
const bool hasAnimation = wallEntry.flags & WALL_SCENERY_IS_DOOR;
|
|
|
|
|
// Wall slope dropdown
|
|
|
|
|
widget_set_enabled(w, WIDX_WALL_DROPDOWN_SLOPE, canBeSloped);
|
|
|
|
|
widget_invalidate(w, WIDX_WALL_DROPDOWN_SLOPE);
|
|
|
|
|
widget_set_enabled(w, WIDX_WALL_DROPDOWN_SLOPE_BUTTON, canBeSloped);
|
|
|
|
|
widget_invalidate(w, WIDX_WALL_DROPDOWN_SLOPE_BUTTON);
|
|
|
|
|
// Wall animation frame spinner
|
|
|
|
|
widget_set_enabled(w, WIDX_WALL_SPINNER_ANIMATION_FRAME, hasAnimation);
|
|
|
|
|
widget_set_enabled(w, WIDX_WALL_SPINNER_ANIMATION_FRAME_INCREASE, hasAnimation);
|
|
|
|
|
widget_set_enabled(w, WIDX_WALL_SPINNER_ANIMATION_FRAME_DECREASE, hasAnimation);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case TILE_INSPECTOR_PAGE_LARGE_SCENERY:
|
|
|
|
@ -2063,6 +2094,20 @@ static void window_tile_inspector_paint(rct_window* w, rct_drawpixelinfo* dpi)
|
|
|
|
|
x = w->windowPos.x + w->widgets[WIDX_GROUPBOX_DETAILS].left + 7;
|
|
|
|
|
y = w->windowPos.y + w->widgets[WIDX_WALL_DROPDOWN_SLOPE].top;
|
|
|
|
|
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_WALL_SLOPE, nullptr, COLOUR_WHITE, x, y);
|
|
|
|
|
|
|
|
|
|
// Animation frame label
|
|
|
|
|
y = w->windowPos.y + w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME].top;
|
|
|
|
|
gfx_draw_string_left(dpi, STR_TILE_INSPECTOR_WALL_ANIMATION_FRAME, nullptr, COLOUR_WHITE, x, y);
|
|
|
|
|
|
|
|
|
|
// Current animation frame
|
|
|
|
|
uint8_t colour = COLOUR_WHITE;
|
|
|
|
|
if (widget_is_disabled(w, WIDX_WALL_SPINNER_ANIMATION_FRAME))
|
|
|
|
|
{
|
|
|
|
|
colour = w->colours[0] | COLOUR_FLAG_INSET;
|
|
|
|
|
}
|
|
|
|
|
x = w->windowPos.x + w->widgets[WIDX_WALL_SPINNER_ANIMATION_FRAME].left + 3;
|
|
|
|
|
int32_t animationFrame = tileElement->AsWall()->GetAnimationFrame();
|
|
|
|
|
gfx_draw_string_left(dpi, STR_FORMAT_INTEGER, &animationFrame, colour, x, y);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|