public void StopLift() { StopAllCoroutines(); _liftDirection = Direction.Stopped; SelectionController.DeselectAllFloors(); SelectionController.DeselectAllArrows(); OpenDoors(); }
public void SetNextFloor(int Floor, Command CommandSource, Direction CallDirection = Direction.Stopped) { Direction NewDirection = Direction.Stopped; switch (CommandSource) { case Command.FromOutside: { NewDirection = CallDirection; break; } case Command.FromInside: { int DirectionSign = Floor - _currentFloor; if (DirectionSign > 0) { NewDirection = Direction.Up; _liftDirection = NewDirection; } else if (DirectionSign < 0) { NewDirection = Direction.Down; _liftDirection = NewDirection; } break; } } bool InsideCall = (CommandSource == Command.FromInside); bool StoppedLift = (_liftDirection == Direction.Stopped); bool PermittedUpCall = (NewDirection == _liftDirection) && (NewDirection == Direction.Up) && (Floor >= _currentFloor); bool PermittedDownCall = (NewDirection == _liftDirection) && (NewDirection == Direction.Down) && (Floor <= _currentFloor); if (InsideCall || StoppedLift || PermittedUpCall || PermittedDownCall) { GoToFloor(Floor, NewDirection); } else { SelectionController.DeselectAllArrows(); } }