001package com.fs.starfarer.api.campaign.impl.items; 002 003import java.awt.Color; 004 005import com.fs.starfarer.api.Global; 006import com.fs.starfarer.api.campaign.CampaignUIAPI.DismissDialogDelegate; 007import com.fs.starfarer.api.campaign.CargoAPI.CargoItemType; 008import com.fs.starfarer.api.campaign.CargoTransferHandlerAPI; 009import com.fs.starfarer.api.campaign.SpecialItemData; 010import com.fs.starfarer.api.impl.campaign.RuleBasedInteractionDialogPluginImpl; 011import com.fs.starfarer.api.impl.campaign.ids.Items; 012import com.fs.starfarer.api.ui.TooltipMakerAPI; 013import com.fs.starfarer.api.util.Misc; 014 015public class ShroudedSubstratePlugin extends BaseSpecialItemPlugin { 016 017 public static String PLAYER_CAN_MAKE_WEAPONS = "$canMakeDwellerWeapons"; // in player memory 018 public static String SHROUDED_SUBSTRATE_AVAILABLE = "$shroudedSubstrateAvailable"; // in player memory 019 020 public static boolean isPlayerCanMakeWeapons() { 021 return Global.getSector().getPlayerMemoryWithoutUpdate().getBoolean(PLAYER_CAN_MAKE_WEAPONS); 022 } 023 public static void setPlayerCanMakeWeapons() { 024 Global.getSector().getPlayerMemoryWithoutUpdate().set(PLAYER_CAN_MAKE_WEAPONS, true); 025 } 026 027 028 @Override 029 public void createTooltip(TooltipMakerAPI tooltip, boolean expanded, CargoTransferHandlerAPI transferHandler, Object stackSource) { 030 float pad = 3f; 031 float opad = 10f; 032 float small = 5f; 033 Color h = Misc.getHighlightColor(); 034 Color g = Misc.getGrayColor(); 035 Color b = Misc.getButtonTextColor(); 036 b = Misc.getPositiveHighlightColor(); 037 038 if (!Global.CODEX_TOOLTIP_MODE) { 039 tooltip.addTitle(getName()); 040 } else { 041 tooltip.addSpacer(-opad); 042 } 043 044 String design = getDesignType(); 045 if (design != null) { 046 Misc.addDesignTypePara(tooltip, design, 10f); 047 } 048 049 if (!spec.getDesc().isEmpty()) { 050 if (Global.CODEX_TOOLTIP_MODE) { 051 tooltip.setParaSmallInsignia(); 052 } 053 tooltip.addPara(spec.getDesc(), Misc.getTextColor(), opad); 054 } 055 056 addCostLabel(tooltip, opad, transferHandler, stackSource); 057 058 if (!Global.CODEX_TOOLTIP_MODE) { 059 if (isPlayerCanMakeWeapons()) { 060 tooltip.addPara("Right-click to manufacture a weapon", b, opad); 061 } else { 062 tooltip.addPara("Right-click to analyze the " + getName(), b, opad); 063 } 064 } 065 } 066 067 @Override 068 public float getTooltipWidth() { 069 return super.getTooltipWidth(); 070 } 071 072 @Override 073 public boolean isTooltipExpandable() { 074 return false; 075 } 076 077 @Override 078 public boolean hasRightClickAction() { 079 return true; 080 } 081 082 @Override 083 public boolean shouldRemoveOnRightClickAction() { 084 return false; 085 } 086 087 @Override 088 public void performRightClickAction(RightClickActionHelper helper) { 089 Global.getSoundPlayer().playUISound(getSpec().getSoundId(), 1f, 1f); 090 091 int substrate = (int) helper.getNumItems(CargoItemType.SPECIAL, new SpecialItemData(Items.SHROUDED_SUBSTRATE, null)); 092 Global.getSector().getPlayerMemoryWithoutUpdate().set(SHROUDED_SUBSTRATE_AVAILABLE, substrate, 0f); 093 094 RuleBasedInteractionDialogPluginImpl plugin = new RuleBasedInteractionDialogPluginImpl("ShroudedSubstrateRightClick"); 095 plugin.setCustom1(helper); 096 Global.getSector().getCampaignUI().showInteractionDialogFromCargo(plugin, 097 Global.getSector().getPlayerFleet(), new DismissDialogDelegate() { 098 @Override 099 public void dialogDismissed() { 100 } 101 }); 102 } 103 104 105} 106 107 108 109 110 111 112 113 114