001package com.fs.starfarer.api.impl.campaign.enc;
002
003import com.fs.starfarer.api.EveryFrameScript;
004import com.fs.starfarer.api.Global;
005import com.fs.starfarer.api.campaign.CampaignFleetAPI;
006import com.fs.starfarer.api.campaign.JumpPointAPI;
007import com.fs.starfarer.api.campaign.LocationAPI;
008import com.fs.starfarer.api.campaign.SectorEntityToken;
009import com.fs.starfarer.api.campaign.StarSystemAPI;
010import com.fs.starfarer.api.impl.campaign.ids.Abilities;
011import com.fs.starfarer.api.impl.campaign.ids.Tags;
012import com.fs.starfarer.api.util.IntervalUtil;
013import com.fs.starfarer.api.util.Misc;
014
015public class StrandedGiveTJScript implements EveryFrameScript {
016
017        protected IntervalUtil interval = new IntervalUtil(5f, 10f); 
018        protected StarSystemAPI prev; 
019        protected float elapsed;
020
021        public StrandedGiveTJScript() {
022        }
023
024        public void advance(float amount) {
025                interval.advance(amount);
026                if (interval.intervalElapsed()) {
027                        LocationAPI curr = Global.getSector().getCurrentLocation();
028                        if (!(curr instanceof StarSystemAPI)) return;
029                        
030                        StarSystemAPI system = (StarSystemAPI) curr;
031                        if (system.hasTag(Tags.DO_NOT_SHOW_STRANDED_DIALOG)) return;
032                        
033                        if (prev != system) {
034                                prev = system;
035                                elapsed = 0f;
036                        }
037                        
038                        for (SectorEntityToken s : system.getJumpPoints()) {
039                                JumpPointAPI jp = (JumpPointAPI) s;
040                                if (!jp.getDestinations().isEmpty()) {
041                                        return;
042                                }
043                        }
044                        
045                        elapsed += interval.getIntervalDuration();
046                        CampaignFleetAPI pf = Global.getSector().getPlayerFleet();
047                        if (!pf.hasAbility(Abilities.TRANSVERSE_JUMP) && elapsed > 60f &&
048                                        !Global.getSector().getCampaignUI().isShowingDialog() && 
049                                        !Global.getSector().getCampaignUI().isShowingMenu()) {
050                                Misc.showRuleDialog(pf, "StrandedInDeepSpace");
051                        }
052                }
053        }
054        
055        public boolean isDone() {
056                return false;
057        }
058
059        public boolean runWhilePaused() {
060                return false;
061        }       
062}
063
064
065