001package com.fs.starfarer.api.plugins; 002 003import java.util.List; 004import java.util.Random; 005 006import com.fs.starfarer.api.campaign.CampaignFleetAPI; 007import com.fs.starfarer.api.campaign.CargoAPI; 008import com.fs.starfarer.api.campaign.FactionAPI; 009import com.fs.starfarer.api.campaign.econ.MarketAPI; 010import com.fs.starfarer.api.campaign.econ.SubmarketAPI; 011import com.fs.starfarer.api.characters.MutableCharacterStatsAPI; 012import com.fs.starfarer.api.combat.MutableShipStatsAPI; 013import com.fs.starfarer.api.combat.ShipAPI; 014import com.fs.starfarer.api.combat.ShipVariantAPI; 015import com.fs.starfarer.api.fleet.FleetMemberAPI; 016import com.fs.starfarer.api.loading.FighterWingSpecAPI; 017import com.fs.starfarer.api.loading.WeaponSlotAPI; 018import com.fs.starfarer.api.loading.WeaponSpecAPI; 019 020 021 022 023public interface AutofitPlugin { 024 public interface AvailableWeapon { 025 String getId(); 026 WeaponSpecAPI getSpec(); 027 float getPrice(); 028 CargoAPI getSource(); 029 SubmarketAPI getSubmarket(); 030 int getQuantity(); 031 void setQuantity(int quantity); 032 float getOPCost(MutableCharacterStatsAPI stats, MutableShipStatsAPI shipStats); 033 } 034 035 public interface AvailableFighter { 036 String getId(); 037 FighterWingSpecAPI getWingSpec(); 038 float getPrice(); 039 CargoAPI getSource(); 040 SubmarketAPI getSubmarket(); 041 int getQuantity(); 042 void setQuantity(int quantity); 043 } 044 045 public interface AutofitPluginDelegate { 046 void fitFighterInSlot(int index, AvailableFighter fighter, ShipVariantAPI variant); 047 void clearFighterSlot(int index, ShipVariantAPI variant); 048 void fitWeaponInSlot(WeaponSlotAPI slot, AvailableWeapon weapon, ShipVariantAPI variant); 049 void clearWeaponSlot(WeaponSlotAPI slot, ShipVariantAPI variant); 050 051 List<AvailableWeapon> getAvailableWeapons(); 052 List<AvailableFighter> getAvailableFighters(); 053 054 boolean isPriority(WeaponSpecAPI weapon); 055 boolean isPriority(FighterWingSpecAPI wing); 056 057 List<String> getAvailableHullmods(); 058 void syncUIWithVariant(ShipVariantAPI variant); 059 060 //void syncUIWithVariant(); 061 062 ShipAPI getShip(); 063 064 FactionAPI getFaction(); 065 066 boolean isAllowSlightRandomization(); 067 068 boolean isPlayerCampaignRefit(); 069 boolean canAddRemoveHullmodInPlayerCampaignRefit(String modId); 070 071 MarketAPI getMarket(); 072 FleetMemberAPI getFleetMember(); 073 } 074 075 076 077 078 public static class AutofitOption { 079 public String id; 080 public String text; 081 public boolean checked; 082 public String tooltip; 083 public AutofitOption(String id, String text, boolean checked, String tooltip) { 084 this.id = id; 085 this.text = text; 086 this.checked = checked; 087 this.tooltip = tooltip; 088 } 089 } 090 091 092 //void init(AutofitPluginDelegate delegate); 093 List<AutofitOption> getOptions(); 094 void doFit(ShipVariantAPI current, ShipVariantAPI target, int maxSMods, AutofitPluginDelegate delegate); 095 float getRating(ShipVariantAPI current, ShipVariantAPI target, AutofitPluginDelegate delegate); 096 int getCreditCost(); 097 098 099 String getQuickActionText(); 100 void doQuickAction(ShipVariantAPI current, AutofitPluginDelegate delegate); 101 String getQuickActionTooltip(); 102 103 104 void autoAssignOfficers(CampaignFleetAPI fleet); 105 boolean isQuickActionEnabled(ShipVariantAPI currentVariant); 106 void setRandom(Random random); 107} 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124