diff options
Diffstat (limited to 'control/zone.cpp')
-rw-r--r-- | control/zone.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/control/zone.cpp b/control/zone.cpp index 018f594..418b3ba 100644 --- a/control/zone.cpp +++ b/control/zone.cpp @@ -147,11 +147,19 @@ void Zone::setServiceOwner(const Group* group, void Zone::setFloor(uint64_t speed) { - _floorSpeed = speed; - // Floor speed above target, update target to floor speed - if (_targetSpeed < _floorSpeed) + // Check all entries are set to allow floor to be set + auto pred = [](auto const& entry) {return entry.second;}; + auto setFloor = std::all_of(_floorChange.begin(), + _floorChange.end(), + pred); + if (setFloor) { - requestSpeedIncrease(_floorSpeed - _targetSpeed); + _floorSpeed = speed; + // Floor speed above target, update target to floor speed + if (_targetSpeed < _floorSpeed) + { + requestSpeedIncrease(_floorSpeed - _targetSpeed); + } } } |