Use Finite State Machine to manage Elevator movement
[cs356-p1-elevator.git] / position.cpp
index f1cfc90..e0da0f4 100644 (file)
@@ -44,7 +44,18 @@ Position& Position::operator+= (const float rhs)
 
 Position& Position::operator-= (const float rhs)
 {
-       *this += -rhs;
+       int major = (int)rhs;
+       int minor = (int)((rhs - major) * 10);
+
+       major_ -= major;
+       minor_ -= minor;
+
+       /* Check for underflow */
+       if (minor_ < 0)
+       {
+               major_ -= 1;
+               minor_ += 10;
+       }
 
        return *this;
 }