1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-15 11:03:00 +01:00

Implement more options

- Invisible guests
- Invisible staff
- See-through trees
- Invisible trees
- Strings/Ids
This commit is contained in:
Kane
2021-08-10 02:35:56 +10:00
committed by Ted John
parent 204f8ceac1
commit e134be9538
8 changed files with 93 additions and 41 deletions

View File

@@ -3660,9 +3660,15 @@ STR_6468 :Not Yet Known
STR_6469 :Adjust smaller area of patrol area
STR_6470 :Adjust larger area of patrol area
STR_6471 :See-Through Vehicles
STR_6472 :Invisible Rides
STR_6473 :Invisible Scenery
STR_6474 :Invisible Paths
STR_6472 :See-Through Trees
STR_6473 :Invisible Rides
STR_6474 :Invisible Scenery
STR_6475 :Invisible Trees
STR_6476 :Invisible Paths
STR_6477 :Invisible Guests
STR_6478 :Invisible Staff
STR_6479 :Transparency Options
STR_6480 :Transparency Options
#############
# Scenarios #

View File

@@ -3638,7 +3638,7 @@ static void TopToolbarInitViewMenu(rct_window* w, rct_widget* widget)
ToggleOption(DDIDX_VIEW_CLIPPING, STR_VIEW_CLIPPING_MENU),
ToggleOption(DDIDX_HIGHLIGHT_PATH_ISSUES, STR_HIGHLIGHT_PATH_ISSUES_MENU),
Separator(),
ToggleOption(DDIDX_TRANSPARENCY, STR_INVISIBLE_PEOPLE),
ToggleOption(DDIDX_TRANSPARENCY, STR_TRANSPARENCY_OPTIONS),
};
static_assert(ItemIDsMatchIndices(items));

View File

@@ -56,10 +56,12 @@ enum WINDOW_TRANSPARENCY_WIDGET_IDX
WIDX_SEE_THROUGH_RIDES,
WIDX_SEE_THROUGH_VEHICLES,
WIDX_SEE_THROUGH_SCENERY,
WIDX_SEE_THROUGH_TREES,
WIDX_SEE_THROUGH_PATHS,
WIDX_INVISIBLE_GROUP,
WIDX_INVISIBLE_RIDES,
WIDX_INVISIBLE_SCENERY,
WIDX_INVISIBLE_TREES,
WIDX_INVISIBLE_PATHS,
WIDX_INVISIBLE_SUPPORTS,
WIDX_INVISIBLE_GUESTS,
@@ -72,7 +74,7 @@ enum WINDOW_TRANSPARENCY_WIDGET_IDX
#pragma region MEASUREMENTS
static constexpr const rct_string_id WINDOW_TITLE = STR_CHEAT_TITLE;
static constexpr const rct_string_id WINDOW_TITLE = STR_TRANSPARENCY_OPTIONS_TITLE;
static constexpr const int32_t WW = 249;
static constexpr const int32_t WH = 300;
@@ -100,26 +102,28 @@ static rct_widget window_transparency_main_widgets[] =
MAIN_TRANSPARENCY_WIDGETS,
MakeWidget({ 5, 48}, {238, 83}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_SET_GUESTS_PARAMETERS), // General parameters group frame
MakeWidget({ 11, 63}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_UNDERGROUND_VIEW, STR_UNDERGROUND_VIEW),
MakeWidget({ 11, 80}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_VIEWPORT_TRANSPARENT_WATER, STR_VIEWPORT_TRANSPARENT_WATER),
MakeWidget({ 11, 97}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_REMOVE_BASE_LAND, STR_REMOVE_BASE_LAND),
MakeWidget({ 11, 114}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_REMOVE_VERTICAL_FACES, STR_REMOVE_VERTICAL_FACES),
MakeWidget({ 11, 63}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_UNDERGROUND_VIEW, STR_UNDERGROUND_VIEW),
MakeWidget({ 11, 80}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_VIEWPORT_TRANSPARENT_WATER, STR_VIEWPORT_TRANSPARENT_WATER),
MakeWidget({ 11, 97}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_REMOVE_BASE_LAND, STR_REMOVE_BASE_LAND),
MakeWidget({ 11, 114}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_REMOVE_VERTICAL_FACES, STR_REMOVE_VERTICAL_FACES),
MakeWidget({ 5, 136}, {238, 83}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_SET_GUESTS_PARAMETERS), // See-through parameters group frame
MakeWidget({ 5, 136}, {238, 100}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_SET_GUESTS_PARAMETERS), // See-through parameters group frame
MakeWidget({ 11, 151}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SEE_THROUGH_RIDES, STR_SEE_THROUGH_RIDES),
MakeWidget({ 11, 168}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SEE_THROUGH_VEHICLES, STR_SEE_THROUGH_VEHICLES),
MakeWidget({ 11, 185}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SEE_THROUGH_SCENERY, STR_SEE_THROUGH_SCENERY),
MakeWidget({ 11, 202}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SEE_THROUGH_PATHS, STR_SEE_THROUGH_PATHS),
MakeWidget({ 11, 151}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SEE_THROUGH_RIDES, STR_SEE_THROUGH_RIDES),
MakeWidget({ 11, 168}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SEE_THROUGH_VEHICLES, STR_SEE_THROUGH_VEHICLES),
MakeWidget({ 11, 185}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SEE_THROUGH_SCENERY, STR_SEE_THROUGH_SCENERY),
MakeWidget({ 11, 202}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SEE_THROUGH_TREES, STR_SEE_THROUGH_TREES), // Trees
MakeWidget({ 11, 219}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_SEE_THROUGH_PATHS, STR_SEE_THROUGH_PATHS),
MakeWidget({ 5, 224}, {238, 117}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_SET_GUESTS_PARAMETERS), // Invisible parameters group frame
MakeWidget({ 5, 241}, {238, 134}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_SET_GUESTS_PARAMETERS), // Invisible parameters group frame
MakeWidget({ 11, 239}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_RIDES, STR_INVISIBLE_RIDES),
MakeWidget({ 11, 256}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_SCENERY, STR_INVISIBLE_SCENERY),
MakeWidget({ 11, 273}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_PATHS, STR_INVISIBLE_PATHS),
MakeWidget({ 11, 290}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_SUPPORTS, STR_INVISIBLE_SUPPORTS),
MakeWidget({ 11, 307}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_PEOPLE, STR_INVISIBLE_PEOPLE),
MakeWidget({ 11, 324}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_PEOPLE, STR_INVISIBLE_PEOPLE),
MakeWidget({ 11, 256}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_RIDES, STR_INVISIBLE_RIDES),
MakeWidget({ 11, 273}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_SCENERY, STR_INVISIBLE_SCENERY),
MakeWidget({ 11, 290}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_TREES, STR_INVISIBLE_TREES), // Trees
MakeWidget({ 11, 307}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_PATHS, STR_INVISIBLE_PATHS),
MakeWidget({ 11, 324}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_SUPPORTS, STR_INVISIBLE_SUPPORTS),
MakeWidget({ 11, 341}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_GUESTS, STR_INVISIBLE_GUESTS), // Guests
MakeWidget({ 11, 358}, CHEAT_CHECK, WindowWidgetType::Checkbox, WindowColour::Secondary, STR_INVISIBLE_STAFF, STR_INVISIBLE_STAFF), // Staff
{ WIDGETS_END },
};
@@ -127,7 +131,7 @@ static rct_widget window_transparency_main_widgets[] =
static rct_widget window_transparency_rides_widgets[] =
{
MAIN_TRANSPARENCY_WIDGETS,
MakeWidget({ 5, 48}, {238, 279}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_SET_GUESTS_PARAMETERS ), // Guests parameters group frame
MakeWidget({ 5, 48}, {238, 279}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_SET_GUESTS_PARAMETERS), // Guests parameters group frame
{ WIDGETS_END },
};
@@ -135,7 +139,7 @@ static rct_widget window_transparency_rides_widgets[] =
static rct_widget window_transparency_misc_widgets[] =
{
MAIN_TRANSPARENCY_WIDGETS,
MakeWidget ({ 5, 48}, {238, 60}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_GENERAL_GROUP ), // General group
MakeWidget ({ 5, 48}, {238, 60}, WindowWidgetType::Groupbox, WindowColour::Secondary, STR_CHEAT_GENERAL_GROUP), // General group
{ WIDGETS_END },
};
@@ -159,10 +163,12 @@ static uint64_t window_transparency_page_enabled_widgets[] = {
(1ULL << WIDX_SEE_THROUGH_RIDES) |
(1ULL << WIDX_SEE_THROUGH_VEHICLES) |
(1ULL << WIDX_SEE_THROUGH_SCENERY) |
(1ULL << WIDX_SEE_THROUGH_TREES) |
(1ULL << WIDX_SEE_THROUGH_PATHS) |
(1ULL << WIDX_INVISIBLE_GROUP) |
(1ULL << WIDX_INVISIBLE_RIDES) |
(1ULL << WIDX_INVISIBLE_SCENERY) |
(1ULL << WIDX_INVISIBLE_TREES) |
(1ULL << WIDX_INVISIBLE_PATHS) |
(1ULL << WIDX_INVISIBLE_SUPPORTS) |
(1ULL << WIDX_INVISIBLE_GUESTS) |
@@ -255,20 +261,17 @@ public:
w->viewport->flags ^= VIEWPORT_FLAG_HIDE_VERTICAL;
break;
case WIDX_SEE_THROUGH_RIDES:
if (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_RIDES)
w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_RIDES;
else
w->viewport->flags |= VIEWPORT_FLAG_SEETHROUGH_RIDES | VIEWPORT_FLAG_SEETHROUGH_VEHICLES;
w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_RIDES;
break;
case WIDX_SEE_THROUGH_VEHICLES:
if (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_VEHICLES)
w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_VEHICLES;
else
w->viewport->flags |= VIEWPORT_FLAG_SEETHROUGH_RIDES | VIEWPORT_FLAG_SEETHROUGH_VEHICLES;
w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_VEHICLES;
break;
case WIDX_SEE_THROUGH_SCENERY:
w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_SCENERY;
break;
case WIDX_SEE_THROUGH_TREES:
w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_TREES;
break;
case WIDX_SEE_THROUGH_PATHS:
w->viewport->flags ^= VIEWPORT_FLAG_SEETHROUGH_PATHS;
break;
@@ -278,6 +281,9 @@ public:
case WIDX_INVISIBLE_SCENERY:
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_SCENERY;
break;
case WIDX_INVISIBLE_TREES:
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_TREES;
break;
case WIDX_INVISIBLE_PATHS:
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_PATHS;
break;
@@ -285,10 +291,14 @@ public:
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_SUPPORTS;
break;
case WIDX_INVISIBLE_GUESTS:
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_PEEPS;
if (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_PEEPS)
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_PEEPS;
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_GUESTS;
break;
case WIDX_INVISIBLE_STAFF:
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_PEEPS;
if (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_PEEPS)
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_PEEPS;
w->viewport->flags ^= VIEWPORT_FLAG_INVISIBLE_STAFF;
break;
}
}
@@ -327,12 +337,21 @@ public:
SetCheckboxValue(WIDX_SEE_THROUGH_RIDES, (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_RIDES));
SetCheckboxValue(WIDX_SEE_THROUGH_VEHICLES, (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_VEHICLES));
SetCheckboxValue(WIDX_SEE_THROUGH_SCENERY, (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_SCENERY));
SetCheckboxValue(WIDX_SEE_THROUGH_TREES, (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_TREES));
SetCheckboxValue(WIDX_SEE_THROUGH_PATHS, (w->viewport->flags & VIEWPORT_FLAG_SEETHROUGH_PATHS));
SetCheckboxValue(WIDX_INVISIBLE_RIDES, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_RIDES));
SetCheckboxValue(WIDX_INVISIBLE_SCENERY, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_SCENERY));
SetCheckboxValue(WIDX_INVISIBLE_TREES, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_TREES));
SetCheckboxValue(WIDX_INVISIBLE_PATHS, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_PATHS));
SetCheckboxValue(WIDX_INVISIBLE_SUPPORTS, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_SUPPORTS));
SetCheckboxValue(WIDX_INVISIBLE_GUESTS, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_PEEPS));
SetCheckboxValue(WIDX_INVISIBLE_STAFF, (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_PEEPS));
SetCheckboxValue(
WIDX_INVISIBLE_GUESTS,
(w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_GUESTS)
|| (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_PEEPS));
SetCheckboxValue(
WIDX_INVISIBLE_STAFF,
(w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_STAFF)
|| (w->viewport->flags & VIEWPORT_FLAG_INVISIBLE_PEEPS));
break;
}
}

View File

@@ -2737,6 +2737,14 @@ void Peep::Paint(paint_session& session, int32_t imageDirection) const
{
return;
}
if ((session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_GUESTS) && Is<Guest>())
{
return;
}
if ((session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_STAFF) && Is<Staff>())
{
return;
}
PeepActionSpriteType actionSpriteType = ActionSpriteType;
uint8_t imageOffset = ActionSpriteImageOffset;
@@ -2753,7 +2761,7 @@ void Peep::Paint(paint_session& session, int32_t imageDirection) const
uint32_t imageId = baseImageId | TshirtColour << 19 | TrousersColour << 24 | IMAGE_TYPE_REMAP | IMAGE_TYPE_REMAP_2_PLUS;
PaintAddImageAsParent(session, imageId, { 0, 0, z }, { 1, 1, 11 }, { 0, 0, z + 5 });
auto* guest = As<Guest>();
auto* guest = As<Staff>();
if (guest != nullptr)
{
if (baseImageId >= 10717 && baseImageId < 10749)

View File

@@ -53,6 +53,10 @@ enum
VIEWPORT_FLAG_INVISIBLE_RIDES = (1 << 21),
VIEWPORT_FLAG_INVISIBLE_SCENERY = (1 << 22),
VIEWPORT_FLAG_INVISIBLE_PATHS = (1 << 23),
VIEWPORT_FLAG_INVISIBLE_GUESTS = (1 << 24),
VIEWPORT_FLAG_INVISIBLE_STAFF = (1 << 25),
VIEWPORT_FLAG_SEETHROUGH_TREES = (1 << 26),
VIEWPORT_FLAG_INVISIBLE_TREES = (1 << 27),
};
enum class ViewportInteractionItem : uint8_t

View File

@@ -3929,9 +3929,15 @@ enum : uint16_t
STR_ADJUST_LARGER_PATROL_AREA_TIP = 6470,
STR_SEE_THROUGH_VEHICLES = 6471,
STR_INVISIBLE_RIDES = 6472,
STR_INVISIBLE_SCENERY = 6473,
STR_INVISIBLE_PATHS = 6474,
STR_SEE_THROUGH_TREES = 6472,
STR_INVISIBLE_RIDES = 6473,
STR_INVISIBLE_SCENERY = 6474,
STR_INVISIBLE_TREES = 6475,
STR_INVISIBLE_PATHS = 6476,
STR_INVISIBLE_GUESTS = 6477,
STR_INVISIBLE_STAFF = 6478,
STR_TRANSPARENCY_OPTIONS = 6479,
STR_TRANSPARENCY_OPTIONS_TITLE = 6480,
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
/* MAX_STR_COUNT = 32768 */ // MAX_STR_COUNT - upper limit for number of strings, not the current count strings

View File

@@ -122,6 +122,11 @@ void PaintSmallScenery(paint_session& session, uint8_t direction, int32_t height
return;
}
if (sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_IS_TREE) && (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_TREES))
{
return;
}
session.InteractionType = ViewportInteractionItem::Scenery;
CoordsXYZ boxLength;
CoordsXYZ boxOffset{ 0, 0, height };
@@ -142,6 +147,10 @@ void PaintSmallScenery(paint_session& session, uint8_t direction, int32_t height
{
imageTemplate = ImageId().WithRemap(FilterPaletteID::Palette44);
}
else if (sceneryEntry->HasFlag(SMALL_SCENERY_FLAG_IS_TREE) && (session.ViewFlags & VIEWPORT_FLAG_SEETHROUGH_TREES))
{
imageTemplate = ImageId().WithTransparancy(FilterPaletteID::PaletteDarken1);
}
boxLength.x = 2;
boxLength.y = 2;

View File

@@ -1213,7 +1213,7 @@ void vehicle_visual_mini_golf_player(
return;
}
if (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_PEEPS)
if ((session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_PEEPS) || (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_GUESTS))
{
return;
}
@@ -1255,7 +1255,7 @@ void vehicle_visual_mini_golf_ball(
return;
}
if (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_PEEPS)
if ((session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_PEEPS) || (session.ViewFlags & VIEWPORT_FLAG_INVISIBLE_GUESTS))
{
return;
}