/**
 * Build a fleet and add it to the planet
 */
    private void buildFleet(Planet planet, ProductionQueueItem item, int numBuilt)
    {
        planet.getOwner().setNumFleetsBuilt(planet.getOwner().getNumFleetsBuilt() + 1);
        string name       = (item.getFleetName() != null ? item.getFleetName() : string.Format("Fleet #" + planet.getOwner().getNumFleetsBuilt()));
        bool   foundFleet = false;

        if (item.getFleetName() != null && planet.getOrbitingFleets().Count > 0)
        {
            foreach (Fleet fleet in planet.getOrbitingFleets())
            {
                if (fleet.getName().Equals(item.getFleetName()))
                {
                    fleetController.addFleetToStack(fleet, new ShipStack(item.getShipDesign(), numBuilt));
                    foundFleet = true;
                    break;
                }
            }
        }
        if (!foundFleet)
        {
            Fleet fleet = fleetController.makeFleet(
                name,
                planet.getX(),
                planet.getY(),
                planet.getOwner());
            fleet.getShipStacks().Add(new ShipStack(item.getShipDesign(), item.getQuantity()));
            fleet.computeAggregate();

            GameObject go = GameObject.Instantiate(baseFleet, planet.PlanetGameObject.transform, false);
            go.transform.position = Vector3.zero;


            go.GetComponent <FleetGameObject>().setFleet(fleet);
            go.name = fleet.getName();
            go.SetActive(true);

            go.GetComponent <FleetGameObject>().getFleet().setFuel(fleet.getAggregate().getFuelCapacity());
            go.GetComponent <FleetGameObject>().getFleet().setOrbiting(planet);
            go.GetComponent <FleetGameObject>().getFleet().addWaypoint(fleet.getX(), fleet.getY(), 5, WaypointTask.None, planet);
            game.getGame().addFleet(go.GetComponent <FleetGameObject>().getFleet());
        }
    }