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); }
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; } } }