001package com.fs.starfarer.api.impl.campaign.intel.raid; 002 003import com.fs.starfarer.api.campaign.CampaignFleetAPI; 004import com.fs.starfarer.api.campaign.FleetActionTextProvider; 005import com.fs.starfarer.api.campaign.FleetAssignment; 006import com.fs.starfarer.api.campaign.ai.FleetAssignmentDataAPI; 007import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteData; 008import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteSegment; 009import com.fs.starfarer.api.impl.campaign.ids.MemFlags; 010import com.fs.starfarer.api.impl.campaign.procgen.themes.RouteFleetAssignmentAI; 011import com.fs.starfarer.api.util.Misc; 012 013public class RaidAssignmentAI extends RouteFleetAssignmentAI implements FleetActionTextProvider { 014 015 public RaidAssignmentAI(CampaignFleetAPI fleet, RouteData route, FleetActionDelegate delegate) { 016 super(fleet, route, delegate); 017 fleet.getAI().setActionTextProvider(this); 018 } 019 020 @Override 021 public void advance(float amount) { 022 super.advance(amount, false); 023 024 RouteSegment curr = route.getCurrent(); 025 //if (!Misc.isBusy(fleet) && 026 if (curr != null && 027 ( 028 BaseRaidStage.STRAGGLER.equals(route.getCustom()) || 029 AssembleStage.WAIT_STAGE.equals(curr.custom) || 030 curr.isTravel())) { 031 Misc.setFlagWithReason(fleet.getMemoryWithoutUpdate(), MemFlags.FLEET_BUSY, "raid_wait", true, 1); 032 } 033 034 checkCapture(amount); 035 //checkBuild(amount); 036 037 if (fleet.getMemoryWithoutUpdate().getBoolean(MemFlags.MEMORY_KEY_RAIDER)) { 038 checkRaid(amount); 039 } 040 } 041 042 @Override 043 protected String getInSystemActionText(RouteSegment segment) { 044 if (AssembleStage.WAIT_STAGE.equals(segment.custom)) { 045 return "waiting at rendezvous point"; 046 } 047 String s = null; 048 if (delegate != null) s = delegate.getRaidInSystemText(fleet); 049 if (s == null) s = "raiding"; 050 return s; 051 } 052 053 @Override 054 protected String getEndingActionText(RouteSegment segment) { 055 return super.getEndingActionText(segment); 056 } 057 058 @Override 059 protected String getStartingActionText(RouteSegment segment) { 060 if (AssembleStage.PREP_STAGE.equals(segment.custom)) { 061 String s = null; 062 if (delegate != null) s = delegate.getRaidPrepText(fleet, segment.from); 063 if (s == null) s = "preparing for raid"; 064 return s; 065 } 066 if (segment.from == route.getMarket().getPrimaryEntity()) { 067 return "orbiting " + route.getMarket().getName(); 068 } 069 070 String s = null; 071 if (delegate != null) s = delegate.getRaidDefaultText(fleet); 072 if (s == null) s = "raiding"; 073 return s; 074 } 075 076 @Override 077 protected String getTravelActionText(RouteSegment segment) { 078 return super.getTravelActionText(segment); 079 } 080 081 public String getActionText(CampaignFleetAPI fleet) { 082 FleetAssignmentDataAPI curr = fleet.getCurrentAssignment(); 083 if (curr != null && curr.getAssignment() == FleetAssignment.PATROL_SYSTEM && 084 curr.getActionText() == null) { 085 086 String s = null; 087 if (delegate != null) s = delegate.getRaidDefaultText(fleet); 088 if (s == null) s = "raiding"; 089 return s; 090 091 } 092 return null; 093 } 094 095 096 097 098 099}