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