Example #1
0
    /*
     * Perform waypoint tasks in the given order
     *
     * Colonise
     * Scrap
     * Invade
     * Unload
     * Bomb
     * Stabilise
     * Others
     *
     */
    private void performWaypointTasks(int index)
    {
        List <Fleet> coloniseFleets = new List <Fleet>();
        List <Fleet> scrapFleets    = new List <Fleet>();
        List <Fleet> otherFleets    = new List <Fleet>();


        List <Fleet> invadeFleets      = new List <Fleet>();
        List <Fleet> unloadCargoFleets = new List <Fleet>();
        List <Fleet> bombFleets        = new List <Fleet>();
        List <Fleet> StabilizeFleets   = new List <Fleet>();

        foreach (Fleet fleet in game.getFleets())
        {
            if (fleet.getWaypoints().Count > index)
            {
                switch (fleet.getWaypoints()[index].getTask())
                {
                case WaypointTask.Colonise:
                    coloniseFleets.Add(fleet);
                    break;

                case WaypointTask.ScrapFleet:
                    scrapFleets.Add(fleet);
                    break;

                case WaypointTask.Invade:
                    invadeFleets.Add(fleet);
                    break;

                case WaypointTask.UnloadCargo:
                    unloadCargoFleets.Add(fleet);
                    break;

                case WaypointTask.Bomb:
                    bombFleets.Add(fleet);
                    break;

                case WaypointTask.Stabilize:
                    StabilizeFleets.Add(fleet);
                    break;

                default:
                    otherFleets.Add(fleet);
                    break;
                }
            }
        }

        foreach (Fleet fleet in coloniseFleets)
        {
            fleetController.doTask(fleet, fleet.getWaypoints()[index]);
        }

        foreach (Fleet fleet in scrapFleets)
        {
            fleetController.doTask(fleet, fleet.getWaypoints()[index]);
        }

        foreach (Fleet fleet in invadeFleets)
        {
            fleetController.doTask(fleet, fleet.getWaypoints()[index]);
        }

        foreach (Fleet fleet in unloadCargoFleets)
        {
            fleetController.doTask(fleet, fleet.getWaypoints()[index]);
        }

        foreach (Fleet fleet in bombFleets)
        {
            fleetController.doTask(fleet, fleet.getWaypoints()[index]);
        }

        foreach (Fleet fleet in StabilizeFleets)
        {
            fleetController.doTask(fleet, fleet.getWaypoints()[index]);
        }

        foreach (Fleet fleet in otherFleets)
        {
            fleetController.doTask(fleet, fleet.getWaypoints()[index]);
        }

        if (index != 0)
        {
            foreach (Fleet fleet in game.getFleets())
            {
                if (fleet.getWaypoints().Count > index)
                {
                    // we've arrived, remove the waypoint
                    fleet.getWaypoints().RemoveAt(0);
                    if (fleet.getWaypoints().Count == 1)
                    {
                        Message.fleetCompletedAssignedOrders(fleet.getOwner(), fleet);
                    }
                }
            }
        }
    }