public void cabinStateChangedTo(CabinState cabinState)
 {
     cabinState.accept(this);
 }
 private void cabinIsWaitingForPeople()
 {
     cabinState = new CabinWaitingForPeopleState(this);
 }
 //Cabin state
 private void cabinIsStopped()
 {
     cabinState = new CabinStoppedState(this);
 }
 private void cabinMoving()
 {
     cabinState = new CabinMovingState(this);
 }
예제 #5
0
 private void CabinLoop()
 {
     Buffer<Action> b = new Buffer<Action>();
       while (true) {
     mLift.Arrived(Helpers.pair(mFloors[mFloor], b));
     switch (b.Get()) {
       case Action.Wait:
     UnderViewLock(delegate { mState = CabinState.Waiting; });
     break;
       case Action.Stop:
     mFloors[mFloor].Arrived(mLift);
     UnderViewLock(delegate { mState = CabinState.Stopping; });
     WaitForEndTransition();
     break;
       case Action.Up:
     UnderViewLock(delegate {
        nextY = (mFloor + 1) * Program.COLUMNHEIGHT;
        mState = CabinState.GoingUp;
     });
     WaitForEndTransition();
     mFloor++;
     break;
       case Action.Down:
     UnderViewLock(delegate {
       nextY = (mFloor - 1) * Program.COLUMNHEIGHT;
       mState = CabinState.GoingDown;
     });
     WaitForEndTransition();
     mFloor--;
     break;
       default: Debug.Assert(false);
     break;
     }
       }
 }