001package com.fs.starfarer.api.impl.campaign.intel.group; 002 003import java.util.List; 004 005import com.fs.starfarer.api.Global; 006import com.fs.starfarer.api.campaign.CampaignFleetAPI; 007import com.fs.starfarer.api.campaign.FleetAssignment; 008import com.fs.starfarer.api.campaign.SectorEntityToken; 009import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteData; 010import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteSegment; 011import com.fs.starfarer.api.util.IntervalUtil; 012 013public class FGWaitAction extends FGDurationAction { 014 015 protected SectorEntityToken where; 016 protected IntervalUtil interval = new IntervalUtil(0.1f, 0.3f); 017 018 protected String waitText; 019 protected boolean doNotGetSidetracked = true; 020 021 public FGWaitAction(SectorEntityToken where, float waitDays) { 022 this(where, waitDays, "orbiting " + where.getName()); 023 } 024 025 public FGWaitAction(SectorEntityToken where, float waitDays, String waitText) { 026 super(waitDays); 027 this.where = where; 028 this.waitText = waitText; 029 030 interval.forceIntervalElapsed(); 031 } 032 033 @Override 034 public void addRouteSegment(RouteData route) { 035 RouteSegment segment = new RouteSegment(getDurDays(), where); 036 route.addSegment(segment); 037 } 038 039 040 @Override 041 public void directFleets(float amount) { 042 super.directFleets(amount); 043 if (isActionFinished()) return; 044 045 List<CampaignFleetAPI> fleets = intel.getFleets(); 046 if (fleets.isEmpty()) { 047 setActionFinished(true); 048 return; 049 } 050 051 float days = Global.getSector().getClock().convertToDays(amount); 052 interval.advance(days); 053 054 if (!interval.intervalElapsed()) return; 055 056 057 for (CampaignFleetAPI fleet : fleets) { 058 fleet.clearAssignments(); 059 060 if (where.getStarSystem() != null && where == where.getStarSystem().getCenter()) { 061 fleet.addAssignment(FleetAssignment.PATROL_SYSTEM, null, 3f, waitText); 062 } else { 063 if (doNotGetSidetracked) { 064 fleet.addAssignment(FleetAssignment.ORBIT_PASSIVE, where, 3f, waitText); 065 } else { 066 fleet.addAssignment(FleetAssignment.ORBIT_AGGRESSIVE, where, 3f, waitText); 067 } 068 } 069 } 070 } 071 072 073 074 public SectorEntityToken getWhere() { 075 return where; 076 } 077 078 public void setWhere(SectorEntityToken where) { 079 this.where = where; 080 } 081 082 public String getWaitText() { 083 return waitText; 084 } 085 086 public void setWaitText(String waitText) { 087 this.waitText = waitText; 088 } 089 090 public boolean isDoNotGetSidetracked() { 091 return doNotGetSidetracked; 092 } 093 094 public void setDoNotGetSidetracked(boolean doNotGetSidetracked) { 095 this.doNotGetSidetracked = doNotGetSidetracked; 096 } 097 098} 099 100 101 102