示例#1
0
        private void CancelDrop(Event e)
        {
            var se = e as StackingEvent;

            if (se == null)
            {
                return;
            }
            DropoffQueue.Remove(se);
        }
示例#2
0
        public virtual StackEvent Dropoff(IStack stack)
        {
            var dropoff = new StackEvent(World.Environment, TriggerPickup, CancelDrop)
            {
                Stack = stack, Size = stack.Size
            };

            DropoffQueue.AddLast(dropoff);
            TriggerDropoff();
            return(dropoff);
        }
示例#3
0
        public virtual BlockEvent Dropoff(IBlock block)
        {
            var dropoff = new BlockEvent(World.Environment, TriggerPickup, CancelDrop)
            {
                Block = block
            };

            DropoffQueue.AddLast(dropoff);
            TriggerDropoff();
            return(dropoff);
        }
示例#4
0
 protected virtual void TriggerDropoff(Event @event = null)
 {
     while (DropoffQueue.Count > 0)
     {
         var put = DropoffQueue.First.Value;
         DoDropoff(put);
         if (put.IsTriggered)
         {
             DropoffQueue.RemoveFirst();
             TriggerWhenNew();
             TriggerWhenAny();
             TriggerWhenFull();
             TriggerWhenChange();
         }
         else
         {
             break;
         }
     }
     Utilization?.UpdateTo(Location.Height / (double)Location.MaxHeight);
     WIP?.UpdateTo(Location.Height + DropoffQueue.Count + PickupQueue.Count);
     DropoffQueueLength?.UpdateTo(DropoffQueue.Count);
 }