private void CancelDrop(Event e) { var se = e as StackingEvent; if (se == null) { return; } DropoffQueue.Remove(se); }
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); }
public virtual BlockEvent Dropoff(IBlock block) { var dropoff = new BlockEvent(World.Environment, TriggerPickup, CancelDrop) { Block = block }; DropoffQueue.AddLast(dropoff); TriggerDropoff(); return(dropoff); }
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); }