internal static void MoveRefuellerToDestination(RefuellerPictureBox refueller) { var refuellerView = refueller.Tag as RefuellerView; if (refueller.IsFilling) { var fillingFuelTank = refuellerView.FuelTank; ModelingProcessor.RefillFuelTank(refueller, fillingFuelTank); return; } var destPoint = refueller.GetDestinationPoint(); PictureBox destSpot = refueller.DestinationSpot; var refuellerSpeed = _refuellerSpeed; #region MotionLogic destPoint = MoveRefueller(refueller, destPoint, refuellerSpeed); #endregion /MotionLogic if (refueller.DestinationSpot == null) { destSpot = refueller.CreateDestinationSpot(destPoint); _modelingForm.PlaygroundPanel.Controls.Add(destSpot); } if (refueller.Bounds.IntersectsWith(destSpot.Bounds)) { refueller.RemoveDestinationPoint(_modelingForm); var fuelTank = ((RefuellerView)refueller.Tag).FuelTank; var pointOfFilling = fuelTank.PointOfRefilling; if (destPoint.Equals(pointOfFilling)) { ModelingProcessor.StartRefilling(refueller, fuelTank); //test //carView.IsFilled = true; } if (refueller.Bottom < -(2 * ElementSizeDefiner.RefuellerHeight)) { _modelingForm.PlaygroundPanel.Controls.Remove(refueller); refueller.Dispose(); } } }
public ModelingForm(Topology.Topology topology, TrafficFlow trafficFlow) { InitializeComponent(); RemoveUnusedControls(); DefineProperties(); LocateFormElements(); SetUpModelingTimeManager(timerModeling); ElementSizeDefiner.TopologyCellSize = 50; ClickEventProvider.SetUpClickEventProvider(this); pictureBoxPauseAndPlay.MouseClick += ClickEventProvider.PictureBoxPauseAndPlay_Click; _mappedTopology = TopologyMapper.MapTopology(this, topology, trafficFlow); ModelingProcessor.SetUpModelingProcessor(this, _mappedTopology); // not implemented labelTotalTime.Hide(); labelTotalTimeValue.Hide(); // /not implemented }
internal static void MoveCarToDestination(MoveablePictureBox car) { CarView carView = null; CollectorView collectorView = null; if (car is CarPictureBox) { carView = car.Tag as CarView; } if (car is CollectorPictureBox) { collectorView = car.Tag as CollectorView; } if (car.IsFilling) { if (car is CarPictureBox carPictureBox) { var chosenFuelDispenser = (FuelDispenserView)carView.ChosenFuelDispenser.Tag; ModelingProcessor.FillCar(carPictureBox, chosenFuelDispenser); return; } if (car is CollectorPictureBox collector) { var cashCounter = collectorView.CashCounter.Tag as CashCounterView; ModelingProcessor.CollectCash(collector, cashCounter); return; } } var destPoint = car.GetDestinationPoint(); PictureBox destSpot = car.DestinationSpot; var carSpeed = car.IsGoesFilling ? _carSpeedFilling : _carSpeedNoFilling; #region MotionLogic destPoint = MoveCar(car, destPoint, carSpeed); #endregion /MotionLogic if (car.DestinationSpot == null) { destSpot = car.CreateDestinationSpot(destPoint); _modelingForm.PlaygroundPanel.Controls.Add(destSpot); } if (car.Bounds.IntersectsWith(destSpot.Bounds)) { car.RemoveDestinationPoint(_modelingForm); car.IsBypassingObject = false; //_isGoHorizontal = false; //_isGoVertical = false; if (destPoint.Equals(DestinationPointsDefiner.EnterPoint3)) { car.IsOnStation = true; } if (car.IsGoesHorizontal && destPoint.Equals(car.FromLeftBypassingPoint)) { car.IsGoesHorizontal = false; //var x = 1; } if (car is CarPictureBox carPictureBox) { foreach (var fuelDispensersDestPoint in DestinationPointsDefiner.FuelDispensersDestPoints.Values) { if (destPoint.Equals(fuelDispensersDestPoint)) { ModelingProcessor.StartFilling(carPictureBox, carView.ChosenFuelDispenser); //test //carView.IsFilled = true; } } } if (car is CollectorPictureBox collector) { if (destPoint.Equals(DestinationPointsDefiner.CashCounter)) { ModelingProcessor.StartCollectingCash(collector, collectorView.CashCounter.Tag as CashCounterView); return; } } if (destPoint.Equals(DestinationPointsDefiner.ExitPoint1)) { car.IsOnStation = false; } if (destPoint.Equals(DestinationPointsDefiner.LeavePointNoFilling) || destPoint.Equals(DestinationPointsDefiner.LeavePointFilled)) { _modelingForm.PlaygroundPanel.Controls.Remove(car); car.Dispose(); } } }