} // end of CreateQueue #endregion #region CreateServer /// <summary> /// Create server drawing object as a rectangle with caption /// </summary> /// <param name="entity">Server entity</param> /// <returns>DrawingRectangleObject visualization object</returns> public DrawingObject CreateServer(Entity entity) { DrawDynamicHoldingEntity newServer = new DrawDynamicHoldingEntity(entity, new Point(300, 0), new Size(40, 40), 30, Colors.LightGray); newServer.SetCaption(string.Format("Server: {0}", entity.Identifier), CustomStringAlignment.Left); return(newServer); } // end of CreateServer
} // end of CreateClient #endregion #region CreateQueue /// <summary> /// Create queue drawing object as a rectangle with caption /// </summary> /// <param name="entity">Queue entity</param> /// <returns>DrawingRectangleObject visualization object</returns> public DrawingObject CreateQueue(Entity entity) { DrawDynamicHoldingEntity queue = new DrawDynamicHoldingEntity(entity, new Point(20, 0), new Size(200, 40), 30, Colors.LightGray); queue.SetCaption(string.Format("Queue: {0}", entity.Identifier), CustomStringAlignment.Left); return(queue); } // end of CreateQueue
} // end of CreatePatient #endregion #region CreateMultiplePatientTreatmentFacility /// <summary> /// Creates a multiple patient treatment facility drawing object /// </summary> /// <param name="entity">Treatment facility entity</param> /// <returns>A drawing object visualizing a multiple patient treatment facility</returns> public DrawingObject CreateMultiplePatientTreatmentFacility(Entity entity) { EntityTreatmentFacility treatFac = (EntityTreatmentFacility)entity; DrawDynamicHoldingEntity drawTreatFac = new DrawDynamicHoldingEntity(treatFac, treatFac.Position, treatFac.Size, PersonSize, Colors.Gray); drawTreatFac.CaptionSize = 24; drawTreatFac.SetCaption(treatFac.ToString(), CustomStringAlignment.Left); return(drawTreatFac); } // end of CreatePatient
} // 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