001package com.fs.starfarer.api.impl.campaign.tutorial;
002
003import com.fs.starfarer.api.campaign.CampaignFleetAPI;
004import com.fs.starfarer.api.campaign.FleetAssignment;
005import com.fs.starfarer.api.campaign.SectorEntityToken;
006import com.fs.starfarer.api.campaign.StarSystemAPI;
007import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI;
008import com.fs.starfarer.api.campaign.ai.ModularFleetAIAPI;
009import com.fs.starfarer.api.impl.campaign.procgen.themes.BaseAssignmentAI;
010import com.fs.starfarer.api.util.Misc;
011
012public class TutorialLeashAssignmentAI extends BaseAssignmentAI {
013
014        protected StarSystemAPI system;
015        protected SectorEntityToken jumpPoint;
016        
017        protected float elapsed = 0f;
018        protected float dur = 30f + (float) Math.random() * 20f;
019        protected SectorEntityToken toGuard;
020        
021        public TutorialLeashAssignmentAI(CampaignFleetAPI fleet, StarSystemAPI system, SectorEntityToken toGuard) {
022                super();
023                this.fleet = fleet;
024                this.system = system;
025                this.toGuard = toGuard;
026                
027                giveInitialAssignments();
028        }
029
030        @Override
031        protected void giveInitialAssignments() {
032                pickNext();
033        }
034
035        @Override
036        protected void pickNext() {
037                fleet.addAssignment(FleetAssignment.ORBIT_AGGRESSIVE, toGuard, 100f);
038        }
039
040        @Override
041        public void advance(float amount) {
042                super.advance(amount);
043                
044                
045                float dist = Misc.getDistance(fleet.getLocation(), toGuard.getLocation());
046//              if (fleet.getFaction().getId().equals(Factions.HEGEMONY)) {
047//                      System.out.println(fleet.getCurrentAssignment().getAssignment().name() + ", dist: " + dist);
048//              }
049                
050                if (dist > 1200 && fleet.getAI().getCurrentAssignmentType() == FleetAssignment.ORBIT_AGGRESSIVE) {
051                        fleet.addAssignmentAtStart(FleetAssignment.ORBIT_PASSIVE, toGuard, 3f, null);
052                        CampaignFleetAIAPI ai = fleet.getAI();
053                        if (ai instanceof ModularFleetAIAPI) {
054                                // needed to interrupt an in-progress pursuit
055                                ModularFleetAIAPI m = (ModularFleetAIAPI) ai;
056                                m.getStrategicModule().getDoNotAttack().add(m.getTacticalModule().getTarget(), 1f);
057                                m.getTacticalModule().setTarget(null);
058                        }
059                }
060        }
061
062}
063
064
065
066
067
068
069
070
071
072
073
074