001package com.fs.starfarer.api.campaign;
002
003import java.util.List;
004
005import org.lwjgl.util.vector.Vector2f;
006
007import com.fs.starfarer.api.EveryFrameScript;
008import com.fs.starfarer.api.Script;
009import com.fs.starfarer.api.campaign.CampaignEventListener.FleetDespawnReason;
010import com.fs.starfarer.api.campaign.ai.FleetAssignmentDataAPI;
011import com.fs.starfarer.api.campaign.listeners.FleetEventListener;
012import com.fs.starfarer.api.campaign.rules.MemoryAPI;
013
014public interface FleetOrStubAPI {
015
016        String getId();
017        LocationAPI getContainingLocation();
018        Vector2f getLocation();
019        FleetAssignmentDataAPI getCurrentAssignment();
020        List<FleetAssignmentDataAPI> getAssignmentsCopy();
021        void addAssignment(FleetAssignment assignment, SectorEntityToken target,
022                        float maxDurationInDays, Script onCompletion);
023        void addAssignment(FleetAssignment assignment, SectorEntityToken target,
024                        float maxDurationInDays, String actionText, Script onCompletion);
025        void addAssignment(FleetAssignment assignment, SectorEntityToken target,
026                        float maxDurationInDays, String actionText);
027        void addAssignmentAtStart(FleetAssignment assignment,
028                        SectorEntityToken target, float maxDurationInDays,
029                        String actionText, Script onCompletion);
030        void addAssignmentAtStart(FleetAssignment assignment,
031                        SectorEntityToken target, float maxDurationInDays,
032                        Script onCompletion);
033        void addAssignment(FleetAssignment assignment, SectorEntityToken target, float maxDurationInDays);
034        boolean isCurrentAssignment(FleetAssignment assignment);
035        void removeFirstAssignmentIfItIs(FleetAssignment assignment);
036        void removeFirstAssignment();
037        void clearAssignments();
038        MemoryAPI getMemoryWithoutUpdate();
039        
040        void despawn();
041        void despawn(FleetDespawnReason reason, Object param);
042        boolean isFleet();
043        //boolean isStub();
044        void addScript(EveryFrameScript script);
045        List<FleetEventListener> getEventListeners();
046        void addEventListener(FleetEventListener listener);
047        void removeEventListener(FleetEventListener listener);
048        List<EveryFrameScript> getScripts();
049        Vector2f getLocationInHyperspace();
050
051        
052        
053}