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