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}