Exemplo n.º 1
0
 public void Done(CreatureAI Rider)
 {
     if (State == States.DroppingOffRider && CurrentRider != null && Object.ReferenceEquals(CurrentRider.Rider, Rider))
     {
         State        = States.Idle;
         CurrentRider = null;
     }
 }
Exemplo n.º 2
0
        public void Update(DwarfTime Time)
        {
            if (Invalid)
            {
                return;          // ??
            }
            TimeoutTimer.Update(Time);

            switch (State)
            {
            case States.Idle:
                if (RiderQueue.Count == 0)
                {
                    return;
                }
                CurrentRider = RiderQueue[0];
                RiderQueue.RemoveAt(0);
                State = States.MovingToRider;
                TimeoutTimer.Reset();
                break;

            case States.MovingToRider:
                if (MovePlatform(CurrentRider.RidePlan.Entrance, null, Time))
                {
                    State = States.PickingUpRider;
                }
                break;

            case States.PickingUpRider:
                if (TimeoutTimer.HasTriggered)
                {
                    CurrentRider = null;
                    State        = States.Idle;
                }
                break;

            case States.TransportingRider:
                if (MovePlatform(CurrentRider.RidePlan.Exit, CurrentRider.Rider, Time))
                {
                    State = States.DroppingOffRider;
                }
                break;

            case States.DroppingOffRider:
                if (TimeoutTimer.HasTriggered)
                {
                    CurrentRider = null;
                    State        = States.Idle;
                }

                break;
            }

            // Todo: Time out when rider doesn't enter fast enough.
            // Todo: Time out and forget a rider when they don't exit fast enough.
        }