/// <summary> /// Return the closest refuelling point. /// </summary> /// <param name="fleet">The fleet looking for fuel.</param> /// <returns>The closest fleet that can refuel (normally a star base).</returns> private Fleet ClosestFuel(Fleet customer) { if (customer == null) { return(null); } // initialise the list of fuel stations, if null. if (FuelStations == null) { FuelStations = new FleetList(); foreach (Fleet pump in clientState.EmpireState.OwnedFleets.Values) { if (pump.CanRefuel) { FuelStations.Add(pump); } } } // if there are still no fuel stations, bug out if (FuelStations.Count == 0) { return(null); } Fleet closestFuelSoFar = null; double minRefulerDistance = double.MaxValue; foreach (Fleet pump in FuelStations.Values) { double distSquare = PointUtilities.DistanceSquare(pump.Position, customer.Position); if (distSquare < minRefulerDistance) { minRefulerDistance = distSquare; closestFuelSoFar = pump; } } return(closestFuelSoFar); }
public void AddBufferedFleetsToWorld(BufferedFleet bufferedFleet) { var fleetTile = TileList.Find(t => t.Position == bufferedFleet.Position); if (fleetTile.Fleet != null) { return; } var fleetParent = new GameObject("Fleet of: " + bufferedFleet.Player).transform; fleetParent.position = fleetTile.TileParent.position; fleetParent.SetParent(GameObject.Find(Tags.Fleets).transform); #region Instantiate units var units = new Unit[6]; for (int i = 0; i < units.Length; i++) { var unitParent = new GameObject("Unit: " + i).transform; fleetParent.rotation = Quaternion.Euler(Vector3.up * (i * -60 - 30)); unitParent.position = fleetTile.TileParent.position + Vector3.forward * 0.6f; unitParent.SetParent(fleetParent); } fleetParent.rotation = Quaternion.identity; #endregion var newFleet = new Fleet(bufferedFleet.ID, bufferedFleet.Player, fleetParent, (FleetType)bufferedFleet.FleetType, units); FleetList.Add(newFleet); fleetTile.Fleet = newFleet; BufferedFleetList.Remove(bufferedFleet); }