Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package data.scripts.campaign;
- import com.fs.starfarer.api.EveryFrameScript;
- import com.fs.starfarer.api.Global;
- import com.fs.starfarer.api.campaign.StarSystemAPI;
- import com.fs.starfarer.api.campaign.econ.MarketAPI;
- import com.fs.starfarer.api.characters.PersonAPI;
- import com.fs.starfarer.api.impl.campaign.ids.Industries;
- import com.fs.starfarer.api.impl.campaign.ids.Ranks;
- import com.fs.starfarer.api.util.IntervalUtil;
- import com.fs.starfarer.api.util.Misc;
- import static data.scripts.VayraModPlugin.FIX_ADMINS_ENABLED;
- import static data.scripts.VayraModPlugin.createAdmin;
- import java.util.ArrayList;
- import java.util.List;
- import org.apache.log4j.Logger;
- public class VayraAdminAssigner implements EveryFrameScript {
- public static Logger log = Global.getLogger(VayraAdminAssigner.class);
- // only check every couple days
- private IntervalUtil timer = new IntervalUtil(2f, 3f);
- @Override
- public boolean isDone() {
- return false;
- }
- @Override
- public boolean runWhilePaused() {
- return false;
- }
- @Override
- public void advance(float amount) {
- if (!FIX_ADMINS_ENABLED) return;
- float days = Global.getSector().getClock().convertToDays(amount);
- timer.advance(days);
- if (timer.intervalElapsed()) {
- log.info(String.format("Interval elapsed, calling fixAdmin method"));
- fixAdmins();
- }
- }
- public void fixAdmins() {
- List<StarSystemAPI> systems = Global.getSector().getStarSystems();
- List<MarketAPI> markets = new ArrayList<>();
- log.info(String.format("Starting fixAdmin scan"));
- for (StarSystemAPI system : systems) {
- for (MarketAPI market : Misc.getMarketsInLocation(system)) {
- if (market == null || market.isPlanetConditionMarketOnly() || market.isPlayerOwned() || !market.hasIndustry(Industries.POPULATION)) {
- continue;
- }
- PersonAPI admin = market.getAdmin();
- if (admin == null) {
- log.info(String.format("gonna make an admin for market %s with null admin", market.getName()));
- markets.add(market);
- } else if (!admin.getPostId().equals(Ranks.POST_ADMINISTRATOR)
- && !admin.getRankId().equals(Ranks.POST_ADMINISTRATOR)
- && !admin.getPostId().equals(Ranks.FACTION_LEADER)
- && !admin.getRankId().equals(Ranks.FACTION_LEADER)) {
- log.info(String.format("gonna make an admin for market %s with non-administrator, non-faction leader admin", market.getName()));
- markets.add(market);
- } else {
- // ???
- }
- }
- }
- for (MarketAPI market : markets) {
- PersonAPI admin = createAdmin(market);
- market.addPerson(admin);
- market.setAdmin(admin);
- log.info(String.format("Applying admin %s %s to %s via fixAdmin call", market.getFaction().getRank(admin.getRankId()), admin.getNameString(), market.getName()));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement