001package com.fs.starfarer.api.campaign;
002
003import java.util.List;
004import java.util.Map;
005
006import org.lwjgl.util.vector.Vector2f;
007
008import com.fs.starfarer.api.fleet.FleetMemberAPI;
009
010public interface BattleAPI {
011        
012        public static enum BattleSide {
013                ONE,
014                TWO,
015                NO_JOIN,
016        }
017
018        void genCombined();
019        void genCombinedDoNotRemoveEmpty();
020        void uncombine();
021        CampaignFleetAPI getCombinedOne();
022        CampaignFleetAPI getCombinedTwo();
023        boolean canJoin(CampaignFleetAPI fleet);
024        BattleSide pickSide(CampaignFleetAPI fleet);
025        boolean join(CampaignFleetAPI fleet);
026        boolean isPlayerInvolved();
027        List<CampaignFleetAPI> getFleetsFor(EngagementResultForFleetAPI side);
028        boolean isPlayerSide(EngagementResultForFleetAPI side);
029        CampaignFleetAPI getCombinedFor(CampaignFleetAPI participantOrCombined);
030        CampaignFleetAPI getSourceFleet(FleetMemberAPI member);
031        List<CampaignFleetAPI> getSideFor(CampaignFleetAPI participantOrCombined);
032        CampaignFleetAPI getPrimary(List<CampaignFleetAPI> side);
033        boolean isPlayerSide(List<CampaignFleetAPI> side);
034        List<CampaignFleetAPI> getPlayerSide();
035        //void finish();
036        void removeEmptyFleets();
037        boolean isPlayerPrimary();
038        //void setPlayerPrimary(boolean playerPrimary);
039        
040        
041        boolean isDone();
042        List<CampaignFleetAPI> getSideOne();
043        List<CampaignFleetAPI> getSideTwo();
044        List<CampaignFleetAPI> getNonPlayerSide();
045        CampaignFleetAPI getPlayerCombined();
046        CampaignFleetAPI getNonPlayerCombined();
047        CampaignFleetAPI getCombined(BattleSide side);
048        CampaignFleetAPI getOtherSideCombined(BattleSide side);
049        void leave(CampaignFleetAPI fleet, boolean engagedInHostilities);
050        List<CampaignFleetAPI> getSide(BattleSide side);
051        List<CampaignFleetAPI> getOtherSide(BattleSide side);
052        
053        boolean knowsWhoPlayerIs(List<CampaignFleetAPI> side);
054        BattleSide pickSide(CampaignFleetAPI fleet, boolean considerPlayerTransponderStatus);
055        void takeSnapshots();
056        List<CampaignFleetAPI> getSnapshotSideOne();
057        List<CampaignFleetAPI> getSnapshotSideTwo();
058        List<CampaignFleetAPI> getSnapshotSideFor(CampaignFleetAPI participantOrCombined);
059        List<CampaignFleetAPI> getSnapshotFor(List<CampaignFleetAPI> side);
060        List<CampaignFleetAPI> getBothSides();
061        List<CampaignFleetAPI> getSnapshotBothSides();
062        List<CampaignFleetAPI> getOtherSideFor(CampaignFleetAPI participantOrCombined);
063        boolean isOnPlayerSide(CampaignFleetAPI participantOrCombined);
064        List<CampaignFleetAPI> getOtherSideSnapshotFor(
065                        CampaignFleetAPI participantOrCombined);
066        
067        
068        /**
069         * Snapshot before the battle, containing any fleets that may have been eliminated during.
070         * @return
071         */
072        List<CampaignFleetAPI> getPlayerSideSnapshot();
073        
074        /**
075         * Snapshot before the battle, containing any fleets that may have been eliminated during.
076         * @return
077         */
078        List<CampaignFleetAPI> getNonPlayerSideSnapshot();
079        
080        
081        boolean isInvolved(CampaignFleetAPI test);
082        float getPlayerInvolvementFraction();
083        boolean hasSnapshots();
084        void applyVisibilityMod(CampaignFleetAPI fleet);
085        boolean onSameSide(CampaignFleetAPI one, CampaignFleetAPI two);
086        boolean onPlayerSide(CampaignFleetAPI fleet);
087        CampaignFleetAPI getClosestInvolvedFleetTo(CampaignFleetAPI fleet);
088        //void finish(boolean engagedInHostilities);
089        void finish(BattleSide winner);
090        void finish(BattleSide winner, boolean engagedInHostilities);
091        boolean isPlayerInvolvedAtStart();
092        void setPlayerInvolvedAtStart(boolean playerInvolvedAtStart);
093        void setPlayerInvolvementFraction(float playerInvolvementFraction);
094        CampaignFleetAPI getPrimary(List<CampaignFleetAPI> side, boolean nonPlayer);
095        Map<FleetMemberAPI, CampaignFleetAPI> getMemberSourceMap();
096        long getSeed();
097        Vector2f computeCenterOfMass();
098        boolean isStationInvolved();
099        boolean isStationInvolvedOnPlayerSide();
100        boolean isStationInvolved(List<CampaignFleetAPI> side);
101        List<CampaignFleetAPI> getStationSide();
102        void genCombined(boolean withStation);
103        boolean join(CampaignFleetAPI fleet, BattleSide side);
104        boolean wasFleetDefeated(CampaignFleetAPI fleet, CampaignFleetAPI primaryWinner);
105        boolean wasFleetVictorious(CampaignFleetAPI fleet, CampaignFleetAPI primaryWinner);
106}