001package com.fs.starfarer.api.campaign.ai; 002 003 004 005import java.util.List; 006 007import org.lwjgl.util.vector.Vector2f; 008 009import com.fs.starfarer.api.campaign.BattleAPI; 010import com.fs.starfarer.api.campaign.CampaignFleetAPI; 011import com.fs.starfarer.api.campaign.FleetEncounterContextPlugin; 012import com.fs.starfarer.api.campaign.SectorEntityToken; 013import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI.ActionType; 014import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI.BoardingActionDecision; 015import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI.EncounterOption; 016import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI.InitialBoardingResponse; 017import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI.PursuitOption; 018import com.fs.starfarer.api.fleet.CrewCompositionAPI; 019import com.fs.starfarer.api.fleet.FleetMemberAPI; 020 021public interface TacticalModulePlugin { 022 023 void advance(float days); 024 025 026 /** 027 * If set to non-null, tells the tactial module that reaching this destination 028 * is the goal. 029 * @param dest 030 */ 031 void setTravelDestination(Vector2f dest, float duration); 032 033 034 /** 035 * Will not actually engage when followMode == true. 036 * @param priorityTarget 037 * @param duration 038 * @param followMode 039 */ 040 void setPriorityTarget(SectorEntityToken priorityTarget, float duration, boolean followMode); 041 042 boolean isFleeing(); 043 SectorEntityToken getTarget(); 044 SectorEntityToken getLargestEnemy(); 045 boolean isBusy(); 046 047 048 void performCrashMothballingPriorToEscape(FleetEncounterContextPlugin context, CampaignFleetAPI otherFleet); 049 EncounterOption pickEncounterOption(FleetEncounterContextPlugin context, CampaignFleetAPI otherFleet); 050 PursuitOption pickPursuitOption(FleetEncounterContextPlugin context, CampaignFleetAPI otherFleet); 051 BoardingActionDecision makeBoardingDecision(FleetEncounterContextPlugin context, FleetMemberAPI toBoard, CrewCompositionAPI maxAvailable); 052 InitialBoardingResponse pickBoardingResponse(FleetEncounterContextPlugin context, FleetMemberAPI toBoard, CampaignFleetAPI otherFleet); 053 List<FleetMemberAPI> pickBoardingTaskForce(FleetEncounterContextPlugin context, FleetMemberAPI toBoard, CampaignFleetAPI otherFleet); 054 void reportNearbyAction(ActionType type, SectorEntityToken actor, SectorEntityToken target, String responseVariable); 055 void notifyInteractedWith(CampaignFleetAPI other); 056 057 058 void setTarget(SectorEntityToken target); 059 060 061 void forceTargetReEval(); 062 063 064 boolean wantsToJoin(BattleAPI battle, boolean playerInvolved); 065 066 boolean isMaintainingContact(); 067 068 boolean isHostileTo(CampaignFleetAPI other); 069 boolean isHostileTo(CampaignFleetAPI other, boolean assumeTransponderOn); 070 071 EncounterOption pickEncounterOption(FleetEncounterContextPlugin context, CampaignFleetAPI otherFleet, boolean pureCheck); 072 073 074 boolean isStandingDown(); 075 076 077 float getPursuitDays(); 078 079 080 SectorEntityToken getPriorityTarget(); 081} 082 083 084 085