Exemple #1
0
 private void DequeByPositionType(PositionPointType positionType)
 {
     if (waitQueue[positionType].Any() && positions[positionType].Any(position => !position.occupied))
     {
         // var freePosition = positions.Find(position => position.positionType == positionType && !position.occupied);
         var freePositions = positions[positionType].Where(position => !position.occupied).ToArray();
         var freePosition  = freePositions.ElementAt(Random.Range(0, freePositions.Count()));
         freePosition.occupied = true;
         waitQueue[positionType].Dequeue().FreePositionAvailable(freePosition);
     }
 }
Exemple #2
0
 public void RequestFreePositionWhenAvailable(IMoveToPointSubscriber subscriber, PositionPointType positionType)
 {
     waitQueue[positionType].Enqueue(subscriber);
 }