mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-24 08:12:53 +01:00
Show tracks list of music styles in Object Selection
This commit is contained in:
@@ -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 #
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <openrct2/core/String.hpp>
|
||||
#include <openrct2/drawing/Drawing.h>
|
||||
#include <openrct2/localisation/Localisation.h>
|
||||
#include <openrct2/object/MusicObject.h>
|
||||
#include <openrct2/object/ObjectList.h>
|
||||
#include <openrct2/object/ObjectManager.h>
|
||||
#include <openrct2/object/ObjectRepository.h>
|
||||
@@ -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<rct_string_id>(STR_STRING);
|
||||
ft.Add<const char*>(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<MusicObject*>(_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<const char*>(track->Name.c_str());
|
||||
ft.Add<const char*>(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)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
@@ -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())
|
||||
{
|
||||
|
||||
@@ -18,6 +18,7 @@ class MusicObjectTrack
|
||||
{
|
||||
public:
|
||||
std::string Name;
|
||||
std::string Composer;
|
||||
ObjectAsset Asset;
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user