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