001package com.fs.starfarer.api.impl.campaign.fleets;
002
003import com.fs.starfarer.api.EveryFrameScript;
004import com.fs.starfarer.api.Global;
005import com.fs.starfarer.api.impl.campaign.fleets.RouteManager.RouteFleetSpawner;
006import com.fs.starfarer.api.util.IntervalUtil;
007
008public abstract class BaseRouteFleetManager implements EveryFrameScript, RouteFleetSpawner {
009
010        protected IntervalUtil interval;
011        
012        public BaseRouteFleetManager(float minInterval, float maxInterval) {
013                interval = new IntervalUtil(minInterval, maxInterval);
014        }
015        
016        protected abstract String getRouteSourceId();
017        protected abstract int getMaxFleets();
018        protected abstract void addRouteFleetIfPossible();
019        
020        public void advance(float amount) {
021                float days = Global.getSector().getClock().convertToDays(amount);
022//              boolean econ = EconomyFleetRouteManager.class.isInstance(this);
023//              if (econ) {
024//                      days *= 1000f;
025//              }
026                
027                interval.advance(days);
028                if (interval.intervalElapsed()) {
029                        String id = getRouteSourceId();
030                        int max = getMaxFleets();
031//                      if (econ) {
032//                              max = 1;
033//                      }
034                        int curr = RouteManager.getInstance().getNumRoutesFor(id);
035                        if (curr >= max) return;
036                        
037                        addRouteFleetIfPossible();
038                }
039        }
040        
041        public boolean isDone() {
042                return false;
043        }
044
045        public boolean runWhilePaused() {
046                return false;
047        }
048
049}