mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-16 03:23:15 +01:00
Copy over some properties
This commit is contained in:
@@ -245,6 +245,90 @@ typedef struct rct1_vehicle {
|
||||
uint8 ride; // 0x30
|
||||
uint8 vehicle_type; // 0x31
|
||||
rct_vehicle_colour colours; // 0x32
|
||||
union {
|
||||
uint16 track_progress; // 0x34
|
||||
struct {
|
||||
sint8 var_34;
|
||||
uint8 var_35;
|
||||
};
|
||||
};
|
||||
union {
|
||||
sint16 track_direction; // 0x36 (0000 0000 0000 0011)
|
||||
sint16 track_type; // 0x36 (0000 0011 1111 1100)
|
||||
rct_xy8 boat_location; // 0x36
|
||||
};
|
||||
uint16 track_x; // 0x38
|
||||
uint16 track_y; // 0x3A
|
||||
uint16 track_z; // 0x3C
|
||||
uint16 next_vehicle_on_train; // 0x3E
|
||||
|
||||
// The previous vehicle on the same train or the last vehicle on the previous or only train.
|
||||
uint16 prev_vehicle_on_ride; // 0x40
|
||||
|
||||
// The next vehicle on the same train or the first vehicle on the next or only train
|
||||
uint16 next_vehicle_on_ride; // 0x42
|
||||
|
||||
uint16 var_44;
|
||||
uint16 friction; // 0x46
|
||||
uint16 update_flags; // 0x48
|
||||
uint8 var_4A;
|
||||
uint8 current_station; // 0x4B
|
||||
union {
|
||||
sint16 swinging_car_var_0; // 0x4C
|
||||
sint16 current_time; // 0x4C
|
||||
struct {
|
||||
sint8 ferris_wheel_var_0; // 0x4C
|
||||
sint8 ferris_wheel_var_1; // 0x4D
|
||||
};
|
||||
};
|
||||
sint16 var_4E;
|
||||
uint8 status; // 0x50
|
||||
uint8 sub_state; // 0x51
|
||||
uint16 peep[32]; // 0x52
|
||||
uint8 peep_tshirt_colours[32]; // 0x92
|
||||
uint8 num_seats; // 0xB2
|
||||
uint8 num_peeps; // 0xB3
|
||||
uint8 next_free_seat; // 0xB4
|
||||
uint8 restraints_position; // 0xB5 0 == Close, 255 == Open
|
||||
sint16 var_B6;
|
||||
uint16 var_B8;
|
||||
uint8 var_BA;
|
||||
uint8 sound1_id; // 0xBB
|
||||
uint8 sound1_volume; // 0xBC
|
||||
uint8 sound2_id; // 0xBD
|
||||
uint8 sound2_volume; // 0xBE
|
||||
sint8 var_BF;
|
||||
union {
|
||||
uint16 var_C0;
|
||||
uint16 time_waiting; // 0xC0
|
||||
uint16 cable_lift_target; // 0xC0
|
||||
};
|
||||
uint8 speed; // 0xC2
|
||||
uint8 powered_acceleration; // 0xC3
|
||||
uint8 var_C4;
|
||||
uint8 var_C5;
|
||||
uint8 pad_C6[0x2];
|
||||
uint16 var_C8;
|
||||
uint16 var_CA;
|
||||
uint8 scream_sound_id; // 0xCC
|
||||
uint8 var_CD;
|
||||
union {
|
||||
uint8 var_CE;
|
||||
uint8 num_laps; // 0xCE
|
||||
};
|
||||
union {
|
||||
uint8 var_CF;
|
||||
uint8 brake_speed; // 0xCF
|
||||
};
|
||||
uint16 lost_time_out; // 0xD0
|
||||
sint8 vertical_drop_countdown; // 0xD1
|
||||
uint8 var_D3;
|
||||
uint8 mini_golf_current_animation;
|
||||
uint8 mini_golf_flags; // 0xD5
|
||||
uint8 ride_subtype; // 0xD6
|
||||
uint8 colours_extended; // 0xD7
|
||||
uint8 seat_rotation; // 0xD8
|
||||
uint8 target_seat_rotation; // 0xD9
|
||||
} rct1_vehicle;
|
||||
|
||||
typedef struct rct1_peep {
|
||||
|
||||
@@ -812,11 +812,75 @@ private:
|
||||
|
||||
void ImportVehicle(rct_vehicle * dst, rct1_vehicle * src)
|
||||
{
|
||||
// TODO perform vehicle type conversion
|
||||
// this will be whether the vehicle is the head of the train or a seat etc.
|
||||
uint8 vehicleEntryIndex = 0;
|
||||
|
||||
rct_ride * ride = get_ride(src->ride);
|
||||
rct_ride_entry * rideEntry = get_ride_entry_by_ride(ride);
|
||||
rct_ride_entry_vehicle * vehicleEntry = &rideEntry->vehicles[vehicleEntryIndex];
|
||||
|
||||
dst->sprite_identifier = SPRITE_IDENTIFIER_VEHICLE;
|
||||
dst->ride = src->ride;
|
||||
dst->ride_subtype = ride->subtype;
|
||||
|
||||
dst->vehicle_type = vehicleEntryIndex;
|
||||
dst->is_child = src->is_child;
|
||||
dst->var_44 = ror32(vehicleEntry->spacing, 10) & 0xFFFF;
|
||||
dst->remaining_distance = src->remaining_distance;
|
||||
|
||||
// Properties from vehicle entry
|
||||
dst->sprite_width = vehicleEntry->sprite_width;
|
||||
dst->sprite_height_negative = vehicleEntry->sprite_height_negative;
|
||||
dst->sprite_height_positive = vehicleEntry->sprite_height_positive;
|
||||
dst->friction = vehicleEntry->car_friction;
|
||||
dst->num_seats = vehicleEntry->num_seats;
|
||||
dst->speed = vehicleEntry->powered_max_speed;
|
||||
dst->powered_acceleration = vehicleEntry->powered_acceleration;
|
||||
|
||||
dst->velocity = src->velocity;
|
||||
dst->acceleration = src->acceleration;
|
||||
dst->var_4A = src->var_4A;
|
||||
dst->swinging_car_var_0 = src->swinging_car_var_0;
|
||||
dst->var_4E = src->var_4E;
|
||||
dst->restraints_position = src->restraints_position;
|
||||
dst->var_BA = src->var_BA;
|
||||
dst->var_B6 = src->var_B6;
|
||||
dst->var_B8 = src->var_B8;
|
||||
dst->sound1_id = 0xFF;
|
||||
dst->sound2_id = 0xFF;
|
||||
dst->next_vehicle_on_train = SPRITE_INDEX_NULL;
|
||||
dst->var_C4 = src->var_C4;
|
||||
dst->var_C5 = src->var_C5;
|
||||
dst->var_C8 = src->var_C8;
|
||||
dst->scream_sound_id = 255;
|
||||
dst->vehicle_sprite_type = 0;
|
||||
dst->bank_rotation = src->bank_rotation;
|
||||
dst->target_seat_rotation = src->target_seat_rotation;
|
||||
dst->seat_rotation = src->seat_rotation;
|
||||
|
||||
// Guests
|
||||
for (int i = 0; i < 32; i++)
|
||||
{
|
||||
dst->peep[i] = SPRITE_INDEX_NULL;
|
||||
}
|
||||
|
||||
dst->var_CD = 0;
|
||||
dst->track_x = src->track_x;
|
||||
dst->track_y = src->track_y;
|
||||
dst->track_z = src->track_z;
|
||||
dst->current_station = src->current_station;
|
||||
dst->track_type = src->track_type;
|
||||
dst->track_progress = src->track_progress;
|
||||
dst->status = src->status;
|
||||
dst->sub_state = src->sub_state;
|
||||
dst->update_flags = src->update_flags;
|
||||
|
||||
sprite_move(src->x, src->y, src->z, (rct_sprite *)dst);
|
||||
invalidate_sprite_2((rct_sprite *)dst);
|
||||
|
||||
dst->num_peeps = 0;
|
||||
dst->next_free_seat = 0;
|
||||
}
|
||||
|
||||
void ImportPeeps()
|
||||
|
||||
Reference in New Issue
Block a user