From: Ira W. Snyder Date: Sat, 6 Oct 2007 18:22:43 +0000 (-0700) Subject: Add distance_from(Stop) X-Git-Url: https://irasnyder.com/gitweb/?a=commitdiff_plain;h=eab50b4a6f88c60993b62e717961441ef5f409bf;p=cs356-p1-elevator.git Add distance_from(Stop) It would be nice to get the distance from a Stop, not only a position. This way, direction can also be taken into account. Signed-off-by: Ira W. Snyder --- diff --git a/elevator.cpp b/elevator.cpp index e50ee2e..d4e7cfb 100644 --- a/elevator.cpp +++ b/elevator.cpp @@ -92,6 +92,23 @@ float Elevator::distance_from (Position &pos) const return pos - position_; } +float Elevator::distance_from (Stop &s) const +{ + Direction d = s.getDirection(); + Position p = s.getPosition (); + + /* If direction doesn't matter, then only position does */ + if (d == ALL || direction_ == IDLE) + return distance_from (p); + + /* If we're not in the same direction, then we're "really far" away */ + if (d != direction_) + return INT_MAX; + + /* We must be in the correct direction, so pure distance is fine */ + return distance_from (p); +} + void Elevator::transition_move_up () { direction_ = UP; @@ -145,7 +162,7 @@ void Elevator::transition_open_door () else stops_.remove (Stop(position_, direction_)); - // TODO: Call into GUI to open the door + // TODO: Call into the GUI to open the door std::cout << "Opening Door" << std::endl; } diff --git a/elevator.hpp b/elevator.hpp index df8a228..de8d71b 100644 --- a/elevator.hpp +++ b/elevator.hpp @@ -26,6 +26,7 @@ class Elevator void stop_at (Stop &stop); float distance_from (Position& pos) const; + float distance_from (Stop& s) const; void move (); bool is_idle () const;