mirror of https://github.com/OpenRCT2/OpenRCT2.git
Remove vehicle_colour and replace references to VehicleColour (#16055)
This is done because we had two identical structs: vehicle_colour and VehicleColour. We now only use VehicleColour. See: #16028
This commit is contained in:
parent
25cfa06830
commit
c2fa54057a
|
@ -178,9 +178,9 @@ enum {
|
||||||
WIDX_VEHICLE_COLOUR_SCHEME_DROPDOWN,
|
WIDX_VEHICLE_COLOUR_SCHEME_DROPDOWN,
|
||||||
WIDX_VEHICLE_COLOUR_INDEX,
|
WIDX_VEHICLE_COLOUR_INDEX,
|
||||||
WIDX_VEHICLE_COLOUR_INDEX_DROPDOWN,
|
WIDX_VEHICLE_COLOUR_INDEX_DROPDOWN,
|
||||||
WIDX_VEHICLE_MAIN_COLOUR,
|
WIDX_VEHICLE_BODY_COLOR,
|
||||||
WIDX_VEHICLE_ADDITIONAL_COLOUR_1,
|
WIDX_VEHICLE_TRIM_COLOUR,
|
||||||
WIDX_VEHICLE_ADDITIONAL_COLOUR_2,
|
WIDX_VEHICLE_TERNARY_COLOUR,
|
||||||
|
|
||||||
WIDX_PLAY_MUSIC = 14,
|
WIDX_PLAY_MUSIC = 14,
|
||||||
WIDX_MUSIC,
|
WIDX_MUSIC,
|
||||||
|
@ -463,9 +463,9 @@ static constexpr const uint64_t window_ride_page_enabled_widgets[] = {
|
||||||
(1ULL << WIDX_VEHICLE_COLOUR_SCHEME_DROPDOWN) |
|
(1ULL << WIDX_VEHICLE_COLOUR_SCHEME_DROPDOWN) |
|
||||||
(1ULL << WIDX_VEHICLE_COLOUR_INDEX) |
|
(1ULL << WIDX_VEHICLE_COLOUR_INDEX) |
|
||||||
(1ULL << WIDX_VEHICLE_COLOUR_INDEX_DROPDOWN) |
|
(1ULL << WIDX_VEHICLE_COLOUR_INDEX_DROPDOWN) |
|
||||||
(1ULL << WIDX_VEHICLE_MAIN_COLOUR) |
|
(1ULL << WIDX_VEHICLE_BODY_COLOR) |
|
||||||
(1ULL << WIDX_VEHICLE_ADDITIONAL_COLOUR_1) |
|
(1ULL << WIDX_VEHICLE_TRIM_COLOUR) |
|
||||||
(1ULL << WIDX_VEHICLE_ADDITIONAL_COLOUR_2),
|
(1ULL << WIDX_VEHICLE_TERNARY_COLOUR),
|
||||||
MAIN_RIDE_ENABLED_WIDGETS |
|
MAIN_RIDE_ENABLED_WIDGETS |
|
||||||
(1ULL << WIDX_PLAY_MUSIC) |
|
(1ULL << WIDX_PLAY_MUSIC) |
|
||||||
(1ULL << WIDX_MUSIC) |
|
(1ULL << WIDX_MUSIC) |
|
||||||
|
@ -1046,7 +1046,7 @@ static void WindowRideDrawTabVehicle(rct_drawpixelinfo* dpi, rct_window* w)
|
||||||
rct_ride_entry_vehicle* rideVehicleEntry = &rideEntry->vehicles[vehicle];
|
rct_ride_entry_vehicle* rideVehicleEntry = &rideEntry->vehicles[vehicle];
|
||||||
|
|
||||||
auto vehicleId = ((ride->colour_scheme_type & 3) == VEHICLE_COLOUR_SCHEME_PER_VEHICLE) ? rideEntry->tab_vehicle : 0;
|
auto vehicleId = ((ride->colour_scheme_type & 3) == VEHICLE_COLOUR_SCHEME_PER_VEHICLE) ? rideEntry->tab_vehicle : 0;
|
||||||
vehicle_colour vehicleColour = ride_get_vehicle_colour(ride, vehicleId);
|
VehicleColour vehicleColour = ride_get_vehicle_colour(ride, vehicleId);
|
||||||
int32_t spriteIndex = 32;
|
int32_t spriteIndex = 32;
|
||||||
if (w->page == WINDOW_RIDE_PAGE_VEHICLE)
|
if (w->page == WINDOW_RIDE_PAGE_VEHICLE)
|
||||||
spriteIndex += w->frame_no;
|
spriteIndex += w->frame_no;
|
||||||
|
@ -1054,10 +1054,10 @@ static void WindowRideDrawTabVehicle(rct_drawpixelinfo* dpi, rct_window* w)
|
||||||
spriteIndex &= rideVehicleEntry->rotation_frame_mask;
|
spriteIndex &= rideVehicleEntry->rotation_frame_mask;
|
||||||
spriteIndex *= rideVehicleEntry->base_num_frames;
|
spriteIndex *= rideVehicleEntry->base_num_frames;
|
||||||
spriteIndex += rideVehicleEntry->base_image_id;
|
spriteIndex += rideVehicleEntry->base_image_id;
|
||||||
spriteIndex |= (vehicleColour.additional_1 << 24) | (vehicleColour.main << 19);
|
spriteIndex |= (vehicleColour.Trim << 24) | (vehicleColour.Body << 19);
|
||||||
spriteIndex |= IMAGE_TYPE_REMAP_2_PLUS;
|
spriteIndex |= IMAGE_TYPE_REMAP_2_PLUS;
|
||||||
|
|
||||||
gfx_draw_sprite(&clipDPI, ImageId::FromUInt32(spriteIndex, vehicleColour.additional_2), screenCoords);
|
gfx_draw_sprite(&clipDPI, ImageId::FromUInt32(spriteIndex, vehicleColour.Ternary), screenCoords);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3070,7 +3070,7 @@ static void WindowRideVehicleScrollpaint(rct_window* w, rct_drawpixelinfo* dpi,
|
||||||
vehicleColourIndex = j;
|
vehicleColourIndex = j;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
vehicle_colour vehicleColour = ride_get_vehicle_colour(ride, vehicleColourIndex);
|
VehicleColour vehicleColour = ride_get_vehicle_colour(ride, vehicleColourIndex);
|
||||||
|
|
||||||
int32_t spriteIndex = 16;
|
int32_t spriteIndex = 16;
|
||||||
if (rideVehicleEntry->flags & VEHICLE_ENTRY_FLAG_USE_16_ROTATION_FRAMES)
|
if (rideVehicleEntry->flags & VEHICLE_ENTRY_FLAG_USE_16_ROTATION_FRAMES)
|
||||||
|
@ -3079,13 +3079,13 @@ static void WindowRideVehicleScrollpaint(rct_window* w, rct_drawpixelinfo* dpi,
|
||||||
spriteIndex &= rideVehicleEntry->rotation_frame_mask;
|
spriteIndex &= rideVehicleEntry->rotation_frame_mask;
|
||||||
spriteIndex *= rideVehicleEntry->base_num_frames;
|
spriteIndex *= rideVehicleEntry->base_num_frames;
|
||||||
spriteIndex += rideVehicleEntry->base_image_id;
|
spriteIndex += rideVehicleEntry->base_image_id;
|
||||||
spriteIndex |= (vehicleColour.additional_1 << 24) | (vehicleColour.main << 19);
|
spriteIndex |= (vehicleColour.Trim << 24) | (vehicleColour.Body << 19);
|
||||||
spriteIndex |= IMAGE_TYPE_REMAP_2_PLUS;
|
spriteIndex |= IMAGE_TYPE_REMAP_2_PLUS;
|
||||||
|
|
||||||
nextSpriteToDraw->x = x;
|
nextSpriteToDraw->x = x;
|
||||||
nextSpriteToDraw->y = y;
|
nextSpriteToDraw->y = y;
|
||||||
nextSpriteToDraw->sprite_index = spriteIndex;
|
nextSpriteToDraw->sprite_index = spriteIndex;
|
||||||
nextSpriteToDraw->tertiary_colour = vehicleColour.additional_2;
|
nextSpriteToDraw->tertiary_colour = vehicleColour.Ternary;
|
||||||
nextSpriteToDraw++;
|
nextSpriteToDraw++;
|
||||||
|
|
||||||
x += rideVehicleEntry->spacing / 17432;
|
x += rideVehicleEntry->spacing / 17432;
|
||||||
|
@ -4312,7 +4312,7 @@ static void WindowRideColourResize(rct_window* w)
|
||||||
*/
|
*/
|
||||||
static void WindowRideColourMousedown(rct_window* w, rct_widgetindex widgetIndex, rct_widget* widget)
|
static void WindowRideColourMousedown(rct_window* w, rct_widgetindex widgetIndex, rct_widget* widget)
|
||||||
{
|
{
|
||||||
vehicle_colour vehicleColour;
|
VehicleColour vehicleColour;
|
||||||
int32_t i, numItems;
|
int32_t i, numItems;
|
||||||
rct_string_id stringId;
|
rct_string_id stringId;
|
||||||
|
|
||||||
|
@ -4425,17 +4425,17 @@ static void WindowRideColourMousedown(rct_window* w, rct_widgetindex widgetIndex
|
||||||
|
|
||||||
Dropdown::SetChecked(w->vehicleIndex, true);
|
Dropdown::SetChecked(w->vehicleIndex, true);
|
||||||
break;
|
break;
|
||||||
case WIDX_VEHICLE_MAIN_COLOUR:
|
case WIDX_VEHICLE_BODY_COLOR:
|
||||||
vehicleColour = ride_get_vehicle_colour(ride, w->vehicleIndex);
|
vehicleColour = ride_get_vehicle_colour(ride, w->vehicleIndex);
|
||||||
WindowDropdownShowColour(w, widget, w->colours[1], vehicleColour.main);
|
WindowDropdownShowColour(w, widget, w->colours[1], vehicleColour.Body);
|
||||||
break;
|
break;
|
||||||
case WIDX_VEHICLE_ADDITIONAL_COLOUR_1:
|
case WIDX_VEHICLE_TRIM_COLOUR:
|
||||||
vehicleColour = ride_get_vehicle_colour(ride, w->vehicleIndex);
|
vehicleColour = ride_get_vehicle_colour(ride, w->vehicleIndex);
|
||||||
WindowDropdownShowColour(w, widget, w->colours[1], vehicleColour.additional_1);
|
WindowDropdownShowColour(w, widget, w->colours[1], vehicleColour.Trim);
|
||||||
break;
|
break;
|
||||||
case WIDX_VEHICLE_ADDITIONAL_COLOUR_2:
|
case WIDX_VEHICLE_TERNARY_COLOUR:
|
||||||
vehicleColour = ride_get_vehicle_colour(ride, w->vehicleIndex);
|
vehicleColour = ride_get_vehicle_colour(ride, w->vehicleIndex);
|
||||||
WindowDropdownShowColour(w, widget, w->colours[1], vehicleColour.additional_2);
|
WindowDropdownShowColour(w, widget, w->colours[1], vehicleColour.Ternary);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4517,21 +4517,21 @@ static void WindowRideColourDropdown(rct_window* w, rct_widgetindex widgetIndex,
|
||||||
w->vehicleIndex = dropdownIndex;
|
w->vehicleIndex = dropdownIndex;
|
||||||
w->Invalidate();
|
w->Invalidate();
|
||||||
break;
|
break;
|
||||||
case WIDX_VEHICLE_MAIN_COLOUR:
|
case WIDX_VEHICLE_BODY_COLOR:
|
||||||
{
|
{
|
||||||
auto rideSetAppearanceAction = RideSetAppearanceAction(
|
auto rideSetAppearanceAction = RideSetAppearanceAction(
|
||||||
rideId, RideSetAppearanceType::VehicleColourBody, dropdownIndex, w->vehicleIndex);
|
rideId, RideSetAppearanceType::VehicleColourBody, dropdownIndex, w->vehicleIndex);
|
||||||
GameActions::Execute(&rideSetAppearanceAction);
|
GameActions::Execute(&rideSetAppearanceAction);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WIDX_VEHICLE_ADDITIONAL_COLOUR_1:
|
case WIDX_VEHICLE_TRIM_COLOUR:
|
||||||
{
|
{
|
||||||
auto rideSetAppearanceAction = RideSetAppearanceAction(
|
auto rideSetAppearanceAction = RideSetAppearanceAction(
|
||||||
rideId, RideSetAppearanceType::VehicleColourTrim, dropdownIndex, w->vehicleIndex);
|
rideId, RideSetAppearanceType::VehicleColourTrim, dropdownIndex, w->vehicleIndex);
|
||||||
GameActions::Execute(&rideSetAppearanceAction);
|
GameActions::Execute(&rideSetAppearanceAction);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WIDX_VEHICLE_ADDITIONAL_COLOUR_2:
|
case WIDX_VEHICLE_TERNARY_COLOUR:
|
||||||
{
|
{
|
||||||
auto rideSetAppearanceAction = RideSetAppearanceAction(
|
auto rideSetAppearanceAction = RideSetAppearanceAction(
|
||||||
rideId, RideSetAppearanceType::VehicleColourTernary, dropdownIndex, w->vehicleIndex);
|
rideId, RideSetAppearanceType::VehicleColourTernary, dropdownIndex, w->vehicleIndex);
|
||||||
|
@ -4580,7 +4580,7 @@ static void WindowRideColourTooldrag(rct_window* w, rct_widgetindex widgetIndex,
|
||||||
static void WindowRideColourInvalidate(rct_window* w)
|
static void WindowRideColourInvalidate(rct_window* w)
|
||||||
{
|
{
|
||||||
TrackColour trackColour;
|
TrackColour trackColour;
|
||||||
vehicle_colour vehicleColour;
|
VehicleColour vehicleColour;
|
||||||
|
|
||||||
auto widgets = window_ride_page_widgets[w->page];
|
auto widgets = window_ride_page_widgets[w->page];
|
||||||
if (w->widgets != widgets)
|
if (w->widgets != widgets)
|
||||||
|
@ -4709,47 +4709,46 @@ static void WindowRideColourInvalidate(rct_window* w)
|
||||||
vehicleColour = ride_get_vehicle_colour(ride, w->vehicleIndex);
|
vehicleColour = ride_get_vehicle_colour(ride, w->vehicleIndex);
|
||||||
|
|
||||||
window_ride_colour_widgets[WIDX_VEHICLE_PREVIEW].type = WindowWidgetType::Scroll;
|
window_ride_colour_widgets[WIDX_VEHICLE_PREVIEW].type = WindowWidgetType::Scroll;
|
||||||
window_ride_colour_widgets[WIDX_VEHICLE_MAIN_COLOUR].type = WindowWidgetType::ColourBtn;
|
window_ride_colour_widgets[WIDX_VEHICLE_BODY_COLOR].type = WindowWidgetType::ColourBtn;
|
||||||
window_ride_colour_widgets[WIDX_VEHICLE_MAIN_COLOUR].image = WindowRideGetColourButtonImage(vehicleColour.main);
|
window_ride_colour_widgets[WIDX_VEHICLE_BODY_COLOR].image = WindowRideGetColourButtonImage(vehicleColour.Body);
|
||||||
|
|
||||||
bool allowChangingAdditionalColour1 = false;
|
bool allowChangingTrimColour = false;
|
||||||
bool allowChangingAdditionalColour2 = false;
|
bool allowChangingTernaryColour = false;
|
||||||
|
|
||||||
for (int32_t i = 0; i < ride->num_cars_per_train; i++)
|
for (int32_t i = 0; i < ride->num_cars_per_train; i++)
|
||||||
{
|
{
|
||||||
uint8_t vehicleTypeIndex = ride_entry_get_vehicle_at_position(ride->subtype, ride->num_cars_per_train, i);
|
uint8_t vehicleTypeIndex = ride_entry_get_vehicle_at_position(ride->subtype, ride->num_cars_per_train, i);
|
||||||
|
|
||||||
if (rideEntry->vehicles[vehicleTypeIndex].flags & VEHICLE_ENTRY_FLAG_ENABLE_ADDITIONAL_COLOUR_1)
|
if (rideEntry->vehicles[vehicleTypeIndex].flags & VEHICLE_ENTRY_FLAG_ENABLE_TRIM_COLOUR)
|
||||||
{
|
{
|
||||||
allowChangingAdditionalColour1 = true;
|
allowChangingTrimColour = true;
|
||||||
}
|
}
|
||||||
if (rideEntry->vehicles[vehicleTypeIndex].flags & VEHICLE_ENTRY_FLAG_ENABLE_ADDITIONAL_COLOUR_2)
|
if (rideEntry->vehicles[vehicleTypeIndex].flags & VEHICLE_ENTRY_FLAG_ENABLE_TERNARY_COLOUR)
|
||||||
{
|
{
|
||||||
allowChangingAdditionalColour2 = true;
|
allowChangingTernaryColour = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Additional colours
|
// Additional colours
|
||||||
if (allowChangingAdditionalColour1)
|
if (allowChangingTrimColour)
|
||||||
{
|
{
|
||||||
window_ride_colour_widgets[WIDX_VEHICLE_ADDITIONAL_COLOUR_1].type = WindowWidgetType::ColourBtn;
|
window_ride_colour_widgets[WIDX_VEHICLE_TRIM_COLOUR].type = WindowWidgetType::ColourBtn;
|
||||||
window_ride_colour_widgets[WIDX_VEHICLE_ADDITIONAL_COLOUR_1].image = WindowRideGetColourButtonImage(
|
window_ride_colour_widgets[WIDX_VEHICLE_TRIM_COLOUR].image = WindowRideGetColourButtonImage(vehicleColour.Trim);
|
||||||
vehicleColour.additional_1);
|
if (allowChangingTernaryColour)
|
||||||
if (allowChangingAdditionalColour2)
|
|
||||||
{
|
{
|
||||||
window_ride_colour_widgets[WIDX_VEHICLE_ADDITIONAL_COLOUR_2].type = WindowWidgetType::ColourBtn;
|
window_ride_colour_widgets[WIDX_VEHICLE_TERNARY_COLOUR].type = WindowWidgetType::ColourBtn;
|
||||||
window_ride_colour_widgets[WIDX_VEHICLE_ADDITIONAL_COLOUR_2].image = WindowRideGetColourButtonImage(
|
window_ride_colour_widgets[WIDX_VEHICLE_TERNARY_COLOUR].image = WindowRideGetColourButtonImage(
|
||||||
vehicleColour.additional_2);
|
vehicleColour.Ternary);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
window_ride_colour_widgets[WIDX_VEHICLE_ADDITIONAL_COLOUR_2].type = WindowWidgetType::Empty;
|
window_ride_colour_widgets[WIDX_VEHICLE_TERNARY_COLOUR].type = WindowWidgetType::Empty;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
window_ride_colour_widgets[WIDX_VEHICLE_ADDITIONAL_COLOUR_1].type = WindowWidgetType::Empty;
|
window_ride_colour_widgets[WIDX_VEHICLE_TRIM_COLOUR].type = WindowWidgetType::Empty;
|
||||||
window_ride_colour_widgets[WIDX_VEHICLE_ADDITIONAL_COLOUR_2].type = WindowWidgetType::Empty;
|
window_ride_colour_widgets[WIDX_VEHICLE_TERNARY_COLOUR].type = WindowWidgetType::Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Vehicle colour scheme type
|
// Vehicle colour scheme type
|
||||||
|
@ -4793,9 +4792,9 @@ static void WindowRideColourInvalidate(rct_window* w)
|
||||||
window_ride_colour_widgets[WIDX_VEHICLE_COLOUR_SCHEME_DROPDOWN].type = WindowWidgetType::Empty;
|
window_ride_colour_widgets[WIDX_VEHICLE_COLOUR_SCHEME_DROPDOWN].type = WindowWidgetType::Empty;
|
||||||
window_ride_colour_widgets[WIDX_VEHICLE_COLOUR_INDEX].type = WindowWidgetType::Empty;
|
window_ride_colour_widgets[WIDX_VEHICLE_COLOUR_INDEX].type = WindowWidgetType::Empty;
|
||||||
window_ride_colour_widgets[WIDX_VEHICLE_COLOUR_INDEX_DROPDOWN].type = WindowWidgetType::Empty;
|
window_ride_colour_widgets[WIDX_VEHICLE_COLOUR_INDEX_DROPDOWN].type = WindowWidgetType::Empty;
|
||||||
window_ride_colour_widgets[WIDX_VEHICLE_MAIN_COLOUR].type = WindowWidgetType::Empty;
|
window_ride_colour_widgets[WIDX_VEHICLE_BODY_COLOR].type = WindowWidgetType::Empty;
|
||||||
window_ride_colour_widgets[WIDX_VEHICLE_ADDITIONAL_COLOUR_1].type = WindowWidgetType::Empty;
|
window_ride_colour_widgets[WIDX_VEHICLE_TRIM_COLOUR].type = WindowWidgetType::Empty;
|
||||||
window_ride_colour_widgets[WIDX_VEHICLE_ADDITIONAL_COLOUR_2].type = WindowWidgetType::Empty;
|
window_ride_colour_widgets[WIDX_VEHICLE_TERNARY_COLOUR].type = WindowWidgetType::Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
ft.Rewind();
|
ft.Rewind();
|
||||||
|
@ -4949,9 +4948,9 @@ static void WindowRideColourScrollpaint(rct_window* w, rct_drawpixelinfo* dpi, i
|
||||||
spriteIndex &= rideVehicleEntry->rotation_frame_mask;
|
spriteIndex &= rideVehicleEntry->rotation_frame_mask;
|
||||||
spriteIndex *= rideVehicleEntry->base_num_frames;
|
spriteIndex *= rideVehicleEntry->base_num_frames;
|
||||||
spriteIndex += rideVehicleEntry->base_image_id;
|
spriteIndex += rideVehicleEntry->base_image_id;
|
||||||
spriteIndex |= (vehicleColour.additional_1 << 24) | (vehicleColour.main << 19);
|
spriteIndex |= (vehicleColour.Trim << 24) | (vehicleColour.Body << 19);
|
||||||
spriteIndex |= IMAGE_TYPE_REMAP_2_PLUS;
|
spriteIndex |= IMAGE_TYPE_REMAP_2_PLUS;
|
||||||
gfx_draw_sprite(dpi, ImageId::FromUInt32(spriteIndex, vehicleColour.additional_2), screenCoords);
|
gfx_draw_sprite(dpi, ImageId::FromUInt32(spriteIndex, vehicleColour.Ternary), screenCoords);
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
|
|
@ -107,7 +107,7 @@ void RideObject::ReadLegacy(IReadObjectContext* context, IStream* stream)
|
||||||
|
|
||||||
for (uint8_t i = 0; i < coloursCount; i++)
|
for (uint8_t i = 0; i < coloursCount; i++)
|
||||||
{
|
{
|
||||||
_presetColours.list[i] = stream->ReadValue<vehicle_colour>();
|
_presetColours.list[i] = stream->ReadValue<VehicleColour>();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsRideTypeShopOrFacility(_legacyType.ride_type[0]))
|
if (IsRideTypeShopOrFacility(_legacyType.ride_type[0]))
|
||||||
|
@ -824,14 +824,14 @@ rct_ride_entry_vehicle RideObject::ReadJsonCar(json_t& jCar)
|
||||||
{ "isReverserPassengerCar", VEHICLE_ENTRY_FLAG_REVERSER_PASSENGER_CAR },
|
{ "isReverserPassengerCar", VEHICLE_ENTRY_FLAG_REVERSER_PASSENGER_CAR },
|
||||||
{ "hasInvertedSpriteSet", VEHICLE_ENTRY_FLAG_HAS_INVERTED_SPRITE_SET },
|
{ "hasInvertedSpriteSet", VEHICLE_ENTRY_FLAG_HAS_INVERTED_SPRITE_SET },
|
||||||
{ "hasDodgemInUseLights", VEHICLE_ENTRY_FLAG_DODGEM_INUSE_LIGHTS },
|
{ "hasDodgemInUseLights", VEHICLE_ENTRY_FLAG_DODGEM_INUSE_LIGHTS },
|
||||||
{ "hasAdditionalColour2", VEHICLE_ENTRY_FLAG_ENABLE_ADDITIONAL_COLOUR_2 },
|
{ "hasAdditionalColour2", VEHICLE_ENTRY_FLAG_ENABLE_TERNARY_COLOUR },
|
||||||
{ "recalculateSpriteBounds", VEHICLE_ENTRY_FLAG_RECALCULATE_SPRITE_BOUNDS },
|
{ "recalculateSpriteBounds", VEHICLE_ENTRY_FLAG_RECALCULATE_SPRITE_BOUNDS },
|
||||||
{ "VEHICLE_ENTRY_FLAG_11", VEHICLE_ENTRY_FLAG_USE_16_ROTATION_FRAMES },
|
{ "VEHICLE_ENTRY_FLAG_11", VEHICLE_ENTRY_FLAG_USE_16_ROTATION_FRAMES },
|
||||||
{ "overrideNumberOfVerticalFrames", VEHICLE_ENTRY_FLAG_OVERRIDE_NUM_VERTICAL_FRAMES },
|
{ "overrideNumberOfVerticalFrames", VEHICLE_ENTRY_FLAG_OVERRIDE_NUM_VERTICAL_FRAMES },
|
||||||
{ "spriteBoundsIncludeInvertedSet", VEHICLE_ENTRY_FLAG_SPRITE_BOUNDS_INCLUDE_INVERTED_SET },
|
{ "spriteBoundsIncludeInvertedSet", VEHICLE_ENTRY_FLAG_SPRITE_BOUNDS_INCLUDE_INVERTED_SET },
|
||||||
{ "hasAdditionalSpinningFrames", VEHICLE_ENTRY_FLAG_SPINNING_ADDITIONAL_FRAMES },
|
{ "hasAdditionalSpinningFrames", VEHICLE_ENTRY_FLAG_SPINNING_ADDITIONAL_FRAMES },
|
||||||
{ "isLift", VEHICLE_ENTRY_FLAG_LIFT },
|
{ "isLift", VEHICLE_ENTRY_FLAG_LIFT },
|
||||||
{ "hasAdditionalColour1", VEHICLE_ENTRY_FLAG_ENABLE_ADDITIONAL_COLOUR_1 },
|
{ "hasAdditionalColour1", VEHICLE_ENTRY_FLAG_ENABLE_TRIM_COLOUR },
|
||||||
{ "hasSwinging", VEHICLE_ENTRY_FLAG_SWINGING },
|
{ "hasSwinging", VEHICLE_ENTRY_FLAG_SWINGING },
|
||||||
{ "hasSpinning", VEHICLE_ENTRY_FLAG_SPINNING },
|
{ "hasSpinning", VEHICLE_ENTRY_FLAG_SPINNING },
|
||||||
{ "isPowered", VEHICLE_ENTRY_FLAG_POWERED },
|
{ "isPowered", VEHICLE_ENTRY_FLAG_POWERED },
|
||||||
|
@ -857,13 +857,13 @@ rct_ride_entry_vehicle RideObject::ReadJsonCar(json_t& jCar)
|
||||||
{ "VEHICLE_ENTRY_FLAG_5", VEHICLE_ENTRY_FLAG_REVERSER_PASSENGER_CAR },
|
{ "VEHICLE_ENTRY_FLAG_5", VEHICLE_ENTRY_FLAG_REVERSER_PASSENGER_CAR },
|
||||||
{ "VEHICLE_ENTRY_FLAG_HAS_INVERTED_SPRITE_SET", VEHICLE_ENTRY_FLAG_HAS_INVERTED_SPRITE_SET },
|
{ "VEHICLE_ENTRY_FLAG_HAS_INVERTED_SPRITE_SET", VEHICLE_ENTRY_FLAG_HAS_INVERTED_SPRITE_SET },
|
||||||
{ "VEHICLE_ENTRY_FLAG_DODGEM_INUSE_LIGHTS", VEHICLE_ENTRY_FLAG_DODGEM_INUSE_LIGHTS },
|
{ "VEHICLE_ENTRY_FLAG_DODGEM_INUSE_LIGHTS", VEHICLE_ENTRY_FLAG_DODGEM_INUSE_LIGHTS },
|
||||||
{ "VEHICLE_ENTRY_FLAG_ENABLE_ADDITIONAL_COLOUR_2", VEHICLE_ENTRY_FLAG_ENABLE_ADDITIONAL_COLOUR_2 },
|
{ "VEHICLE_ENTRY_FLAG_ENABLE_ADDITIONAL_COLOUR_2", VEHICLE_ENTRY_FLAG_ENABLE_TERNARY_COLOUR },
|
||||||
{ "VEHICLE_ENTRY_FLAG_10", VEHICLE_ENTRY_FLAG_RECALCULATE_SPRITE_BOUNDS },
|
{ "VEHICLE_ENTRY_FLAG_10", VEHICLE_ENTRY_FLAG_RECALCULATE_SPRITE_BOUNDS },
|
||||||
{ "VEHICLE_ENTRY_FLAG_OVERRIDE_NUM_VERTICAL_FRAMES", VEHICLE_ENTRY_FLAG_OVERRIDE_NUM_VERTICAL_FRAMES },
|
{ "VEHICLE_ENTRY_FLAG_OVERRIDE_NUM_VERTICAL_FRAMES", VEHICLE_ENTRY_FLAG_OVERRIDE_NUM_VERTICAL_FRAMES },
|
||||||
{ "VEHICLE_ENTRY_FLAG_13", VEHICLE_ENTRY_FLAG_SPRITE_BOUNDS_INCLUDE_INVERTED_SET },
|
{ "VEHICLE_ENTRY_FLAG_13", VEHICLE_ENTRY_FLAG_SPRITE_BOUNDS_INCLUDE_INVERTED_SET },
|
||||||
{ "VEHICLE_ENTRY_FLAG_SPINNING_ADDITIONAL_FRAMES", VEHICLE_ENTRY_FLAG_SPINNING_ADDITIONAL_FRAMES },
|
{ "VEHICLE_ENTRY_FLAG_SPINNING_ADDITIONAL_FRAMES", VEHICLE_ENTRY_FLAG_SPINNING_ADDITIONAL_FRAMES },
|
||||||
{ "VEHICLE_ENTRY_FLAG_LIFT", VEHICLE_ENTRY_FLAG_LIFT },
|
{ "VEHICLE_ENTRY_FLAG_LIFT", VEHICLE_ENTRY_FLAG_LIFT },
|
||||||
{ "VEHICLE_ENTRY_FLAG_ENABLE_ADDITIONAL_COLOUR_1", VEHICLE_ENTRY_FLAG_ENABLE_ADDITIONAL_COLOUR_1 },
|
{ "VEHICLE_ENTRY_FLAG_ENABLE_ADDITIONAL_COLOUR_1", VEHICLE_ENTRY_FLAG_ENABLE_TRIM_COLOUR },
|
||||||
{ "VEHICLE_ENTRY_FLAG_SWINGING", VEHICLE_ENTRY_FLAG_SWINGING },
|
{ "VEHICLE_ENTRY_FLAG_SWINGING", VEHICLE_ENTRY_FLAG_SWINGING },
|
||||||
{ "VEHICLE_ENTRY_FLAG_SPINNING", VEHICLE_ENTRY_FLAG_SPINNING },
|
{ "VEHICLE_ENTRY_FLAG_SPINNING", VEHICLE_ENTRY_FLAG_SPINNING },
|
||||||
{ "VEHICLE_ENTRY_FLAG_POWERED", VEHICLE_ENTRY_FLAG_POWERED },
|
{ "VEHICLE_ENTRY_FLAG_POWERED", VEHICLE_ENTRY_FLAG_POWERED },
|
||||||
|
@ -925,27 +925,27 @@ vehicle_colour_preset_list RideObject::ReadJsonCarColours(json_t& jCarColours)
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<vehicle_colour> RideObject::ReadJsonColourConfiguration(json_t& jColourConfig)
|
std::vector<VehicleColour> RideObject::ReadJsonColourConfiguration(json_t& jColourConfig)
|
||||||
{
|
{
|
||||||
std::vector<vehicle_colour> config;
|
std::vector<VehicleColour> config;
|
||||||
|
|
||||||
for (auto& jColours : jColourConfig)
|
for (auto& jColours : jColourConfig)
|
||||||
{
|
{
|
||||||
vehicle_colour carColour = {};
|
VehicleColour carColour = {};
|
||||||
|
|
||||||
auto colours = Json::AsArray(jColours);
|
auto colours = Json::AsArray(jColours);
|
||||||
if (colours.size() >= 1)
|
if (colours.size() >= 1)
|
||||||
{
|
{
|
||||||
carColour.main = Colour::FromString(Json::GetString(colours[0]));
|
carColour.Body = Colour::FromString(Json::GetString(colours[0]));
|
||||||
carColour.additional_1 = carColour.main;
|
carColour.Trim = carColour.Body;
|
||||||
carColour.additional_2 = carColour.main;
|
carColour.Ternary = carColour.Body;
|
||||||
if (colours.size() >= 2)
|
if (colours.size() >= 2)
|
||||||
{
|
{
|
||||||
carColour.additional_1 = Colour::FromString(Json::GetString(colours[1]));
|
carColour.Trim = Colour::FromString(Json::GetString(colours[1]));
|
||||||
}
|
}
|
||||||
if (colours.size() >= 3)
|
if (colours.size() >= 3)
|
||||||
{
|
{
|
||||||
carColour.additional_2 = Colour::FromString(Json::GetString(colours[2]));
|
carColour.Ternary = Colour::FromString(Json::GetString(colours[2]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
config.push_back(carColour);
|
config.push_back(carColour);
|
||||||
|
|
|
@ -54,7 +54,7 @@ private:
|
||||||
std::vector<rct_ride_entry_vehicle> ReadJsonCars(json_t& jCars);
|
std::vector<rct_ride_entry_vehicle> ReadJsonCars(json_t& jCars);
|
||||||
rct_ride_entry_vehicle ReadJsonCar(json_t& jCar);
|
rct_ride_entry_vehicle ReadJsonCar(json_t& jCar);
|
||||||
vehicle_colour_preset_list ReadJsonCarColours(json_t& jCarColours);
|
vehicle_colour_preset_list ReadJsonCarColours(json_t& jCarColours);
|
||||||
std::vector<vehicle_colour> ReadJsonColourConfiguration(json_t& jColourConfig);
|
std::vector<VehicleColour> ReadJsonColourConfiguration(json_t& jColourConfig);
|
||||||
|
|
||||||
static uint8_t CalculateNumVerticalFrames(const rct_ride_entry_vehicle* vehicleEntry);
|
static uint8_t CalculateNumVerticalFrames(const rct_ride_entry_vehicle* vehicleEntry);
|
||||||
static uint8_t CalculateNumHorizontalFrames(const rct_ride_entry_vehicle* vehicleEntry);
|
static uint8_t CalculateNumHorizontalFrames(const rct_ride_entry_vehicle* vehicleEntry);
|
||||||
|
|
|
@ -2092,26 +2092,20 @@ TrackColour ride_get_track_colour(Ride* ride, int32_t colourScheme)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
vehicle_colour ride_get_vehicle_colour(Ride* ride, int32_t vehicleIndex)
|
VehicleColour ride_get_vehicle_colour(Ride* ride, int32_t vehicleIndex)
|
||||||
{
|
{
|
||||||
vehicle_colour result;
|
|
||||||
|
|
||||||
// Prevent indexing array out of bounds
|
// Prevent indexing array out of bounds
|
||||||
vehicleIndex = std::min<int32_t>(vehicleIndex, MAX_CARS_PER_TRAIN);
|
vehicleIndex = std::min<int32_t>(vehicleIndex, MAX_CARS_PER_TRAIN);
|
||||||
|
return ride->vehicle_colours[vehicleIndex];
|
||||||
result.main = ride->vehicle_colours[vehicleIndex].Body;
|
|
||||||
result.additional_1 = ride->vehicle_colours[vehicleIndex].Trim;
|
|
||||||
result.additional_2 = ride->vehicle_colours[vehicleIndex].Ternary;
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool ride_does_vehicle_colour_exist(ObjectEntryIndex subType, vehicle_colour* vehicleColour)
|
static bool ride_does_vehicle_colour_exist(ObjectEntryIndex subType, VehicleColour* vehicleColour)
|
||||||
{
|
{
|
||||||
for (auto& ride : GetRideManager())
|
for (auto& ride : GetRideManager())
|
||||||
{
|
{
|
||||||
if (ride.subtype != subType)
|
if (ride.subtype != subType)
|
||||||
continue;
|
continue;
|
||||||
if (ride.vehicle_colours[0].Body != vehicleColour->main)
|
if (ride.vehicle_colours[0].Body != vehicleColour->Body)
|
||||||
continue;
|
continue;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -2139,7 +2133,7 @@ int32_t ride_get_unused_preset_vehicle_colour(ObjectEntryIndex subType)
|
||||||
{
|
{
|
||||||
uint8_t numColourConfigurations = presetList->count;
|
uint8_t numColourConfigurations = presetList->count;
|
||||||
int32_t randomConfigIndex = util_rand() % numColourConfigurations;
|
int32_t randomConfigIndex = util_rand() % numColourConfigurations;
|
||||||
vehicle_colour* preset = &presetList->list[randomConfigIndex];
|
VehicleColour* preset = &presetList->list[randomConfigIndex];
|
||||||
|
|
||||||
if (ride_does_vehicle_colour_exist(subType, preset))
|
if (ride_does_vehicle_colour_exist(subType, preset))
|
||||||
{
|
{
|
||||||
|
@ -2163,10 +2157,8 @@ void ride_set_vehicle_colours_to_random_preset(Ride* ride, uint8_t preset_index)
|
||||||
assert(preset_index < presetList->count);
|
assert(preset_index < presetList->count);
|
||||||
|
|
||||||
ride->colour_scheme_type = RIDE_COLOUR_SCHEME_ALL_SAME;
|
ride->colour_scheme_type = RIDE_COLOUR_SCHEME_ALL_SAME;
|
||||||
vehicle_colour* preset = &presetList->list[preset_index];
|
VehicleColour* preset = &presetList->list[preset_index];
|
||||||
ride->vehicle_colours[0].Body = preset->main;
|
ride->vehicle_colours[0] = *preset;
|
||||||
ride->vehicle_colours[0].Trim = preset->additional_1;
|
|
||||||
ride->vehicle_colours[0].Ternary = preset->additional_2;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -2174,10 +2166,8 @@ void ride_set_vehicle_colours_to_random_preset(Ride* ride, uint8_t preset_index)
|
||||||
uint32_t count = std::min(presetList->count, static_cast<uint8_t>(32));
|
uint32_t count = std::min(presetList->count, static_cast<uint8_t>(32));
|
||||||
for (uint32_t i = 0; i < count; i++)
|
for (uint32_t i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
vehicle_colour* preset = &presetList->list[i];
|
VehicleColour* preset = &presetList->list[i];
|
||||||
ride->vehicle_colours[i].Body = preset->main;
|
ride->vehicle_colours[i] = *preset;
|
||||||
ride->vehicle_colours[i].Trim = preset->additional_1;
|
|
||||||
ride->vehicle_colours[i].Ternary = preset->additional_2;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4263,7 +4253,7 @@ void Ride::SetColourPreset(uint8_t index)
|
||||||
if (rideEntry != nullptr && rideEntry->vehicle_preset_list->count > 0)
|
if (rideEntry != nullptr && rideEntry->vehicle_preset_list->count > 0)
|
||||||
{
|
{
|
||||||
auto list = rideEntry->vehicle_preset_list->list[0];
|
auto list = rideEntry->vehicle_preset_list->list[0];
|
||||||
colours = { list.main, list.additional_1, list.additional_2 };
|
colours = { list.Body, list.Trim, list.Ternary };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (index < colourPresets->count)
|
else if (index < colourPresets->count)
|
||||||
|
|
|
@ -1037,7 +1037,7 @@ Staff* ride_get_assigned_mechanic(Ride* ride);
|
||||||
int32_t ride_get_total_length(const Ride* ride);
|
int32_t ride_get_total_length(const Ride* ride);
|
||||||
int32_t ride_get_total_time(Ride* ride);
|
int32_t ride_get_total_time(Ride* ride);
|
||||||
TrackColour ride_get_track_colour(Ride* ride, int32_t colourScheme);
|
TrackColour ride_get_track_colour(Ride* ride, int32_t colourScheme);
|
||||||
vehicle_colour ride_get_vehicle_colour(Ride* ride, int32_t vehicleIndex);
|
VehicleColour ride_get_vehicle_colour(Ride* ride, int32_t vehicleIndex);
|
||||||
int32_t ride_get_unused_preset_vehicle_colour(ObjectEntryIndex subType);
|
int32_t ride_get_unused_preset_vehicle_colour(ObjectEntryIndex subType);
|
||||||
void ride_set_vehicle_colours_to_random_preset(Ride* ride, uint8_t preset_index);
|
void ride_set_vehicle_colours_to_random_preset(Ride* ride, uint8_t preset_index);
|
||||||
void ride_measurements_update();
|
void ride_measurements_update();
|
||||||
|
|
|
@ -17,10 +17,3 @@ struct TrackColour
|
||||||
uint8_t additional;
|
uint8_t additional;
|
||||||
uint8_t supports;
|
uint8_t supports;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct vehicle_colour
|
|
||||||
{
|
|
||||||
uint8_t main;
|
|
||||||
uint8_t additional_1;
|
|
||||||
uint8_t additional_2;
|
|
||||||
};
|
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include "../rct2/Limits.h"
|
#include "../rct2/Limits.h"
|
||||||
#include "RideColour.h"
|
#include "RideColour.h"
|
||||||
#include "ShopItem.h"
|
#include "ShopItem.h"
|
||||||
|
#include "VehicleColour.h"
|
||||||
#include "VehicleEntry.h"
|
#include "VehicleEntry.h"
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
@ -38,7 +39,7 @@ struct track_colour_preset_list
|
||||||
struct vehicle_colour_preset_list
|
struct vehicle_colour_preset_list
|
||||||
{
|
{
|
||||||
uint8_t count;
|
uint8_t count;
|
||||||
vehicle_colour list[256];
|
VehicleColour list[256];
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -428,7 +428,7 @@ enum : uint32_t
|
||||||
VEHICLE_ENTRY_FLAG_DODGEM_INUSE_LIGHTS = 1
|
VEHICLE_ENTRY_FLAG_DODGEM_INUSE_LIGHTS = 1
|
||||||
<< 7, // When set the vehicle has an additional frame for when in use. Used only by dodgems.
|
<< 7, // When set the vehicle has an additional frame for when in use. Used only by dodgems.
|
||||||
VEHICLE_ENTRY_FLAG_ALLOW_DOORS_DEPRECATED = 1 << 8, // Not used any more - every vehicle will now work with doors.
|
VEHICLE_ENTRY_FLAG_ALLOW_DOORS_DEPRECATED = 1 << 8, // Not used any more - every vehicle will now work with doors.
|
||||||
VEHICLE_ENTRY_FLAG_ENABLE_ADDITIONAL_COLOUR_2 = 1 << 9,
|
VEHICLE_ENTRY_FLAG_ENABLE_TERNARY_COLOUR = 1 << 9,
|
||||||
VEHICLE_ENTRY_FLAG_RECALCULATE_SPRITE_BOUNDS = 1 << 10, // Only used during loading of the objects.
|
VEHICLE_ENTRY_FLAG_RECALCULATE_SPRITE_BOUNDS = 1 << 10, // Only used during loading of the objects.
|
||||||
VEHICLE_ENTRY_FLAG_USE_16_ROTATION_FRAMES = 1
|
VEHICLE_ENTRY_FLAG_USE_16_ROTATION_FRAMES = 1
|
||||||
<< 11, // Instead of the default 32 rotation frames. Only used for boat hire and works only for non sloped sprites.
|
<< 11, // Instead of the default 32 rotation frames. Only used for boat hire and works only for non sloped sprites.
|
||||||
|
@ -442,7 +442,7 @@ enum : uint32_t
|
||||||
<< 14, // 16x additional frames for vehicle. A spinning item with additional frames must always face forward to
|
<< 14, // 16x additional frames for vehicle. A spinning item with additional frames must always face forward to
|
||||||
// load/unload. Spinning without can load/unload at 4 rotations.
|
// load/unload. Spinning without can load/unload at 4 rotations.
|
||||||
VEHICLE_ENTRY_FLAG_LIFT = 1 << 15,
|
VEHICLE_ENTRY_FLAG_LIFT = 1 << 15,
|
||||||
VEHICLE_ENTRY_FLAG_ENABLE_ADDITIONAL_COLOUR_1 = 1 << 16,
|
VEHICLE_ENTRY_FLAG_ENABLE_TRIM_COLOUR = 1 << 16,
|
||||||
VEHICLE_ENTRY_FLAG_SWINGING = 1 << 17,
|
VEHICLE_ENTRY_FLAG_SWINGING = 1 << 17,
|
||||||
VEHICLE_ENTRY_FLAG_SPINNING = 1 << 18,
|
VEHICLE_ENTRY_FLAG_SPINNING = 1 << 18,
|
||||||
VEHICLE_ENTRY_FLAG_POWERED = 1 << 19,
|
VEHICLE_ENTRY_FLAG_POWERED = 1 << 19,
|
||||||
|
|
Loading…
Reference in New Issue