示例#1
0
 /// <summary>
 /// Constructor that sets corresponding members of class
 /// </summary>
 /// <param name="parentControlUnit"> Parent control of waiting activity</param>
 /// <param name="affectedEntity">Entity that is waiting</param>
 /// <param name="waitingArea">Optional parameter for a holding entity such as waiting rooms, or storage rooms</param>
 public ActivityWait(ControlUnit parentControlUnit,
                     Entity affectedEntity,
                     IDynamicHoldingEntity waitingArea = null)
     : base(parentControlUnit, "ActivityWait", true)
 {
     _waitingEntity = affectedEntity;
     _waitingArea   = waitingArea;
 } // end of Activity
        } // end of GetServedStart

        #endregion

        #region DrawHoldingEntity

        /// <summary>
        /// Visualized a dynamic holding entity (in this example a queue) by adding clients in the rectangle,
        /// no overflow handling (will draw infinitely)
        /// </summary>
        /// <param name="holdingEntity"></param>
        public void DrawHoldingEntity(IDynamicHoldingEntity holdingEntity)
        {
            DrawDynamicHoldingEntity drawFoHold = (DrawDynamicHoldingEntity)DrawingObjectPerEntity((Entity)holdingEntity);

            if (drawFoHold.MaxNumberPerson < holdingEntity.HoldedEntities.Count)
            {
                drawFoHold.DrawPersonCount.StringToDraw = holdingEntity.HoldedEntities.Count.ToString();

                if (!DrawingSystem.DrawingObjects.Contains(drawFoHold.DrawPersonCount))
                {
                    DrawingSystem.AddObject(drawFoHold.DrawPersonCount);
                }

                foreach (DrawingObject drawObject in holdingEntity.HoldedEntities.Select(p => DrawingObjectPerEntity(p)))
                {
                    drawObject.SetPosition(drawFoHold.DrawPersonCount.CurrentPosition - new Vector(-30, 0));
                } // end foreach
            }
            else
            {
                if (DrawingSystem.DrawingObjects.Contains(drawFoHold.DrawPersonCount))
                {
                    DrawingSystem.RemoveObject(drawFoHold.DrawPersonCount);
                }

                int    entitiesDrawn = 0;
                double entityW       = drawFoHold.SlotWidth;
                double entityH       = drawFoHold.SlotHeight;

                for (int i = 0; i < drawFoHold.NumberPersonVertical; i++)
                {
                    for (int j = 0; j < drawFoHold.NumberPersonHorizontal; j++)
                    {
                        if (entitiesDrawn == holdingEntity.HoldedEntities.Count)
                        {
                            return;
                        }

                        DrawingObject drawEntity = DrawingObjectPerEntity(holdingEntity.HoldedEntities[entitiesDrawn]);

                        drawEntity.SetPosition(drawFoHold.CurrentPosition + new Vector(j * entityW + drawFoHold.SlotWidth / 2, i * entityH));

                        entitiesDrawn++;
                    } // end for
                }     // end for
            }         // end if
        }             // end of DrawHoldingEntity
示例#3
0
        } // end of StopCurrentActivites

        #endregion

        #region StartWaitingActivity

        public Event StartWaitingActivity(IDynamicHoldingEntity waitingArea = null)
        {
            ActivityWait wait = new ActivityWait(this.ParentControlUnit, this, waitingArea);

            return(wait.StartEvent);
        } // end of