001package com.fs.starfarer.api.campaign;
002
003import com.fs.starfarer.api.Script;
004import com.fs.starfarer.api.campaign.econ.SubmarketAPI;
005import com.fs.starfarer.api.fleet.FleetMemberAPI;
006import com.fs.starfarer.api.ui.TooltipMakerAPI;
007import com.fs.starfarer.api.util.Highlights;
008
009public interface SubmarketPlugin {
010        
011        public static enum PlayerEconomyImpactMode {
012                PLAYER_SELL_ONLY,
013                PLAYER_BUY_ONLY,
014                BOTH,
015                NONE,
016        }
017        
018        public static enum TransferAction {
019                PLAYER_BUY,
020                PLAYER_SELL,
021        }
022        
023        public static enum OnClickAction {
024                OPEN_SUBMARKET,
025                SHOW_TEXT_DIALOG,
026        }
027        
028        public static class DialogOption {
029                private String text;
030                private Script action;
031                public DialogOption(String text, Script action) {
032                        this.text = text;
033                        this.action = action;
034                }
035                public String getText() {
036                        return text;
037                }
038                public Script getAction() {
039                        return action;
040                }
041        }
042        
043        
044        void init(SubmarketAPI submarket);
045        String getName();
046        
047        void updateCargoPrePlayerInteraction();
048        
049        CargoAPI getCargo();
050        void addAllCargo(CargoAPI otherCargo);
051        
052        boolean isIllegalOnSubmarket(String commodityId, TransferAction action);
053        boolean isIllegalOnSubmarket(CargoStackAPI stack, TransferAction action);
054        String getIllegalTransferText(CargoStackAPI stack, TransferAction action);
055        Highlights getIllegalTransferTextHighlights(CargoStackAPI stack, TransferAction action);
056        
057        boolean isIllegalOnSubmarket(FleetMemberAPI member, TransferAction action);
058        String getIllegalTransferText(FleetMemberAPI member, TransferAction action);
059        Highlights getIllegalTransferTextHighlights(FleetMemberAPI member, TransferAction action);
060        
061        
062        void advance(float amount);
063        
064        /**
065         * Fraction of value that gets used as tariff.
066         * @return
067         */
068        float getTariff();
069        
070        
071        boolean isFreeTransfer();
072        String getSellVerb();
073        String getBuyVerb();
074        
075        void reportPlayerMarketTransaction(PlayerMarketTransaction transaction);
076        
077        boolean isBlackMarket();
078        boolean isOpenMarket();
079        boolean isMilitaryMarket();
080        
081        /**
082         * Whether transactions with this submarket affect the market's supply/demand and
083         * result in reputation changes for the player.
084         * @return
085         */
086        boolean isParticipatesInEconomy();
087        
088        //boolean isEnabled();
089        boolean isEnabled(CoreUIAPI ui);
090        
091        OnClickAction getOnClickAction(CoreUIAPI ui);
092        String getDialogText(CoreUIAPI ui);
093        Highlights getDialogTextHighlights(CoreUIAPI ui);
094        DialogOption [] getDialogOptions(CoreUIAPI ui);
095        
096        String getTooltipAppendix(CoreUIAPI ui);
097        Highlights getTooltipAppendixHighlights(CoreUIAPI ui);
098        CargoAPI getCargoNullOk();
099        
100        boolean isTooltipExpandable();
101        float getTooltipWidth();
102        void createTooltip(CoreUIAPI ui, TooltipMakerAPI tooltip, boolean expanded);
103        boolean hasCustomTooltip();
104
105        boolean isHidden();
106        boolean showInFleetScreen();
107        boolean showInCargoScreen();
108        float getPlayerTradeImpactMult();
109        PlayerEconomyImpactMode getPlayerEconomyImpactMode();
110        
111        public String getTariffTextOverride();
112        public String getTariffValueOverride();
113        public String getTotalTextOverride();
114        public String getTotalValueOverride();
115        
116        public SubmarketAPI getSubmarket();
117        boolean okToUpdateShipsAndWeapons();
118}
119
120
121
122
123
124