From ac314a4d616cf1625642bf312a648ba0e442cd5d Mon Sep 17 00:00:00 2001 From: Daniel Trujillo Date: Tue, 12 Jul 2016 19:25:47 +0200 Subject: [PATCH 1/4] Fix the block-sectioned lift chain not working properly --- src/ride/vehicle.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/ride/vehicle.c b/src/ride/vehicle.c index 70b9ecf199..994356b512 100644 --- a/src/ride/vehicle.c +++ b/src/ride/vehicle.c @@ -5472,8 +5472,16 @@ static void check_and_apply_block_section_stop_site(rct_vehicle *vehicle) case TRACK_ELEM_CABLE_LIFT_HILL: case TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT: case TRACK_ELEM_DIAG_60_DEG_UP_TO_FLAT: - if (ride_is_block_sectioned(ride)) - apply_block_brakes(vehicle, trackElement->flags & MAP_ELEMENT_FLAG_BLOCK_BREAK_CLOSED); + if(ride_is_block_sectioned(ride) && track_element_is_lift_hill(trackElement)) { + if (trackElement->flags & MAP_ELEMENT_FLAG_BLOCK_BREAK_CLOSED) { + RCT2_GLOBAL(0x00F64E18, uint32) |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_10; + vehicle->acceleration = 0; + if (vehicle->velocity <= 0x20000) { + vehicle->velocity = 0; + } + vehicle->velocity -= vehicle->velocity >> 3; + } + } break; } From 37c4b549d2b8488e15f9a157f1eb6827ec8149d6 Mon Sep 17 00:00:00 2001 From: Daniel Trujillo Date: Tue, 12 Jul 2016 19:31:02 +0200 Subject: [PATCH 2/4] Revert block brakes behaviour to the old one (always braking) Anyway, there is possible to swith between different behaviours through a preprocessor directive --- src/ride/vehicle.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ride/vehicle.c b/src/ride/vehicle.c index 994356b512..1b328bfe8c 100644 --- a/src/ride/vehicle.c +++ b/src/ride/vehicle.c @@ -5421,7 +5421,11 @@ void apply_block_brakes(rct_vehicle *vehicle, bool is_block_brake_closed) vehicle->velocity -= vehicle->velocity >> 3; } } else { - apply_non_stop_block_brake(vehicle, is_block_brake_closed); +#ifdef NEW_BLOCK_BRAKES + apply_non_stop_block_brake(vehicle, false); +#else + apply_non_stop_block_brake(vehicle, true); +#endif } } From 4fba02567fa0d48d1e5065bb572de6d6f686d825 Mon Sep 17 00:00:00 2001 From: Daniel Trujillo Date: Tue, 12 Jul 2016 19:47:03 +0200 Subject: [PATCH 3/4] Add support for cable lift chain to stop train (old behaviour) --- src/ride/vehicle.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/ride/vehicle.c b/src/ride/vehicle.c index 1b328bfe8c..14fe111040 100644 --- a/src/ride/vehicle.c +++ b/src/ride/vehicle.c @@ -5476,14 +5476,16 @@ static void check_and_apply_block_section_stop_site(rct_vehicle *vehicle) case TRACK_ELEM_CABLE_LIFT_HILL: case TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT: case TRACK_ELEM_DIAG_60_DEG_UP_TO_FLAT: - if(ride_is_block_sectioned(ride) && track_element_is_lift_hill(trackElement)) { - if (trackElement->flags & MAP_ELEMENT_FLAG_BLOCK_BREAK_CLOSED) { - RCT2_GLOBAL(0x00F64E18, uint32) |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_10; - vehicle->acceleration = 0; - if (vehicle->velocity <= 0x20000) { - vehicle->velocity = 0; + if(ride_is_block_sectioned(ride)){ + if(trackType == TRACK_ELEM_CABLE_LIFT_HILL || track_element_is_lift_hill(trackElement)) { + if (trackElement->flags & MAP_ELEMENT_FLAG_BLOCK_BREAK_CLOSED) { + RCT2_GLOBAL(0x00F64E18, uint32) |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_10; + vehicle->acceleration = 0; + if (vehicle->velocity <= 0x20000) { + vehicle->velocity = 0; + } + vehicle->velocity -= vehicle->velocity >> 3; } - vehicle->velocity -= vehicle->velocity >> 3; } } From 8638cf924d1956d991b2cddd995fd9fe6c78c087 Mon Sep 17 00:00:00 2001 From: Daniel Trujillo Date: Tue, 12 Jul 2016 20:33:19 +0200 Subject: [PATCH 4/4] Refactor hill stop site code --- src/ride/vehicle.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/ride/vehicle.c b/src/ride/vehicle.c index 14fe111040..3bfdb4da64 100644 --- a/src/ride/vehicle.c +++ b/src/ride/vehicle.c @@ -5479,12 +5479,7 @@ static void check_and_apply_block_section_stop_site(rct_vehicle *vehicle) if(ride_is_block_sectioned(ride)){ if(trackType == TRACK_ELEM_CABLE_LIFT_HILL || track_element_is_lift_hill(trackElement)) { if (trackElement->flags & MAP_ELEMENT_FLAG_BLOCK_BREAK_CLOSED) { - RCT2_GLOBAL(0x00F64E18, uint32) |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_10; - vehicle->acceleration = 0; - if (vehicle->velocity <= 0x20000) { - vehicle->velocity = 0; - } - vehicle->velocity -= vehicle->velocity >> 3; + apply_block_brakes(vehicle, true); } } }