From 15bb5f53f8a8bd56cf1f441afea6e3c33200f142 Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Tue, 25 May 2021 04:28:28 +0000 Subject: [PATCH 1/7] Merge Localisation/master into OpenRCT2/develop --- data/language/nl-NL.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/data/language/nl-NL.txt b/data/language/nl-NL.txt index 7707b834cc..1cc101cb46 100644 --- a/data/language/nl-NL.txt +++ b/data/language/nl-NL.txt @@ -3681,6 +3681,7 @@ STR_6436 :Onzichtbaarheid in/uitschakelen STR_6437 :Onzichtbaar STR_6438 :O STR_6439 :Vakinspecteur: Onzichtbaarheid in/uitschakelen +STR_6440 :Doorzichtig water ############# # Scenarios # From 1b11e691c9d381036b8542cf41039488dfbfa8b1 Mon Sep 17 00:00:00 2001 From: OpenRCT2 git bot Date: Wed, 26 May 2021 04:43:40 +0000 Subject: [PATCH 2/7] Merge Localisation/master into OpenRCT2/develop --- data/language/eo-OO.txt | 1 + data/language/ko-KR.txt | 3 ++- data/language/pt-BR.txt | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/data/language/eo-OO.txt b/data/language/eo-OO.txt index c6177c0e4e..81e31acc63 100644 --- a/data/language/eo-OO.txt +++ b/data/language/eo-OO.txt @@ -3682,6 +3682,7 @@ STR_6436 :Baskuligi nevideblecon STR_6437 :Nevidebla STR_6438 :N STR_6439 :Inspektilo de Bloko: Baskuligi nevideblecon +STR_6440 :Travidebla akvo ############# # Scenarios # diff --git a/data/language/ko-KR.txt b/data/language/ko-KR.txt index 0de5891879..34ac5e9da0 100644 --- a/data/language/ko-KR.txt +++ b/data/language/ko-KR.txt @@ -324,7 +324,7 @@ STR_0935 :놀이기구 출구가 있습니다 STR_0936 :공원 입구가 있습니다 STR_0937 :보기 설정 STR_0938 :지형의 높이나 경사를 조정합니다. -STR_0939 :지하/내부 시야 +STR_0939 :지하/내부 보기 STR_0940 :땅 표면 감추기 STR_0941 :절벽 감추기 STR_0942 :놀이기구 감추기 @@ -3685,6 +3685,7 @@ STR_6436 :감춤 여부 STR_6437 :감춤 STR_6438 :I STR_6439 :칸 조사 창: 감춤 여부 +STR_6440 :물 투명하게 보기 ############# # Scenarios # diff --git a/data/language/pt-BR.txt b/data/language/pt-BR.txt index 9fe7780a1d..f2439bf4c9 100644 --- a/data/language/pt-BR.txt +++ b/data/language/pt-BR.txt @@ -3682,6 +3682,7 @@ STR_6436 :Liga/desliga invisibilidade STR_6437 :Invisível STR_6438 :I STR_6439 :Inspetor de Azulejo: Liga/desliga invisibilidade +STR_6440 :Água transparente ############# # Scenarios # From 4be838a9b8cd976661abe54a7e8cb64a52ed9f08 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek Date: Thu, 27 May 2021 19:52:11 +0200 Subject: [PATCH 3/7] Reserve strings for the new-save-format branch Avoiding constant merge conflicts --- data/language/en-GB.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index 27fcb030f7..bebb127725 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -3683,6 +3683,14 @@ STR_6437 :Invisible STR_6438 :I STR_6439 :Tile Inspector: Toggle invisibility STR_6440 :Transparent water +STR_6441 :At least one non-queue footpath surface object must be selected. +STR_6442 :At least one queue footpath surface object must be selected. +STR_6443 :At least one footpath railing object must be selected. +STR_6444 :Footpath Surfaces +STR_6445 :Footpath Railings +STR_6446 :{WINDOW_COLOUR_2}Surface name: {BLACK}{STRINGID} +STR_6447 :{WINDOW_COLOUR_2}Railing name: {BLACK}{STRINGID} +STR_6448 :Unsupported object format ############# # Scenarios # From f2ac6589351c408f3fc2e6b854c427ba31d29a17 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Wed, 26 May 2021 16:43:51 +0200 Subject: [PATCH 4/7] Show tracks list of music styles in Object Selection --- data/language/en-GB.txt | 3 ++ .../windows/EditorObjectSelection.cpp | 30 +++++++++++++++---- src/openrct2/localisation/StringIds.h | 4 +++ src/openrct2/object/MusicObject.cpp | 1 + src/openrct2/object/MusicObject.h | 1 + 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index bebb127725..dcfacab5ab 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -3691,6 +3691,9 @@ STR_6445 :Footpath Railings STR_6446 :{WINDOW_COLOUR_2}Surface name: {BLACK}{STRINGID} STR_6447 :{WINDOW_COLOUR_2}Railing name: {BLACK}{STRINGID} STR_6448 :Unsupported object format +STR_6449 :{WINDOW_COLOUR_2}Tracks: +STR_6450 :{BLACK}“{STRING}” +STR_6451 :{BLACK}“{STRING}” - {STRING} ############# # Scenarios # diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index 2e4e11589e..da0923d98c 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -1059,7 +1060,9 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf DrawTextEllipsised(dpi, screenPos, width, STR_WINDOW_COLOUR_2_STRINGID, ft, { TextAlignment::CENTRE }); } - // Draw description of object + auto screenPos = w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_LIST].right + 4, widget->bottom + 23 }; + width = w->windowPos.x + w->width - screenPos.x - 4; + auto description = object_get_description(_loadedObject.get()); if (!description.empty()) { @@ -1067,14 +1070,29 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf ft.Add(STR_STRING); ft.Add(description.c_str()); - auto screenPos = w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_LIST].right + 4, widget->bottom + 18 }; - width = w->windowPos.x + w->width - screenPos.x - 4; - - DrawTextWrapped(dpi, screenPos + ScreenCoordsXY{ 0, 5 }, width, STR_WINDOW_COLOUR_2_STRINGID, ft); + screenPos.y += DrawTextWrapped(dpi, screenPos, width, STR_WINDOW_COLOUR_2_STRINGID, ft); } - auto screenPos = w->windowPos + ScreenCoordsXY{ w->width - 5, w->height - (LIST_ROW_HEIGHT * 5) }; + if (get_selected_object_type(w) == ObjectType::Music) + { + screenPos.y += DrawTextWrapped(dpi, screenPos, width, STR_MUSIC_OBJECT_TRACK_HEADER) + 2; + const auto* musicObject = reinterpret_cast(_loadedObject.get()); + for (size_t i = 0; i < musicObject->GetTrackCount(); i++) + { + const auto* track = musicObject->GetTrack(i); + if (track->Name.empty()) + continue; + auto stringId = track->Composer.empty() ? STR_MUSIC_OBJECT_TRACK_LIST_ITEM + : STR_MUSIC_OBJECT_TRACK_LIST_ITEM_WITH_COMPOSER; + auto ft = Formatter(); + ft.Add(track->Name.c_str()); + ft.Add(track->Composer.c_str()); + screenPos.y += DrawTextWrapped(dpi, screenPos + ScreenCoordsXY{ 10, 0 }, width, stringId, ft); + } + } + + screenPos = w->windowPos + ScreenCoordsXY{ w->width - 5, w->height - (LIST_ROW_HEIGHT * 5) }; // Draw ride type. if (get_selected_object_type(w) == ObjectType::Ride) { diff --git a/src/openrct2/localisation/StringIds.h b/src/openrct2/localisation/StringIds.h index 94b2634465..9e0d9af272 100644 --- a/src/openrct2/localisation/StringIds.h +++ b/src/openrct2/localisation/StringIds.h @@ -3943,6 +3943,10 @@ enum STR_VIEWPORT_TRANSPARENT_WATER = 6440, + STR_MUSIC_OBJECT_TRACK_HEADER = 6449, + STR_MUSIC_OBJECT_TRACK_LIST_ITEM = 6450, + STR_MUSIC_OBJECT_TRACK_LIST_ITEM_WITH_COMPOSER = 6451, + // 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 }; diff --git a/src/openrct2/object/MusicObject.cpp b/src/openrct2/object/MusicObject.cpp index 825ef6098c..f61b6f65b2 100644 --- a/src/openrct2/object/MusicObject.cpp +++ b/src/openrct2/object/MusicObject.cpp @@ -106,6 +106,7 @@ void MusicObject::ParseTracks(IReadObjectContext& context, json_t& jTracks) { MusicObjectTrack track; track.Name = Json::GetString(jTrack["name"]); + track.Composer = Json::GetString(jTrack["composer"]); auto source = Json::GetString(jTrack["source"]); if (source.empty()) { diff --git a/src/openrct2/object/MusicObject.h b/src/openrct2/object/MusicObject.h index f25c448b00..43b519fadd 100644 --- a/src/openrct2/object/MusicObject.h +++ b/src/openrct2/object/MusicObject.h @@ -18,6 +18,7 @@ class MusicObjectTrack { public: std::string Name; + std::string Composer; ObjectAsset Asset; /** From 1d693f97512eabe48d28b171f64baace38a75983 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Wed, 26 May 2021 17:00:50 +0200 Subject: [PATCH 5/7] Fix display of number of items in scenery group --- src/openrct2-ui/windows/EditorObjectSelection.cpp | 11 +++++++++-- src/openrct2/object/SceneryGroupObject.cpp | 5 +++++ src/openrct2/object/SceneryGroupObject.h | 2 ++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index da0923d98c..09ceddbdb0 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -1072,8 +1073,14 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf screenPos.y += DrawTextWrapped(dpi, screenPos, width, STR_WINDOW_COLOUR_2_STRINGID, ft); } - - if (get_selected_object_type(w) == ObjectType::Music) + if (get_selected_object_type(w) == ObjectType::SceneryGroup) + { + const auto* sceneryGroupObject = reinterpret_cast(_loadedObject.get()); + auto ft = Formatter(); + ft.Add(sceneryGroupObject->GetNumIncludedObjects()); + screenPos.y += DrawTextWrapped(dpi, screenPos, width, STR_INCLUDES_X_OBJECTS, ft) + 2; + } + else if (get_selected_object_type(w) == ObjectType::Music) { screenPos.y += DrawTextWrapped(dpi, screenPos, width, STR_MUSIC_OBJECT_TRACK_HEADER) + 2; const auto* musicObject = reinterpret_cast(_loadedObject.get()); diff --git a/src/openrct2/object/SceneryGroupObject.cpp b/src/openrct2/object/SceneryGroupObject.cpp index 20deaaa397..aa6a8bfd20 100644 --- a/src/openrct2/object/SceneryGroupObject.cpp +++ b/src/openrct2/object/SceneryGroupObject.cpp @@ -176,3 +176,8 @@ std::vector SceneryGroupObject::ReadJsonEntries(json_t& j } return entries; } + +uint16_t SceneryGroupObject::GetNumIncludedObjects() const +{ + return static_cast(_items.size()); +} diff --git a/src/openrct2/object/SceneryGroupObject.h b/src/openrct2/object/SceneryGroupObject.h index e3e9d889a2..09ed0e6256 100644 --- a/src/openrct2/object/SceneryGroupObject.h +++ b/src/openrct2/object/SceneryGroupObject.h @@ -45,6 +45,8 @@ public: void SetRepositoryItem(ObjectRepositoryItem* item) const override; + uint16_t GetNumIncludedObjects() const; + private: static std::vector ReadItems(OpenRCT2::IStream* stream); static uint32_t ReadJsonEntertainerCostumes(json_t& jCostumes); From b214a9fd970a36dd33921757b25f8417a665850e Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Wed, 26 May 2021 17:44:38 +0200 Subject: [PATCH 6/7] Show what a stall sells in Object Selection --- data/language/en-GB.txt | 1 + .../windows/EditorObjectSelection.cpp | 199 ++++++++++-------- src/openrct2/localisation/StringIds.h | 2 + 3 files changed, 119 insertions(+), 83 deletions(-) diff --git a/data/language/en-GB.txt b/data/language/en-GB.txt index dcfacab5ab..e53cab8acb 100644 --- a/data/language/en-GB.txt +++ b/data/language/en-GB.txt @@ -3694,6 +3694,7 @@ STR_6448 :Unsupported object format STR_6449 :{WINDOW_COLOUR_2}Tracks: STR_6450 :{BLACK}“{STRING}” STR_6451 :{BLACK}“{STRING}” - {STRING} +STR_6452 :{WINDOW_COLOUR_2}Sells: {BLACK}{STRING} ############# # Scenarios # diff --git a/src/openrct2-ui/windows/EditorObjectSelection.cpp b/src/openrct2-ui/windows/EditorObjectSelection.cpp index 09ceddbdb0..1d5b7430fc 100644 --- a/src/openrct2-ui/windows/EditorObjectSelection.cpp +++ b/src/openrct2-ui/windows/EditorObjectSelection.cpp @@ -938,6 +938,120 @@ static void window_editor_object_selection_invalidate(rct_window* w) } } +static void window_editor_object_selection_paint_descriptions(rct_window* w, rct_drawpixelinfo* dpi) +{ + auto widget = &w->widgets[WIDX_PREVIEW]; + auto screenPos = w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_LIST].right + 4, widget->bottom + 23 }; + auto width = w->windowPos.x + w->width - screenPos.x - 4; + + auto description = object_get_description(_loadedObject.get()); + if (!description.empty()) + { + auto ft = Formatter(); + ft.Add(STR_STRING); + ft.Add(description.c_str()); + + screenPos.y += DrawTextWrapped(dpi, screenPos, width, STR_WINDOW_COLOUR_2_STRINGID, ft) + LIST_ROW_HEIGHT; + } + if (get_selected_object_type(w) == ObjectType::Ride) + { + auto* rideObject = reinterpret_cast(_loadedObject.get()); + const auto* rideEntry = reinterpret_cast(rideObject->GetLegacyData()); + if (rideEntry->shop_item[0] != ShopItem::None) + { + std::string sells = ""; + for (size_t i = 0; i < std::size(rideEntry->shop_item); i++) + { + if (rideEntry->shop_item[i] == ShopItem::None) + continue; + + if (!sells.empty()) + sells += ", "; + + sells += language_get_string(GetShopItemDescriptor(rideEntry->shop_item[i]).Naming.Plural); + } + auto ft = Formatter(); + ft.Add(sells.c_str()); + screenPos.y += DrawTextWrapped(dpi, screenPos, width, STR_RIDE_OBJECT_SHOP_SELLS, ft) + 2; + } + } + else if (get_selected_object_type(w) == ObjectType::SceneryGroup) + { + const auto* sceneryGroupObject = reinterpret_cast(_loadedObject.get()); + auto ft = Formatter(); + ft.Add(sceneryGroupObject->GetNumIncludedObjects()); + screenPos.y += DrawTextWrapped(dpi, screenPos, width, STR_INCLUDES_X_OBJECTS, ft) + 2; + } + else if (get_selected_object_type(w) == ObjectType::Music) + { + screenPos.y += DrawTextWrapped(dpi, screenPos, width, STR_MUSIC_OBJECT_TRACK_HEADER) + 2; + const auto* musicObject = reinterpret_cast(_loadedObject.get()); + for (size_t i = 0; i < musicObject->GetTrackCount(); i++) + { + const auto* track = musicObject->GetTrack(i); + if (track->Name.empty()) + continue; + + auto stringId = track->Composer.empty() ? STR_MUSIC_OBJECT_TRACK_LIST_ITEM + : STR_MUSIC_OBJECT_TRACK_LIST_ITEM_WITH_COMPOSER; + auto ft = Formatter(); + ft.Add(track->Name.c_str()); + ft.Add(track->Composer.c_str()); + screenPos.y += DrawTextWrapped(dpi, screenPos + ScreenCoordsXY{ 10, 0 }, width, stringId, ft); + } + } +} + +static void window_editor_object_selection_paint_debug_data(rct_window* w, rct_drawpixelinfo* dpi) +{ + list_item* listItem = &_listItems[w->selected_list_item]; + auto screenPos = w->windowPos + ScreenCoordsXY{ w->width - 5, w->height - (LIST_ROW_HEIGHT * 5) }; + // Draw ride type. + if (get_selected_object_type(w) == ObjectType::Ride) + { + auto stringId = get_ride_type_string_id(listItem->repositoryItem); + DrawTextBasic(dpi, screenPos, stringId, {}, { COLOUR_WHITE, TextAlignment::RIGHT }); + } + + screenPos.y += LIST_ROW_HEIGHT; + + // Draw object source + auto stringId = object_manager_get_source_game_string(listItem->repositoryItem->GetFirstSourceGame()); + DrawTextBasic(dpi, screenPos, stringId, {}, { COLOUR_WHITE, TextAlignment::RIGHT }); + screenPos.y += LIST_ROW_HEIGHT; + + // Draw object dat name + { + const char* path = path_get_filename(listItem->repositoryItem->Path.c_str()); + auto ft = Formatter(); + ft.Add(STR_STRING); + ft.Add(path); + DrawTextBasic( + dpi, { w->windowPos.x + w->width - 5, screenPos.y }, STR_WINDOW_COLOUR_2_STRINGID, ft, + { COLOUR_BLACK, TextAlignment::RIGHT }); + screenPos.y += LIST_ROW_HEIGHT; + } + + // Draw object author (will be blank space if no author in file or a non JSON object) + { + auto ft = Formatter(); + std::string authorsString; + for (size_t i = 0; i < listItem->repositoryItem->Authors.size(); i++) + { + if (i > 0) + { + authorsString.append(", "); + } + authorsString.append(listItem->repositoryItem->Authors[i]); + } + ft.Add(STR_STRING); + ft.Add(authorsString.c_str()); + DrawTextEllipsised( + dpi, { w->windowPos.x + w->width - 5, screenPos.y }, w->width - w->widgets[WIDX_LIST].right - 4, + STR_WINDOW_COLOUR_2_STRINGID, ft, { TextAlignment::RIGHT }); + } +} + /** * * rct2: 0x006AAB56 @@ -1061,89 +1175,8 @@ static void window_editor_object_selection_paint(rct_window* w, rct_drawpixelinf DrawTextEllipsised(dpi, screenPos, width, STR_WINDOW_COLOUR_2_STRINGID, ft, { TextAlignment::CENTRE }); } - auto screenPos = w->windowPos + ScreenCoordsXY{ w->widgets[WIDX_LIST].right + 4, widget->bottom + 23 }; - width = w->windowPos.x + w->width - screenPos.x - 4; - - auto description = object_get_description(_loadedObject.get()); - if (!description.empty()) - { - auto ft = Formatter(); - ft.Add(STR_STRING); - ft.Add(description.c_str()); - - screenPos.y += DrawTextWrapped(dpi, screenPos, width, STR_WINDOW_COLOUR_2_STRINGID, ft); - } - if (get_selected_object_type(w) == ObjectType::SceneryGroup) - { - const auto* sceneryGroupObject = reinterpret_cast(_loadedObject.get()); - auto ft = Formatter(); - ft.Add(sceneryGroupObject->GetNumIncludedObjects()); - screenPos.y += DrawTextWrapped(dpi, screenPos, width, STR_INCLUDES_X_OBJECTS, ft) + 2; - } - else if (get_selected_object_type(w) == ObjectType::Music) - { - screenPos.y += DrawTextWrapped(dpi, screenPos, width, STR_MUSIC_OBJECT_TRACK_HEADER) + 2; - const auto* musicObject = reinterpret_cast(_loadedObject.get()); - for (size_t i = 0; i < musicObject->GetTrackCount(); i++) - { - const auto* track = musicObject->GetTrack(i); - if (track->Name.empty()) - continue; - - auto stringId = track->Composer.empty() ? STR_MUSIC_OBJECT_TRACK_LIST_ITEM - : STR_MUSIC_OBJECT_TRACK_LIST_ITEM_WITH_COMPOSER; - auto ft = Formatter(); - ft.Add(track->Name.c_str()); - ft.Add(track->Composer.c_str()); - screenPos.y += DrawTextWrapped(dpi, screenPos + ScreenCoordsXY{ 10, 0 }, width, stringId, ft); - } - } - - screenPos = w->windowPos + ScreenCoordsXY{ w->width - 5, w->height - (LIST_ROW_HEIGHT * 5) }; - // Draw ride type. - if (get_selected_object_type(w) == ObjectType::Ride) - { - auto stringId = get_ride_type_string_id(listItem->repositoryItem); - DrawTextBasic(dpi, screenPos, stringId, {}, { COLOUR_WHITE, TextAlignment::RIGHT }); - } - - screenPos.y += LIST_ROW_HEIGHT; - - // Draw object source - auto stringId = object_manager_get_source_game_string(listItem->repositoryItem->GetFirstSourceGame()); - DrawTextBasic(dpi, screenPos, stringId, {}, { COLOUR_WHITE, TextAlignment::RIGHT }); - screenPos.y += LIST_ROW_HEIGHT; - - // Draw object dat name - { - const char* path = path_get_filename(listItem->repositoryItem->Path.c_str()); - auto ft = Formatter(); - ft.Add(STR_STRING); - ft.Add(path); - DrawTextBasic( - dpi, { w->windowPos.x + w->width - 5, screenPos.y }, STR_WINDOW_COLOUR_2_STRINGID, ft, - { COLOUR_BLACK, TextAlignment::RIGHT }); - screenPos.y += LIST_ROW_HEIGHT; - } - - // Draw object author (will be blank space if no author in file or a non JSON object) - { - auto ft = Formatter(); - std::string authorsString; - for (size_t i = 0; i < listItem->repositoryItem->Authors.size(); i++) - { - if (i > 0) - { - authorsString.append(", "); - } - authorsString.append(listItem->repositoryItem->Authors[i]); - } - ft.Add(STR_STRING); - ft.Add(authorsString.c_str()); - DrawTextEllipsised( - dpi, { w->windowPos.x + w->width - 5, screenPos.y }, w->width - w->widgets[WIDX_LIST].right - 4, - STR_WINDOW_COLOUR_2_STRINGID, ft, { TextAlignment::RIGHT }); - } + window_editor_object_selection_paint_descriptions(w, dpi); + window_editor_object_selection_paint_debug_data(w, dpi); } /** * diff --git a/src/openrct2/localisation/StringIds.h b/src/openrct2/localisation/StringIds.h index 9e0d9af272..44a88c77a0 100644 --- a/src/openrct2/localisation/StringIds.h +++ b/src/openrct2/localisation/StringIds.h @@ -3947,6 +3947,8 @@ enum STR_MUSIC_OBJECT_TRACK_LIST_ITEM = 6450, STR_MUSIC_OBJECT_TRACK_LIST_ITEM_WITH_COMPOSER = 6451, + STR_RIDE_OBJECT_SHOP_SELLS = 6452, + // 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 }; From e5c61f2a44e057aa1122e98130c45975f2b732b3 Mon Sep 17 00:00:00 2001 From: Michael Steenbeek Date: Thu, 27 May 2021 22:38:35 +0200 Subject: [PATCH 7/7] Close #14511: Unlock all music with 'Unlock operating limits' cheat --- distribution/changelog.txt | 1 + src/openrct2-ui/windows/Ride.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/distribution/changelog.txt b/distribution/changelog.txt index f7cd4c99cf..d0c18b7646 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -25,6 +25,7 @@ - Fix: [#14682] Crash when painting Swinging Ships with invalid subtype. - Fix: [#14707] Crash when window is closed during text input. - Fix: [#14710] Ride/Track Design preview does not show if it costs more money than available. +- Improved: [#14511] “Unlock operating limits” cheat now also unlocks all music. - Improved: [#14712, #14716]: Improve startup times. 0.3.3 (2021-03-13) diff --git a/src/openrct2-ui/windows/Ride.cpp b/src/openrct2-ui/windows/Ride.cpp index 4d6d9dc1c3..570a782d2a 100644 --- a/src/openrct2-ui/windows/Ride.cpp +++ b/src/openrct2-ui/windows/Ride.cpp @@ -5031,7 +5031,7 @@ static void window_ride_music_mousedown(rct_window* w, rct_widgetindex widgetInd } } - if (musicObj->SupportsRideType(ride->type)) + if (gCheatsFastLiftHill || musicObj->SupportsRideType(ride->type)) { musicOrder.push_back(i); }