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.CargoTransferHandlerAPI; 008import com.fs.starfarer.api.impl.campaign.RuleBasedInteractionDialogPluginImpl; 009import com.fs.starfarer.api.ui.TooltipMakerAPI; 010import com.fs.starfarer.api.util.Misc; 011 012public class ShroudedHullmodItemPlugin extends BaseSpecialItemPlugin { 013 014 public static String SHROUDED_HULLMOD_ID = "$shroudedHullmodId"; 015 016 @Override 017 public void createTooltip(TooltipMakerAPI tooltip, boolean expanded, CargoTransferHandlerAPI transferHandler, Object stackSource) { 018 float pad = 3f; 019 float opad = 10f; 020 float small = 5f; 021 Color h = Misc.getHighlightColor(); 022 Color g = Misc.getGrayColor(); 023 Color b = Misc.getButtonTextColor(); 024 b = Misc.getPositiveHighlightColor(); 025 026 if (!Global.CODEX_TOOLTIP_MODE) { 027 tooltip.addTitle(getName()); 028 } else { 029 tooltip.addSpacer(-opad); 030 } 031 032 String design = getDesignType(); 033 if (design != null) { 034 Misc.addDesignTypePara(tooltip, design, 10f); 035 } 036 037 if (!spec.getDesc().isEmpty()) { 038 if (Global.CODEX_TOOLTIP_MODE) { 039 tooltip.setParaSmallInsignia(); 040 } 041 tooltip.addPara(spec.getDesc(), Misc.getTextColor(), opad); 042 } 043 044 addCostLabel(tooltip, opad, transferHandler, stackSource); 045 046 if (!Global.CODEX_TOOLTIP_MODE) { 047 if (!playerKnowsHullmod()) { 048 tooltip.addPara("Right-click to analyze the " + getName(), b, opad); 049 } 050 } 051 } 052 053 protected boolean playerKnowsHullmod() { 054 return Global.getSector().getCharacterData().knowsHullMod(getHullmodId()); 055 } 056 057 protected String getHullmodId() { 058 return spec.getParams(); 059 } 060 061 protected String getRightClickRuleTrigger() { 062 return "ShroudedHullmodItemRC"; 063 } 064 065 @Override 066 public boolean hasRightClickAction() { 067 return !playerKnowsHullmod(); 068 } 069 070 @Override 071 public boolean shouldRemoveOnRightClickAction() { 072 return false; 073 } 074 075 @Override 076 public void performRightClickAction(RightClickActionHelper helper) { 077 Global.getSoundPlayer().playUISound(getSpec().getSoundId(), 1f, 1f); 078 079 Global.getSector().getPlayerMemoryWithoutUpdate().set(SHROUDED_HULLMOD_ID, getHullmodId(), 0f); 080 081 RuleBasedInteractionDialogPluginImpl plugin = new RuleBasedInteractionDialogPluginImpl(getRightClickRuleTrigger()); 082 plugin.setCustom1(helper); 083 Global.getSector().getCampaignUI().showInteractionDialogFromCargo(plugin, 084 Global.getSector().getPlayerFleet(), new DismissDialogDelegate() { 085 @Override 086 public void dialogDismissed() { 087 } 088 }); 089 } 090 091 092} 093 094 095 096 097 098 099 100 101