Advertisement
Vayra

Untitled

May 16th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.17 KB | None | 0 0
  1. package data.scripts.campaign;
  2.  
  3. import com.fs.starfarer.api.EveryFrameScript;
  4. import com.fs.starfarer.api.Global;
  5. import com.fs.starfarer.api.campaign.StarSystemAPI;
  6. import com.fs.starfarer.api.campaign.econ.MarketAPI;
  7. import com.fs.starfarer.api.characters.PersonAPI;
  8. import com.fs.starfarer.api.impl.campaign.ids.Industries;
  9. import com.fs.starfarer.api.impl.campaign.ids.Ranks;
  10. import com.fs.starfarer.api.util.IntervalUtil;
  11. import com.fs.starfarer.api.util.Misc;
  12. import static data.scripts.VayraModPlugin.FIX_ADMINS_ENABLED;
  13. import static data.scripts.VayraModPlugin.createAdmin;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. import org.apache.log4j.Logger;
  17.  
  18. public class VayraAdminAssigner implements EveryFrameScript {
  19.  
  20.     public static Logger log = Global.getLogger(VayraAdminAssigner.class);
  21.  
  22.     // only check every couple days
  23.     private IntervalUtil timer = new IntervalUtil(2f, 3f);
  24.  
  25.     @Override
  26.     public boolean isDone() {
  27.         return false;
  28.     }
  29.  
  30.     @Override
  31.     public boolean runWhilePaused() {
  32.         return false;
  33.     }
  34.  
  35.     @Override
  36.     public void advance(float amount) {
  37.         if (!FIX_ADMINS_ENABLED) return;
  38.        
  39.         float days = Global.getSector().getClock().convertToDays(amount);
  40.         timer.advance(days);
  41.         if (timer.intervalElapsed()) {
  42.             log.info(String.format("Interval elapsed, calling fixAdmin method"));
  43.             fixAdmins();
  44.         }
  45.     }
  46.  
  47.     public void fixAdmins() {
  48.         List<StarSystemAPI> systems = Global.getSector().getStarSystems();
  49.         List<MarketAPI> markets = new ArrayList<>();
  50.         log.info(String.format("Starting fixAdmin scan"));
  51.  
  52.         for (StarSystemAPI system : systems) {
  53.             for (MarketAPI market : Misc.getMarketsInLocation(system)) {
  54.                 if (market == null || market.isPlanetConditionMarketOnly() || market.isPlayerOwned() || !market.hasIndustry(Industries.POPULATION)) {
  55.                     continue;
  56.                 }
  57.                 PersonAPI admin = market.getAdmin();
  58.                 if (admin == null) {
  59.                     log.info(String.format("gonna make an admin for market %s with null admin", market.getName()));
  60.                     markets.add(market);
  61.                 } else if (!admin.getPostId().equals(Ranks.POST_ADMINISTRATOR)
  62.                         && !admin.getRankId().equals(Ranks.POST_ADMINISTRATOR)
  63.                         && !admin.getPostId().equals(Ranks.FACTION_LEADER)
  64.                         && !admin.getRankId().equals(Ranks.FACTION_LEADER)) {
  65.                     log.info(String.format("gonna make an admin for market %s with non-administrator, non-faction leader admin", market.getName()));
  66.                     markets.add(market);
  67.                 } else {
  68.                     // ???
  69.                 }
  70.             }
  71.         }
  72.  
  73.         for (MarketAPI market : markets) {
  74.             PersonAPI admin = createAdmin(market);
  75.             market.addPerson(admin);
  76.             market.setAdmin(admin);
  77.             log.info(String.format("Applying admin %s %s to %s via fixAdmin call", market.getFaction().getRank(admin.getRankId()), admin.getNameString(), market.getName()));
  78.         }
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement