private static void LeaveServiceArea(RefuellerPictureBox refueller) { var destPointY = -(2 * RefuellerHeight); var destPoint = new Point(refueller.Left + FuelingPointDeltaX, destPointY); refueller.AddDestinationPoint(destPoint); }
internal static Point MoveRefueller(RefuellerPictureBox refueller, Point destPoint, int refuellerSpeed) { // Go left if (refueller.Left >= destPoint.X) { refueller.Left -= refuellerSpeed; } // Go Right if (refueller.Right <= destPoint.X) { refueller.Left += refuellerSpeed; } // Go Up if (refueller.Top >= destPoint.Y) { refueller.Top -= refuellerSpeed; } // Go Down if (refueller.Bottom <= destPoint.Y) { refueller.Top += refuellerSpeed; } return(destPoint); }
internal static void RefillFuelTank(RefuellerPictureBox refueller, FuelTankView fillingFuelTank) { var refuellerView = refueller.Tag as RefuellerView; refuellerView.RefillFuelTank(); if (fillingFuelTank.CurrentFullness >= fillingFuelTank.Volume || refuellerView.FuelRemaining <= 0) { StopRefilling(refueller, fillingFuelTank); } }
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(); } } }
private static void GoToFuelTank(RefuellerPictureBox refueller) { var fuelTank = ((RefuellerView)refueller.Tag).FuelTank; var pointOfFilling = fuelTank.PointOfRefilling; var destPointX = pointOfFilling.X; var destPointY = pointOfFilling.Y; var destPoint = new Point(destPointX, destPointY); // The main point of fueling refueller.AddDestinationPoint(destPoint); // Service area enter point destPoint = new Point(destPointX, RefuellerSpawnPoint.Y); refueller.AddDestinationPoint(destPoint); }
internal static void RouteRefueller(RefuellerPictureBox refueller) { var isFilled = refueller.IsFilled; if (refueller.IsFilling || refueller.HasDestPoints()) { return; } if (!isFilled) { GoToFuelTank(refueller); } else { LeaveServiceArea(refueller); } }
private static void StopRefilling(RefuellerPictureBox refueller, FuelTankView fillingFuelTank) { var refuellerView = refueller.Tag as RefuellerView; if (fillingFuelTank.CurrentFullness >= fillingFuelTank.Volume) { var fuelSurplus = fillingFuelTank.CurrentFullness - fillingFuelTank.Volume; if (refuellerView.FuelRemaining <= 0) { fuelSurplus = -fuelSurplus; } refuellerView.ReturnFuelFromFuelTank(fuelSurplus); } refueller.IsFilling = false; refueller.IsFilled = true; _isRefilling = false; }
internal static void StartRefilling(RefuellerPictureBox refueller, FuelTankView fuelTank) { refueller.IsFilling = true; }