} // end of NumberSlotAssignString #endregion //-------------------------------------------------------------------------------------------------- // Methods //-------------------------------------------------------------------------------------------------- #region AdditionalStaticVisualization /// <summary> /// Calls base class method and additiona visualization for string captions /// </summary> /// <param name="initializationTime">Time at which static visualization is generated</param> /// <param name="simModel">Simulation model for which the visuslization is generated</param> /// <param name="parentControlUnit">Control unit that is visualized</param> public override void AdditionalStaticVisualization(DateTime initializationTime, SimulationModel simModel, ControlUnit parentControlUnit) { base.AdditionalStaticVisualization(initializationTime, simModel, parentControlUnit); DrawingObjectString personWaitingforSlotString = new DrawingObjectString(Position - new Vector(0, 50), "Patients Waiting for Slot: ", CustomStringAlignment.Left, 24, Colors.Gray); _numberSlotWaitString = new DrawingObjectString(Position - new Vector(-500, 50), "0", CustomStringAlignment.Left, 24, Colors.Gray); DrawingSystem.AddObject(personWaitingforSlotString); DrawingSystem.AddObject(NumberSlotWaitString); DrawingObjectString personWaitingforSlotAssignString = new DrawingObjectString(Position - new Vector(0, 100), "Patients Waiting to be assigned to Slot: ", CustomStringAlignment.Left, 24, Colors.Gray); _numberSlotAssingString = new DrawingObjectString(Position - new Vector(-500, 100), "0", CustomStringAlignment.Left, 24, Colors.Gray); DrawingSystem.AddObject(NumberSlotAssignString); DrawingSystem.AddObject(personWaitingforSlotAssignString); } // end of AdditionalStaticVisualization
/// <summary> /// Basic constructor, geometry outline (a rectangle) and caption is created /// </summary> /// <param name="correspondingEntity">Corresponding waiting facility</param> /// <param name="startPosition">Poistion of waiting facility</param> /// <param name="size">Size of waiting facility</param> /// <param name="personSize">Visualization height of persons</param> /// <param name="color">Color in which facility is displayed</param> public DrawDynamicHoldingEntity(Entity correspondingEntity, Point startPosition, Size size, double personSize, Color color) : base(startPosition, correspondingEntity) { _size = size; _personSize = personSize; double lineSize = personSize / 15; Point origin = new Point(0, 0); GeometryGroup geometries = new GeometryGroup(); // outline geometries.Children.Add(Geometry.Combine(new RectangleGeometry(new Rect(origin, size), lineSize, lineSize), new RectangleGeometry(new Rect(origin + new Vector(lineSize, lineSize), new Size(size.Width - 2 * lineSize, size.Height - 2 * lineSize)), lineSize, lineSize), GeometryCombineMode.Exclude, Transform.Identity)); DrawingShape.Data = geometries; DrawingShape.Fill = new SolidColorBrush(color); DrawingShape.Stroke = new SolidColorBrush(color); _slotWidth = PersonSize * 0.5; _slotHeight = PersonSize * 1.2; _numberPersonHorizontal = (int)(DrawingShape.Data.Bounds.Width / SlotWidth); _numberPersonVertical = (int)(DrawingShape.Data.Bounds.Height / SlotHeight); _drawPerdsonCount = new DrawingObjectString(startPosition + new Vector(DrawingShape.Data.Bounds.Width / 2 + (PersonSize * 5) / 6, DrawingShape.Data.Bounds.Height / 2 + (PersonSize * 5) / 6), "0", CustomStringAlignment.Center, (int)(PersonSize * 5) / 6, Colors.Gray); } // end of Constructor