/// <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
} // 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