mirror of
https://github.com/OpenRCT2/OpenRCT2.git
synced 2024-09-06 01:21:35 +02:00
Extract colour lookup functions
This commit is contained in:
parent
d077cd1341
commit
51c812458e
2 changed files with 103 additions and 93 deletions
|
@ -648,88 +648,7 @@ private:
|
||||||
dst->mode = src->operating_mode;
|
dst->mode = src->operating_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Colours
|
SetRideColourScheme(dst, src);
|
||||||
dst->colour_scheme_type = src->colour_scheme;
|
|
||||||
if (_gameVersion == FILE_VERSION_RCT1)
|
|
||||||
{
|
|
||||||
dst->track_colour_main[0] = RCT1::GetColour(src->track_primary_colour);
|
|
||||||
dst->track_colour_additional[0] = RCT1::GetColour(src->track_secondary_colour);
|
|
||||||
dst->track_colour_supports[0] = RCT1::GetColour(src->track_support_colour);
|
|
||||||
|
|
||||||
// Balloons were always blue in the original RCT.
|
|
||||||
if (src->type == RCT1_RIDE_TYPE_BALLOON_STALL)
|
|
||||||
{
|
|
||||||
dst->track_colour_main[0] = COLOUR_LIGHT_BLUE;
|
|
||||||
}
|
|
||||||
else if (src->type == RCT1_RIDE_TYPE_RIVER_RAPIDS)
|
|
||||||
{
|
|
||||||
dst->track_colour_main[0] = COLOUR_WHITE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (sint32 i = 0; i < 4; i++)
|
|
||||||
{
|
|
||||||
dst->track_colour_main[i] = RCT1::GetColour(src->track_colour_main[i]);
|
|
||||||
dst->track_colour_additional[i] = RCT1::GetColour(src->track_colour_additional[i]);
|
|
||||||
dst->track_colour_supports[i] = RCT1::GetColour(src->track_colour_supports[i]);
|
|
||||||
}
|
|
||||||
// Entrance styles were introduced with AA. They correspond directly with those in RCT2.
|
|
||||||
dst->entrance_style = src->entrance_style;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_gameVersion < FILE_VERSION_RCT1_LL && dst->type == RIDE_TYPE_MERRY_GO_ROUND)
|
|
||||||
{
|
|
||||||
// The merry-go-round in pre-LL versions was always yellow with red
|
|
||||||
dst->vehicle_colours[0].body_colour = COLOUR_YELLOW;
|
|
||||||
dst->vehicle_colours[0].trim_colour = COLOUR_BRIGHT_RED;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (sint32 i = 0; i < 12; i++)
|
|
||||||
{
|
|
||||||
// RCT1 had no third colour
|
|
||||||
RCT1::RCT1VehicleColourSchemeCopyDescriptor colourSchemeCopyDescriptor = RCT1::GetColourSchemeCopyDescriptor(src->vehicle_type);
|
|
||||||
if (colourSchemeCopyDescriptor.colour1 == COPY_COLOUR_1)
|
|
||||||
{
|
|
||||||
dst->vehicle_colours[i].body_colour = RCT1::GetColour(src->vehicle_colours[i].body);
|
|
||||||
}
|
|
||||||
else if (colourSchemeCopyDescriptor.colour1 == COPY_COLOUR_2)
|
|
||||||
{
|
|
||||||
dst->vehicle_colours[i].body_colour = RCT1::GetColour(src->vehicle_colours[i].trim);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dst->vehicle_colours[i].body_colour = colourSchemeCopyDescriptor.colour1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (colourSchemeCopyDescriptor.colour2 == COPY_COLOUR_1)
|
|
||||||
{
|
|
||||||
dst->vehicle_colours[i].trim_colour = RCT1::GetColour(src->vehicle_colours[i].body);
|
|
||||||
}
|
|
||||||
else if (colourSchemeCopyDescriptor.colour2 == COPY_COLOUR_2)
|
|
||||||
{
|
|
||||||
dst->vehicle_colours[i].trim_colour = RCT1::GetColour(src->vehicle_colours[i].trim);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dst->vehicle_colours[i].trim_colour = colourSchemeCopyDescriptor.colour2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (colourSchemeCopyDescriptor.colour3 == COPY_COLOUR_1)
|
|
||||||
{
|
|
||||||
dst->vehicle_colours_extended[i] = RCT1::GetColour(src->vehicle_colours[i].body);
|
|
||||||
}
|
|
||||||
else if (colourSchemeCopyDescriptor.colour3 == COPY_COLOUR_2)
|
|
||||||
{
|
|
||||||
dst->vehicle_colours_extended[i] = RCT1::GetColour(src->vehicle_colours[i].trim);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
dst->vehicle_colours_extended[i] = colourSchemeCopyDescriptor.colour3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Maintenance
|
// Maintenance
|
||||||
dst->build_date = src->build_date;
|
dst->build_date = src->build_date;
|
||||||
|
@ -799,6 +718,92 @@ private:
|
||||||
dst->music_tune_id = 255;
|
dst->music_tune_id = 255;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SetRideColourScheme(rct_ride * dst, rct1_ride * src)
|
||||||
|
{
|
||||||
|
// Colours
|
||||||
|
dst->colour_scheme_type = src->colour_scheme;
|
||||||
|
if (_gameVersion == FILE_VERSION_RCT1)
|
||||||
|
{
|
||||||
|
dst->track_colour_main[0] = RCT1::GetColour(src->track_primary_colour);
|
||||||
|
dst->track_colour_additional[0] = RCT1::GetColour(src->track_secondary_colour);
|
||||||
|
dst->track_colour_supports[0] = RCT1::GetColour(src->track_support_colour);
|
||||||
|
|
||||||
|
// Balloons were always blue in the original RCT.
|
||||||
|
if (src->type == RCT1_RIDE_TYPE_BALLOON_STALL)
|
||||||
|
{
|
||||||
|
dst->track_colour_main[0] = COLOUR_LIGHT_BLUE;
|
||||||
|
}
|
||||||
|
else if (src->type == RCT1_RIDE_TYPE_RIVER_RAPIDS)
|
||||||
|
{
|
||||||
|
dst->track_colour_main[0] = COLOUR_WHITE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 4; i++)
|
||||||
|
{
|
||||||
|
dst->track_colour_main[i] = RCT1::GetColour(src->track_colour_main[i]);
|
||||||
|
dst->track_colour_additional[i] = RCT1::GetColour(src->track_colour_additional[i]);
|
||||||
|
dst->track_colour_supports[i] = RCT1::GetColour(src->track_colour_supports[i]);
|
||||||
|
}
|
||||||
|
// Entrance styles were introduced with AA. They correspond directly with those in RCT2.
|
||||||
|
dst->entrance_style = src->entrance_style;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_gameVersion < FILE_VERSION_RCT1_LL && dst->type == RIDE_TYPE_MERRY_GO_ROUND)
|
||||||
|
{
|
||||||
|
// The merry-go-round in pre-LL versions was always yellow with red
|
||||||
|
dst->vehicle_colours[0].body_colour = COLOUR_YELLOW;
|
||||||
|
dst->vehicle_colours[0].trim_colour = COLOUR_BRIGHT_RED;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 12; i++)
|
||||||
|
{
|
||||||
|
// RCT1 had no third colour
|
||||||
|
RCT1::RCT1VehicleColourSchemeCopyDescriptor colourSchemeCopyDescriptor = RCT1::GetColourSchemeCopyDescriptor(src->vehicle_type);
|
||||||
|
if (colourSchemeCopyDescriptor.colour1 == COPY_COLOUR_1)
|
||||||
|
{
|
||||||
|
dst->vehicle_colours[i].body_colour = RCT1::GetColour(src->vehicle_colours[i].body);
|
||||||
|
}
|
||||||
|
else if (colourSchemeCopyDescriptor.colour1 == COPY_COLOUR_2)
|
||||||
|
{
|
||||||
|
dst->vehicle_colours[i].body_colour = RCT1::GetColour(src->vehicle_colours[i].trim);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dst->vehicle_colours[i].body_colour = colourSchemeCopyDescriptor.colour1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (colourSchemeCopyDescriptor.colour2 == COPY_COLOUR_1)
|
||||||
|
{
|
||||||
|
dst->vehicle_colours[i].trim_colour = RCT1::GetColour(src->vehicle_colours[i].body);
|
||||||
|
}
|
||||||
|
else if (colourSchemeCopyDescriptor.colour2 == COPY_COLOUR_2)
|
||||||
|
{
|
||||||
|
dst->vehicle_colours[i].trim_colour = RCT1::GetColour(src->vehicle_colours[i].trim);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dst->vehicle_colours[i].trim_colour = colourSchemeCopyDescriptor.colour2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (colourSchemeCopyDescriptor.colour3 == COPY_COLOUR_1)
|
||||||
|
{
|
||||||
|
dst->vehicle_colours_extended[i] = RCT1::GetColour(src->vehicle_colours[i].body);
|
||||||
|
}
|
||||||
|
else if (colourSchemeCopyDescriptor.colour3 == COPY_COLOUR_2)
|
||||||
|
{
|
||||||
|
dst->vehicle_colours_extended[i] = RCT1::GetColour(src->vehicle_colours[i].trim);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dst->vehicle_colours_extended[i] = colourSchemeCopyDescriptor.colour3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void FixRideVehicleLinks(const uint16 * spriteIndexMap)
|
void FixRideVehicleLinks(const uint16 * spriteIndexMap)
|
||||||
{
|
{
|
||||||
uint8 i;
|
uint8 i;
|
||||||
|
@ -986,6 +991,20 @@ private:
|
||||||
dst->sub_state = src->sub_state;
|
dst->sub_state = src->sub_state;
|
||||||
dst->update_flags = src->update_flags;
|
dst->update_flags = src->update_flags;
|
||||||
|
|
||||||
|
SetVehicleColours(dst, src);
|
||||||
|
|
||||||
|
dst->mini_golf_current_animation = src->mini_golf_current_animation;
|
||||||
|
dst->mini_golf_flags = src->mini_golf_flags;
|
||||||
|
|
||||||
|
sprite_move(src->x, src->y, src->z, (rct_sprite *)dst);
|
||||||
|
invalidate_sprite_2((rct_sprite *)dst);
|
||||||
|
|
||||||
|
dst->num_peeps = src->num_peeps;
|
||||||
|
dst->next_free_seat = src->next_free_seat;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetVehicleColours(rct_vehicle * dst, rct1_vehicle * src)
|
||||||
|
{
|
||||||
// RCT1 had no third colour
|
// RCT1 had no third colour
|
||||||
RCT1::RCT1VehicleColourSchemeCopyDescriptor colourSchemeCopyDescriptor = RCT1::GetColourSchemeCopyDescriptor(src->vehicle_type);
|
RCT1::RCT1VehicleColourSchemeCopyDescriptor colourSchemeCopyDescriptor = RCT1::GetColourSchemeCopyDescriptor(src->vehicle_type);
|
||||||
if (colourSchemeCopyDescriptor.colour1 == COPY_COLOUR_1)
|
if (colourSchemeCopyDescriptor.colour1 == COPY_COLOUR_1)
|
||||||
|
@ -1026,15 +1045,6 @@ private:
|
||||||
{
|
{
|
||||||
dst->colours_extended = colourSchemeCopyDescriptor.colour3;
|
dst->colours_extended = colourSchemeCopyDescriptor.colour3;
|
||||||
}
|
}
|
||||||
|
|
||||||
dst->mini_golf_current_animation = src->mini_golf_current_animation;
|
|
||||||
dst->mini_golf_flags = src->mini_golf_flags;
|
|
||||||
|
|
||||||
sprite_move(src->x, src->y, src->z, (rct_sprite *)dst);
|
|
||||||
invalidate_sprite_2((rct_sprite *)dst);
|
|
||||||
|
|
||||||
dst->num_peeps = src->num_peeps;
|
|
||||||
dst->next_free_seat = src->next_free_seat;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FixVehicleLinks(rct_vehicle * vehicle, const uint16 * spriteIndexMap)
|
void FixVehicleLinks(rct_vehicle * vehicle, const uint16 * spriteIndexMap)
|
||||||
|
|
|
@ -24,9 +24,9 @@
|
||||||
|
|
||||||
namespace RCT1
|
namespace RCT1
|
||||||
{
|
{
|
||||||
typedef struct RCT1VehicleColourSchemeCopyDescriptor {
|
struct RCT1VehicleColourSchemeCopyDescriptor {
|
||||||
sint8 colour1, colour2, colour3;
|
sint8 colour1, colour2, colour3;
|
||||||
} RCT1VehicleColourSchemeCopyDescriptor;
|
};
|
||||||
|
|
||||||
colour_t GetColour(colour_t colour);
|
colour_t GetColour(colour_t colour);
|
||||||
uint8 GetPeepSpriteType(uint8 rct1SpriteType);
|
uint8 GetPeepSpriteType(uint8 rct1SpriteType);
|
||||||
|
|
Loading…
Reference in a new issue