mirror of https://github.com/OpenRCT2/OpenRCT2.git
Import more fields, name mechanic flags, fix booster behaviour
This commit is contained in:
parent
39d413b781
commit
d476176d73
|
@ -4650,7 +4650,7 @@ static bool peep_update_fixing_sub_state_11(bool firstRun, rct_peep *peep, rct_r
|
|||
|
||||
peep_update_action(&tmp_x, &tmp_y, &tmp_xy_distance, peep);
|
||||
if (peep->action_frame == 0x28) {
|
||||
ride->mechanic_status = 4;
|
||||
ride->mechanic_status = RIDE_MECHANIC_STATUS_HAS_FIXED_STATION_BRAKES;
|
||||
ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_MAINTENANCE;
|
||||
}
|
||||
|
||||
|
|
|
@ -157,11 +157,29 @@ typedef struct rct1_ride {
|
|||
uint8 popularity_time_out;
|
||||
uint8 popularity_next;
|
||||
uint8 num_riders;
|
||||
uint8 unk_10C[36];
|
||||
sint16 build_date;
|
||||
money16 upkeep_cost;
|
||||
uint8 unk_134[15];
|
||||
uint8 breakdown_reason;
|
||||
uint8 music_tune_id; // 0x10C
|
||||
uint8 slide_in_use; // 0x10D
|
||||
union {
|
||||
uint16 slide_peep; // 0x10E
|
||||
uint16 maze_tiles; // 0x10E
|
||||
};
|
||||
uint8 pad_110[0xE];
|
||||
uint8 slide_peep_t_shirt_colour;// 0x11E
|
||||
uint8 pad_11F[0x7];
|
||||
uint8 spiral_slide_progress; // 0x126
|
||||
uint8 pad_127[0x9];
|
||||
sint16 build_date; // 0x130
|
||||
money16 upkeep_cost; // 0x131
|
||||
uint16 race_winner; // 0x132
|
||||
uint8 unk_134[2];
|
||||
uint32 music_position; // 0x138
|
||||
uint8 breakdown_reason_pending; // 0x13C
|
||||
uint8 mechanic_status; // 0x13D
|
||||
uint16 mechanic; // 0x13E
|
||||
uint8 inspection_station; // 0x140
|
||||
uint8 broken_vehicle; // 0x141
|
||||
uint8 broken_car; // 0x142
|
||||
uint8 breakdown_reason; // 0x143
|
||||
uint8 unk_144[2];
|
||||
uint16 reliability;
|
||||
uint8 unreliability_factor;
|
||||
|
|
|
@ -675,6 +675,13 @@ private:
|
|||
dst->reliability = src->reliability;
|
||||
dst->unreliability_factor = src->unreliability_factor;
|
||||
dst->breakdown_reason = src->breakdown_reason;
|
||||
dst->mechanic_status = src->mechanic_status;
|
||||
dst->mechanic = src->mechanic;
|
||||
dst->breakdown_reason = src->breakdown_reason;
|
||||
dst->breakdown_reason_pending = src->breakdown_reason_pending;
|
||||
dst->inspection_station = src->inspection_station;
|
||||
//dst->broken_car?
|
||||
//dst->broken_vehicle?
|
||||
|
||||
// Measurement data
|
||||
dst->excitement = src->excitement;
|
||||
|
@ -714,6 +721,11 @@ private:
|
|||
dst->current_test_segment = src->current_test_segment;
|
||||
dst->current_test_station = 0xFF;
|
||||
dst->average_speed_test_timeout = src->average_speed_test_timeout;
|
||||
dst->slide_in_use = src->slide_in_use;
|
||||
dst->slide_peep_t_shirt_colour = RCT1::GetColour(src->slide_peep_t_shirt_colour);
|
||||
dst->spiral_slide_progress = src->spiral_slide_progress;
|
||||
// Doubles as slide_peep
|
||||
dst->maze_tiles = src->maze_tiles;
|
||||
|
||||
// Finance / customers
|
||||
dst->upkeep_cost = src->upkeep_cost;
|
||||
|
@ -1311,14 +1323,31 @@ private:
|
|||
|
||||
void FixRidePeepLinks(rct_ride * ride, const uint16 * spriteIndexMap)
|
||||
{
|
||||
uint16 originalSpriteIndex;
|
||||
|
||||
for (int i = 0; i < RCT1_MAX_STATIONS; i++)
|
||||
{
|
||||
uint16 originalSpriteIndex = ride->last_peep_in_queue[i];
|
||||
originalSpriteIndex = ride->last_peep_in_queue[i];
|
||||
if (originalSpriteIndex != SPRITE_INDEX_NULL)
|
||||
{
|
||||
ride->last_peep_in_queue[i] = spriteIndexMap[originalSpriteIndex];
|
||||
}
|
||||
}
|
||||
|
||||
originalSpriteIndex = ride->mechanic;
|
||||
if (originalSpriteIndex != SPRITE_INDEX_NULL)
|
||||
{
|
||||
ride->mechanic = spriteIndexMap[originalSpriteIndex];
|
||||
}
|
||||
|
||||
if (ride->type == RIDE_TYPE_SPIRAL_SLIDE)
|
||||
{
|
||||
originalSpriteIndex = ride->slide_peep;
|
||||
if (originalSpriteIndex != SPRITE_INDEX_NULL && spriteIndexMap[originalSpriteIndex] < RCT1_MAX_SPRITES)
|
||||
{
|
||||
ride->slide_peep = spriteIndexMap[originalSpriteIndex];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FixPeepNextInQueue(rct_peep * peep, const uint16 * spriteIndexMap)
|
||||
|
|
|
@ -2498,7 +2498,7 @@ static void ride_breakdown_status_update(sint32 rideIndex)
|
|||
if (
|
||||
!(ride->not_fixed_timeout & 15) &&
|
||||
ride->mechanic_status != RIDE_MECHANIC_STATUS_FIXING &&
|
||||
ride->mechanic_status != RIDE_MECHANIC_STATUS_4
|
||||
ride->mechanic_status != RIDE_MECHANIC_STATUS_HAS_FIXED_STATION_BRAKES
|
||||
) {
|
||||
set_format_arg(0, rct_string_id, ride->name);
|
||||
set_format_arg(2, uint32, ride->name_arguments);
|
||||
|
@ -2702,8 +2702,8 @@ rct_peep *ride_get_assigned_mechanic(rct_ride *ride)
|
|||
if (ride->lifecycle_flags & RIDE_LIFECYCLE_BROKEN_DOWN) {
|
||||
if (
|
||||
ride->mechanic_status == RIDE_MECHANIC_STATUS_HEADING ||
|
||||
ride->mechanic_status == 3 ||
|
||||
ride->mechanic_status == 4
|
||||
ride->mechanic_status == RIDE_MECHANIC_STATUS_FIXING ||
|
||||
ride->mechanic_status == RIDE_MECHANIC_STATUS_HAS_FIXED_STATION_BRAKES
|
||||
) {
|
||||
rct_peep *peep = &(get_sprite(ride->mechanic)->peep);
|
||||
if (peep_is_mechanic(peep))
|
||||
|
|
|
@ -662,7 +662,7 @@ enum {
|
|||
RIDE_MECHANIC_STATUS_CALLING,
|
||||
RIDE_MECHANIC_STATUS_HEADING,
|
||||
RIDE_MECHANIC_STATUS_FIXING,
|
||||
RIDE_MECHANIC_STATUS_4
|
||||
RIDE_MECHANIC_STATUS_HAS_FIXED_STATION_BRAKES
|
||||
};
|
||||
|
||||
enum {
|
||||
|
|
|
@ -3344,7 +3344,7 @@ static void vehicle_update_arriving(rct_vehicle* vehicle)
|
|||
if (ride->lifecycle_flags & RIDE_LIFECYCLE_BROKEN_DOWN &&
|
||||
ride->breakdown_reason_pending == BREAKDOWN_BRAKES_FAILURE &&
|
||||
ride->inspection_station == vehicle->current_station &&
|
||||
ride->mechanic_status != RIDE_MECHANIC_STATUS_4
|
||||
ride->mechanic_status != RIDE_MECHANIC_STATUS_HAS_FIXED_STATION_BRAKES
|
||||
) {
|
||||
unkF64E35 = 0;
|
||||
}
|
||||
|
@ -7492,7 +7492,7 @@ loc_6DAEB9:
|
|||
if (!(
|
||||
ride->lifecycle_flags & RIDE_LIFECYCLE_BROKEN_DOWN &&
|
||||
ride->breakdown_reason_pending == BREAKDOWN_BRAKES_FAILURE &&
|
||||
ride->mechanic_status == RIDE_MECHANIC_STATUS_4
|
||||
ride->mechanic_status == RIDE_MECHANIC_STATUS_HAS_FIXED_STATION_BRAKES
|
||||
)) {
|
||||
regs.eax = vehicle->brake_speed << 16;
|
||||
if (regs.eax < _vehicleVelocityF64E08) {
|
||||
|
@ -7507,15 +7507,9 @@ loc_6DAEB9:
|
|||
}
|
||||
}
|
||||
else if (trackType == TRACK_ELEM_BOOSTER && ride->type != RIDE_TYPE_WILD_MOUSE) {
|
||||
if (!(
|
||||
ride->lifecycle_flags & RIDE_LIFECYCLE_BROKEN_DOWN &&
|
||||
ride->breakdown_reason_pending == BREAKDOWN_BRAKES_FAILURE &&
|
||||
ride->mechanic_status == RIDE_MECHANIC_STATUS_4
|
||||
)) {
|
||||
regs.eax = (vehicle->brake_speed << 16);
|
||||
if (regs.eax > _vehicleVelocityF64E08) {
|
||||
vehicle->acceleration = RideProperties[ride->type].acceleration << 16; //_vehicleVelocityF64E08 * 1.2;
|
||||
}
|
||||
regs.eax = (vehicle->brake_speed << 16);
|
||||
if (regs.eax > _vehicleVelocityF64E08) {
|
||||
vehicle->acceleration = RideProperties[ride->type].acceleration << 16; //_vehicleVelocityF64E08 * 1.2;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue