Skip to content

Commit

Permalink
Split colour and translucent flag in theme JSON
Browse files Browse the repository at this point in the history
  • Loading branch information
Gymnasiast committed May 18, 2024
1 parent be9509e commit 57d1b15
Showing 1 changed file with 19 additions and 6 deletions.
25 changes: 19 additions & 6 deletions src/openrct2-ui/interface/Theme.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -296,15 +296,19 @@ json_t UIThemeWindowEntry::ToJson() const
json_t jsonColours = json_t::array();
for (uint8_t i = 0; i < wtDesc->NumColours; i++)
{
auto colour = Theme.Colours[i].toUint16();
jsonColours.emplace_back(colour);
json_t jsonEntry = {
{ "colour", Theme.Colours[i].colour },
{ "translucent", Theme.Colours[i].hasFlag(ColourFlag::translucent)}
};

jsonColours.emplace_back(jsonEntry);
}

json_t jsonEntry = {
json_t colourSettingsEntry = {
{ "colours", jsonColours },
};

return jsonEntry;
return colourSettingsEntry;
}

UIThemeWindowEntry UIThemeWindowEntry::FromJson(const WindowThemeDesc* wtDesc, json_t& jsonData, uint8_t version)
Expand All @@ -327,11 +331,20 @@ UIThemeWindowEntry UIThemeWindowEntry::FromJson(const WindowThemeDesc* wtDesc, j

for (size_t i = 0; i < colourCount; i++)
{
auto number = Json::GetNumber<uint16_t>(jsonColours[i]);
if (version == 0)
{
auto number = Json::GetNumber<uint8_t>(jsonColours[i]);
result.Theme.Colours[i] = ColourWithFlags::fromLegacy(number);
}
else
result.Theme.Colours[i] = ColourWithFlags::fromUint16(number);
{
auto colourObject = Json::AsObject(jsonColours[i]);
auto colour = Json::GetNumber<uint8_t>(colourObject["colour"]);
auto isTranslucent = Json::GetBoolean(colourObject["translucent"], false);
uint8_t flags = isTranslucent ? EnumToFlag(ColourFlag::translucent) : 0;

result.Theme.Colours[i] = { colour, flags };
}
}

return result;
Expand Down

0 comments on commit 57d1b15

Please sign in to comment.