1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-17 12:03:07 +01:00

Fix balloons, import balloons, ducks and steam particles

This commit is contained in:
Gymnasiast
2017-01-08 20:46:51 +01:00
committed by Ted John
parent 70f6f638ca
commit 5a51f28ba0
2 changed files with 91 additions and 2 deletions

View File

@@ -405,7 +405,14 @@ typedef union rct1_sprite {
uint8 pad_00[0x100];
rct1_unk_sprite unknown;
rct1_peep peep;
rct_litter litter;
rct_litter litter;
rct_balloon balloon;
rct_sprite duck;
rct_jumping_fountain jumping_fountain;
rct_money_effect money_effect;
rct_crashed_vehicle_particle crashed_vehicle_particle;
rct_crash_splash crash_splash;
rct_steam_particle steam_particle;
} rct1_sprite;
assert_struct_size(rct1_sprite, 0x100);

View File

@@ -799,6 +799,7 @@ private:
{
ImportPeeps();
ImportLitter();
ImportMiscSprites();
}
void ImportPeeps()
@@ -863,9 +864,19 @@ private:
dst->tshirt_colour = RCT1::GetColour(src->tshirt_colour);
dst->trousers_colour = RCT1::GetColour(src->trousers_colour);
dst->balloon_colour = RCT1::GetColour(src->balloon_colour);
dst->umbrella_colour = RCT1::GetColour(src->umbrella_colour);
dst->hat_colour = RCT1::GetColour(src->hat_colour);
// Balloons were always blue in RCT1 without AA/LL
if (_gameVersion == FILE_VERSION_RCT1)
{
dst->balloon_colour = COLOUR_LIGHT_BLUE;
}
else
{
dst->balloon_colour = RCT1::GetColour(src->balloon_colour);
}
dst->destination_x = src->destination_x;
dst->destination_y = src->destination_y;
dst->destination_tolerence = src->destination_tolerence;
@@ -1008,6 +1019,77 @@ private:
}
}
void ImportMiscSprites()
{
for (int i = 0; i < RCT1_MAX_SPRITES; i++)
{
if (_s4.sprites[i].unknown.sprite_identifier == SPRITE_IDENTIFIER_MISC)
{
rct1_unk_sprite * src = &_s4.sprites[i].unknown;
rct_unk_sprite * dst = (rct_unk_sprite *) create_sprite(SPRITE_IDENTIFIER_MISC);
move_sprite_to_list((rct_sprite *) dst, SPRITE_LIST_MISC * 2);
dst->sprite_identifier = src->sprite_identifier;
dst->misc_identifier = src->misc_identifier;
dst->x = src->x;
dst->y = src->y;
dst->z = src->z;
dst->sprite_direction = src->sprite_direction;
switch (src->misc_identifier) {
case SPRITE_MISC_STEAM_PARTICLE:
ImportSteamParticle((rct_steam_particle *) dst, (rct_steam_particle *) src);
break;
case SPRITE_MISC_MONEY_EFFECT:
break;
case SPRITE_MISC_CRASHED_VEHICLE_PARTICLE:
break;
case SPRITE_MISC_EXPLOSION_CLOUD:
break;
case SPRITE_MISC_CRASH_SPLASH:
break;
case SPRITE_MISC_EXPLOSION_FLARE:
break;
case SPRITE_MISC_JUMPING_FOUNTAIN_WATER:
break;
case SPRITE_MISC_BALLOON:
ImportBalloon((rct_balloon*)dst, (rct_balloon*)src);
break;
case SPRITE_MISC_DUCK:
ImportDuck((rct_duck*)dst, (rct_duck*)src);
break;
}
sprite_move(src->x, src->y, src->z, (rct_sprite *) dst);
invalidate_sprite_2((rct_sprite *) dst);
}
}
}
void ImportSteamParticle(rct_steam_particle * dst, rct_steam_particle * src)
{
dst->frame = src->frame;
}
void ImportBalloon(rct_balloon * dst, rct_balloon * src)
{
// Balloons were always blue in RCT1 without AA/LL
if (_gameVersion == FILE_VERSION_RCT1)
{
dst->colour = COLOUR_LIGHT_BLUE;
}
else
{
dst->colour = RCT1::GetColour(src->colour);
}
}
void ImportDuck(rct_duck * dst, rct_duck * src)
{
dst->frame = src->frame;
dst->state = src->state;
}
void ImportPeepSpawns()
{
for (int i = 0; i < 2; i++)