jaghaimo/stellics

View on GitHub
src/main/java/stellics/helper/IntelHelper.java

Summary

Maintainability
A
0 mins
Test Coverage
package stellics.helper;

import java.util.List;

import com.fs.starfarer.api.Global;
import com.fs.starfarer.api.campaign.CargoAPI;
import com.fs.starfarer.api.campaign.comm.IntelInfoPlugin;
import com.fs.starfarer.api.campaign.comm.IntelManagerAPI;
import com.fs.starfarer.api.campaign.econ.MarketAPI;
import com.fs.starfarer.api.campaign.econ.SubmarketAPI;
import com.fs.starfarer.api.fleet.FleetMemberAPI;

import stellics.intel.CargoTransferIntel;
import stellics.intel.CourierIntel;
import stellics.intel.ShipTransferIntel;

public class IntelHelper {

    public static void fire(IntelInfoPlugin intelInfo) {
        IntelManagerAPI intelManager = Global.getSector().getIntelManager();
        intelManager.addIntel(intelInfo);
        intelManager.removeIntel(intelInfo);
    }

    public static void fireTransfer(String toOrFrom, List<FleetMemberAPI> ships, MarketAPI market, float distance) {
        int shipsCount = ships.size();
        float shipsCost = MonthlyReportHelper.getUpkeep(FleetMembersHelper.calculateShipUpkeep(ships), distance);
        fire(new ShipTransferIntel(toOrFrom, shipsCount, shipsCost, market));
    }

    public static void fireTransfer(String toOrFrom, CargoAPI cargo, MarketAPI market, float distance) {
        int cargoCount = CargoHelper.calculateCargoQuantity(cargo);
        float cargoCost = MonthlyReportHelper.getUpkeep(CargoHelper.calculateCargoUpkeep(cargo), distance);
        fire(new CargoTransferIntel(toOrFrom, cargoCount, cargoCost, market));
    }

    public static void recreate() {
        IntelManagerAPI intelManager = Global.getSector().getIntelManager();
        removeAll(intelManager);
        addAll(intelManager);
    }

    private static void removeAll(IntelManagerAPI intelManager) {
        IntelInfoPlugin intel = intelManager.getFirstIntel(CourierIntel.class);
        while (intel != null) {
            intelManager.removeIntel(intel);
            intel = intelManager.getFirstIntel(CourierIntel.class);
        }
    }

    private static void addAll(IntelManagerAPI intelManager) {
        for (SubmarketAPI submarket : StorageHelper.getAllWithAccess()) {
            IntelInfoPlugin plugin = new CourierIntel(submarket);
            intelManager.addIntel(plugin, true);
        }
    }
}