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