mirror of https://github.com/OpenRCT2/OpenRCT2.git
Merge pull request #21855 from Gymnasiast/fix/small-usability
Small usability fixes
This commit is contained in:
commit
af46ff5f0a
|
@ -3,8 +3,11 @@
|
||||||
- Feature: [#11512] Coloured usernames by group on multiplayer servers.
|
- Feature: [#11512] Coloured usernames by group on multiplayer servers.
|
||||||
- Feature: [#21734] Park admittance price can now be set via text input.
|
- Feature: [#21734] Park admittance price can now be set via text input.
|
||||||
- Improved: [#21769] Expose “animation is backwards” wall property in Tile Inspector.
|
- Improved: [#21769] Expose “animation is backwards” wall property in Tile Inspector.
|
||||||
|
- Improved: [#21855] Add a separator between “Load Game” and “Save Game”, to avoid accidental overwriting.
|
||||||
- Change: [#21715] [Plugin] Remove access to the internal `owner` property. Note: `ownership` is still accessible.
|
- Change: [#21715] [Plugin] Remove access to the internal `owner` property. Note: `ownership` is still accessible.
|
||||||
|
- Change: [#21855] Cheats menu dropdown no longer requires dragging.
|
||||||
- Fix: [#866] Boat Hire boats get stuck entering track.
|
- Fix: [#866] Boat Hire boats get stuck entering track.
|
||||||
|
- Fix: [#19559] Custom rides with long descriptions extend into lower widgets.
|
||||||
- Fix: [#21696] Fullscreen window option not correctly applied on macOS.
|
- Fix: [#21696] Fullscreen window option not correctly applied on macOS.
|
||||||
- Fix: [#21787] Map generator heightmap should respect increased height limits.
|
- Fix: [#21787] Map generator heightmap should respect increased height limits.
|
||||||
- Fix: [#21829] When creating a new scenario, the default name contains formatting codes.
|
- Fix: [#21829] When creating a new scenario, the default name contains formatting codes.
|
||||||
|
|
|
@ -2559,7 +2559,8 @@ static_assert(std::size(RatingNames) == 6);
|
||||||
|
|
||||||
void VehicleResize()
|
void VehicleResize()
|
||||||
{
|
{
|
||||||
WindowSetResize(*this, 316, 221, 316, 221);
|
auto bottom = widgets[WIDX_VEHICLE_TRAINS].bottom + 6;
|
||||||
|
WindowSetResize(*this, 316, bottom, 316, bottom);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VehicleOnMouseDown(WidgetIndex widgetIndex)
|
void VehicleOnMouseDown(WidgetIndex widgetIndex)
|
||||||
|
@ -2842,6 +2843,19 @@ static_assert(std::size(RatingNames) == 6);
|
||||||
StringId stringId = rideEntry->nausea_multiplier > 0 ? STR_NAUSEA_FACTOR : STR_NAUSEA_FACTOR_NEGATIVE;
|
StringId stringId = rideEntry->nausea_multiplier > 0 ? STR_NAUSEA_FACTOR : STR_NAUSEA_FACTOR_NEGATIVE;
|
||||||
DrawTextBasic(dpi, screenCoords, stringId, ft);
|
DrawTextBasic(dpi, screenCoords, stringId, ft);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const auto minimumPreviewStart = screenCoords.y - windowPos.y + kListRowHeight + 5;
|
||||||
|
if (minimumPreviewStart > widgets[WIDX_VEHICLE_TRAINS_PREVIEW].top)
|
||||||
|
{
|
||||||
|
auto heightIncrease = minimumPreviewStart - widgets[WIDX_VEHICLE_TRAINS_PREVIEW].top;
|
||||||
|
height += heightIncrease;
|
||||||
|
ResizeFrameWithPage();
|
||||||
|
|
||||||
|
for (auto i = EnumValue(WIDX_VEHICLE_TRAINS_PREVIEW); i <= WIDX_VEHICLE_CARS_PER_TRAIN_DECREASE; i++)
|
||||||
|
{
|
||||||
|
widgets[i].moveDown(heightIncrease);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct VehicleDrawInfo
|
struct VehicleDrawInfo
|
||||||
|
|
|
@ -119,19 +119,20 @@ namespace OpenRCT2::Ui::Windows
|
||||||
{
|
{
|
||||||
DDIDX_NEW_GAME = 0,
|
DDIDX_NEW_GAME = 0,
|
||||||
DDIDX_LOAD_GAME = 1,
|
DDIDX_LOAD_GAME = 1,
|
||||||
DDIDX_SAVE_GAME = 2,
|
|
||||||
DDIDX_SAVE_GAME_AS = 3,
|
|
||||||
// separator
|
// separator
|
||||||
DDIDX_ABOUT = 5,
|
DDIDX_SAVE_GAME = 3,
|
||||||
DDIDX_OPTIONS = 6,
|
DDIDX_SAVE_GAME_AS = 4,
|
||||||
DDIDX_SCREENSHOT = 7,
|
|
||||||
DDIDX_GIANT_SCREENSHOT = 8,
|
|
||||||
// separator
|
// separator
|
||||||
DDIDX_FILE_BUG_ON_GITHUB = 10,
|
DDIDX_ABOUT = 6,
|
||||||
DDIDX_UPDATE_AVAILABLE = 11,
|
DDIDX_OPTIONS = 7,
|
||||||
|
DDIDX_SCREENSHOT = 8,
|
||||||
|
DDIDX_GIANT_SCREENSHOT = 9,
|
||||||
// separator
|
// separator
|
||||||
DDIDX_QUIT_TO_MENU = 13,
|
DDIDX_FILE_BUG_ON_GITHUB = 11,
|
||||||
DDIDX_EXIT_OPENRCT2 = 14,
|
DDIDX_UPDATE_AVAILABLE = 12,
|
||||||
|
// separator
|
||||||
|
DDIDX_QUIT_TO_MENU = 14,
|
||||||
|
DDIDX_EXIT_OPENRCT2 = 15,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum TopToolbarViewMenuDdidx
|
enum TopToolbarViewMenuDdidx
|
||||||
|
@ -309,6 +310,8 @@ static Widget _topToolbarWidgets[] = {
|
||||||
|
|
||||||
void RotateMenuDropdown(int16_t dropdownIndex);
|
void RotateMenuDropdown(int16_t dropdownIndex);
|
||||||
|
|
||||||
|
void InitFileMenu(Widget& widget);
|
||||||
|
|
||||||
void InitCheatsMenu(Widget& widget);
|
void InitCheatsMenu(Widget& widget);
|
||||||
|
|
||||||
void CheatsMenuDropdown(int16_t dropdownIndex);
|
void CheatsMenuDropdown(int16_t dropdownIndex);
|
||||||
|
@ -2560,77 +2563,12 @@ static Widget _topToolbarWidgets[] = {
|
||||||
|
|
||||||
void OnMouseDown(WidgetIndex widgetIndex) override
|
void OnMouseDown(WidgetIndex widgetIndex) override
|
||||||
{
|
{
|
||||||
int32_t numItems = 0;
|
|
||||||
Widget& widget = widgets[widgetIndex];
|
Widget& widget = widgets[widgetIndex];
|
||||||
|
|
||||||
switch (widgetIndex)
|
switch (widgetIndex)
|
||||||
{
|
{
|
||||||
case WIDX_FILE_MENU:
|
case WIDX_FILE_MENU:
|
||||||
if (gScreenFlags & (SCREEN_FLAGS_TRACK_DESIGNER | SCREEN_FLAGS_TRACK_MANAGER))
|
InitFileMenu(widget);
|
||||||
{
|
|
||||||
gDropdownItems[numItems++].Format = STR_ABOUT;
|
|
||||||
gDropdownItems[numItems++].Format = STR_OPTIONS;
|
|
||||||
gDropdownItems[numItems++].Format = STR_SCREENSHOT;
|
|
||||||
gDropdownItems[numItems++].Format = STR_GIANT_SCREENSHOT;
|
|
||||||
gDropdownItems[numItems++].Format = STR_EMPTY;
|
|
||||||
gDropdownItems[numItems++].Format = STR_FILE_BUG_ON_GITHUB;
|
|
||||||
|
|
||||||
if (OpenRCT2::GetContext()->HasNewVersionInfo())
|
|
||||||
gDropdownItems[numItems++].Format = STR_UPDATE_AVAILABLE;
|
|
||||||
|
|
||||||
gDropdownItems[numItems++].Format = STR_EMPTY;
|
|
||||||
|
|
||||||
if (gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER)
|
|
||||||
gDropdownItems[numItems++].Format = STR_QUIT_ROLLERCOASTER_DESIGNER;
|
|
||||||
else
|
|
||||||
gDropdownItems[numItems++].Format = STR_QUIT_TRACK_DESIGNS_MANAGER;
|
|
||||||
|
|
||||||
gDropdownItems[numItems++].Format = STR_EXIT_OPENRCT2;
|
|
||||||
}
|
|
||||||
else if (gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR)
|
|
||||||
{
|
|
||||||
gDropdownItems[numItems++].Format = STR_LOAD_LANDSCAPE;
|
|
||||||
gDropdownItems[numItems++].Format = STR_SAVE_LANDSCAPE;
|
|
||||||
gDropdownItems[numItems++].Format = STR_EMPTY;
|
|
||||||
gDropdownItems[numItems++].Format = STR_ABOUT;
|
|
||||||
gDropdownItems[numItems++].Format = STR_OPTIONS;
|
|
||||||
gDropdownItems[numItems++].Format = STR_SCREENSHOT;
|
|
||||||
gDropdownItems[numItems++].Format = STR_GIANT_SCREENSHOT;
|
|
||||||
gDropdownItems[numItems++].Format = STR_EMPTY;
|
|
||||||
gDropdownItems[numItems++].Format = STR_FILE_BUG_ON_GITHUB;
|
|
||||||
|
|
||||||
if (OpenRCT2::GetContext()->HasNewVersionInfo())
|
|
||||||
gDropdownItems[numItems++].Format = STR_UPDATE_AVAILABLE;
|
|
||||||
|
|
||||||
gDropdownItems[numItems++].Format = STR_EMPTY;
|
|
||||||
gDropdownItems[numItems++].Format = STR_QUIT_SCENARIO_EDITOR;
|
|
||||||
gDropdownItems[numItems++].Format = STR_EXIT_OPENRCT2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
gDropdownItems[numItems++].Format = STR_NEW_GAME;
|
|
||||||
gDropdownItems[numItems++].Format = STR_LOAD_GAME;
|
|
||||||
gDropdownItems[numItems++].Format = STR_SAVE_GAME;
|
|
||||||
gDropdownItems[numItems++].Format = STR_SAVE_GAME_AS;
|
|
||||||
gDropdownItems[numItems++].Format = STR_EMPTY;
|
|
||||||
gDropdownItems[numItems++].Format = STR_ABOUT;
|
|
||||||
gDropdownItems[numItems++].Format = STR_OPTIONS;
|
|
||||||
gDropdownItems[numItems++].Format = STR_SCREENSHOT;
|
|
||||||
gDropdownItems[numItems++].Format = STR_GIANT_SCREENSHOT;
|
|
||||||
gDropdownItems[numItems++].Format = STR_EMPTY;
|
|
||||||
gDropdownItems[numItems++].Format = STR_FILE_BUG_ON_GITHUB;
|
|
||||||
|
|
||||||
if (OpenRCT2::GetContext()->HasNewVersionInfo())
|
|
||||||
gDropdownItems[numItems++].Format = STR_UPDATE_AVAILABLE;
|
|
||||||
|
|
||||||
gDropdownItems[numItems++].Format = STR_EMPTY;
|
|
||||||
gDropdownItems[numItems++].Format = STR_QUIT_TO_MENU;
|
|
||||||
gDropdownItems[numItems++].Format = STR_EXIT_OPENRCT2;
|
|
||||||
}
|
|
||||||
|
|
||||||
WindowDropdownShowText(
|
|
||||||
{ windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1, colours[0] | 0x80,
|
|
||||||
Dropdown::Flag::StayOpen, numItems);
|
|
||||||
break;
|
break;
|
||||||
case WIDX_CHEATS:
|
case WIDX_CHEATS:
|
||||||
InitCheatsMenu(widget);
|
InitCheatsMenu(widget);
|
||||||
|
@ -3709,6 +3647,78 @@ static Widget _topToolbarWidgets[] = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TopToolbar::InitFileMenu(Widget& widget)
|
||||||
|
{
|
||||||
|
int32_t numItems = 0;
|
||||||
|
if (gScreenFlags & (SCREEN_FLAGS_TRACK_DESIGNER | SCREEN_FLAGS_TRACK_MANAGER))
|
||||||
|
{
|
||||||
|
gDropdownItems[numItems++].Format = STR_ABOUT;
|
||||||
|
gDropdownItems[numItems++].Format = STR_OPTIONS;
|
||||||
|
gDropdownItems[numItems++].Format = STR_SCREENSHOT;
|
||||||
|
gDropdownItems[numItems++].Format = STR_GIANT_SCREENSHOT;
|
||||||
|
gDropdownItems[numItems++].Format = STR_EMPTY;
|
||||||
|
gDropdownItems[numItems++].Format = STR_FILE_BUG_ON_GITHUB;
|
||||||
|
|
||||||
|
if (OpenRCT2::GetContext()->HasNewVersionInfo())
|
||||||
|
gDropdownItems[numItems++].Format = STR_UPDATE_AVAILABLE;
|
||||||
|
|
||||||
|
gDropdownItems[numItems++].Format = STR_EMPTY;
|
||||||
|
|
||||||
|
if (gScreenFlags & SCREEN_FLAGS_TRACK_DESIGNER)
|
||||||
|
gDropdownItems[numItems++].Format = STR_QUIT_ROLLERCOASTER_DESIGNER;
|
||||||
|
else
|
||||||
|
gDropdownItems[numItems++].Format = STR_QUIT_TRACK_DESIGNS_MANAGER;
|
||||||
|
|
||||||
|
gDropdownItems[numItems++].Format = STR_EXIT_OPENRCT2;
|
||||||
|
}
|
||||||
|
else if (gScreenFlags & SCREEN_FLAGS_SCENARIO_EDITOR)
|
||||||
|
{
|
||||||
|
gDropdownItems[numItems++].Format = STR_LOAD_LANDSCAPE;
|
||||||
|
gDropdownItems[numItems++].Format = STR_EMPTY;
|
||||||
|
gDropdownItems[numItems++].Format = STR_SAVE_LANDSCAPE;
|
||||||
|
gDropdownItems[numItems++].Format = STR_EMPTY;
|
||||||
|
gDropdownItems[numItems++].Format = STR_ABOUT;
|
||||||
|
gDropdownItems[numItems++].Format = STR_OPTIONS;
|
||||||
|
gDropdownItems[numItems++].Format = STR_SCREENSHOT;
|
||||||
|
gDropdownItems[numItems++].Format = STR_GIANT_SCREENSHOT;
|
||||||
|
gDropdownItems[numItems++].Format = STR_EMPTY;
|
||||||
|
gDropdownItems[numItems++].Format = STR_FILE_BUG_ON_GITHUB;
|
||||||
|
|
||||||
|
if (OpenRCT2::GetContext()->HasNewVersionInfo())
|
||||||
|
gDropdownItems[numItems++].Format = STR_UPDATE_AVAILABLE;
|
||||||
|
|
||||||
|
gDropdownItems[numItems++].Format = STR_EMPTY;
|
||||||
|
gDropdownItems[numItems++].Format = STR_QUIT_SCENARIO_EDITOR;
|
||||||
|
gDropdownItems[numItems++].Format = STR_EXIT_OPENRCT2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gDropdownItems[numItems++].Format = STR_NEW_GAME;
|
||||||
|
gDropdownItems[numItems++].Format = STR_LOAD_GAME;
|
||||||
|
gDropdownItems[numItems++].Format = STR_EMPTY;
|
||||||
|
gDropdownItems[numItems++].Format = STR_SAVE_GAME;
|
||||||
|
gDropdownItems[numItems++].Format = STR_SAVE_GAME_AS;
|
||||||
|
gDropdownItems[numItems++].Format = STR_EMPTY;
|
||||||
|
gDropdownItems[numItems++].Format = STR_ABOUT;
|
||||||
|
gDropdownItems[numItems++].Format = STR_OPTIONS;
|
||||||
|
gDropdownItems[numItems++].Format = STR_SCREENSHOT;
|
||||||
|
gDropdownItems[numItems++].Format = STR_GIANT_SCREENSHOT;
|
||||||
|
gDropdownItems[numItems++].Format = STR_EMPTY;
|
||||||
|
gDropdownItems[numItems++].Format = STR_FILE_BUG_ON_GITHUB;
|
||||||
|
|
||||||
|
if (OpenRCT2::GetContext()->HasNewVersionInfo())
|
||||||
|
gDropdownItems[numItems++].Format = STR_UPDATE_AVAILABLE;
|
||||||
|
|
||||||
|
gDropdownItems[numItems++].Format = STR_EMPTY;
|
||||||
|
gDropdownItems[numItems++].Format = STR_QUIT_TO_MENU;
|
||||||
|
gDropdownItems[numItems++].Format = STR_EXIT_OPENRCT2;
|
||||||
|
}
|
||||||
|
|
||||||
|
WindowDropdownShowText(
|
||||||
|
{ windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1, colours[0] | 0x80,
|
||||||
|
Dropdown::Flag::StayOpen, numItems);
|
||||||
|
}
|
||||||
|
|
||||||
void TopToolbar::InitCheatsMenu(Widget& widget)
|
void TopToolbar::InitCheatsMenu(Widget& widget)
|
||||||
{
|
{
|
||||||
using namespace Dropdown;
|
using namespace Dropdown;
|
||||||
|
@ -3730,8 +3740,8 @@ static Widget _topToolbarWidgets[] = {
|
||||||
SetItems(items);
|
SetItems(items);
|
||||||
|
|
||||||
WindowDropdownShowText(
|
WindowDropdownShowText(
|
||||||
{ windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1, colours[0] | 0x80, 0,
|
{ windowPos.x + widget.left, windowPos.y + widget.top }, widget.height() + 1, colours[0] | 0x80,
|
||||||
TOP_TOOLBAR_CHEATS_COUNT);
|
Dropdown::Flag::StayOpen, TOP_TOOLBAR_CHEATS_COUNT);
|
||||||
|
|
||||||
// Disable items that are not yet available in multiplayer
|
// Disable items that are not yet available in multiplayer
|
||||||
if (NetworkGetMode() != NETWORK_MODE_NONE)
|
if (NetworkGetMode() != NETWORK_MODE_NONE)
|
||||||
|
|
|
@ -137,6 +137,18 @@ struct Widget
|
||||||
return top - 1;
|
return top - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void moveRight(int32_t amount)
|
||||||
|
{
|
||||||
|
left += amount;
|
||||||
|
right += amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
void moveDown(int32_t amount)
|
||||||
|
{
|
||||||
|
top += amount;
|
||||||
|
bottom += amount;
|
||||||
|
}
|
||||||
|
|
||||||
bool IsVisible() const
|
bool IsVisible() const
|
||||||
{
|
{
|
||||||
return !(flags & WIDGET_FLAGS::IS_HIDDEN);
|
return !(flags & WIDGET_FLAGS::IS_HIDDEN);
|
||||||
|
|
Loading…
Reference in New Issue