Matthew Goldsmith
/
cis441projMS2b
Diff: AccCar.cpp
- Revision:
- 4:ef8866873df5
- Parent:
- 1:54512aca944d
- Child:
- 7:15c2ed6e5162
--- a/AccCar.cpp Mon Nov 11 01:33:28 2019 +0000 +++ b/AccCar.cpp Wed Dec 11 21:13:57 2019 +0000 @@ -37,57 +37,22 @@ target_speed = rand() % 11 + 5; } - if( position < 54 ) { - if (forward_car != NULL && forward_car->position > -1) { - if (forward_car->position - position < MONITOR_DIST && forward_car->position < 55) { - road->done_flags.wait_all(forward_car->flag, osWaitForever, false); - - int diff = forward_car->position - position; - int maxSafeSpeed = diff - SAFETY_GAP; - - speed = std::min(maxSafeSpeed, target_speed); - } else { - speed = target_speed; - } - } else { - speed = target_speed; - } - - int distance_to_intersection = 54 - position; - speed = std::min(distance_to_intersection, speed); - - } else if( position == 54 ) { - if( waited) { - speed = road->intersection->attemptEnterIntersection(this->id); + if (forward_car != NULL && forward_car->position > -1) { + if (forward_car->position - position < MONITOR_DIST) { + road->done_flags.wait_all(forward_car->flag, osWaitForever, false); + + int diff = forward_car->position - position; + int maxSafeSpeed = diff - SAFETY_GAP; + + speed = std::min(maxSafeSpeed, target_speed); } else { - speed = 0; - waited = true; - road->intendToEnter(this->id); - } - } else if( position < 56 ) { - speed = 1; - } else { - if( position == 56 ) { - road->intersection->leaveIntersection(); + speed = target_speed; } - - if (forward_car != NULL && forward_car->position > -1) { - if (forward_car->position - position < MONITOR_DIST ) { - road->done_flags.wait_all(forward_car->flag, osWaitForever, false); - - int diff = forward_car->position - position; - int maxSafeSpeed = diff - SAFETY_GAP; - - speed = std::min(maxSafeSpeed, target_speed); - } else { - speed = target_speed; - } - - } else { - speed = target_speed; - } - } + } else { + speed = target_speed; + } + Communication::publish_car_info(id, position, speed); road->done_flags.set(flag); } while( position < 100 ); }