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.CargoAPI; 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.ids.Items; 011import com.fs.starfarer.api.ui.TooltipMakerAPI; 012import com.fs.starfarer.api.util.Misc; 013 014public class WormholeScannerPlugin extends BaseSpecialItemPlugin { 015 016 public static String PLAYER_CAN_USE_WORMHOLES = "$playerCanUseWormholes"; // in global memory 017 018 @Override 019 public void createTooltip(TooltipMakerAPI tooltip, boolean expanded, CargoTransferHandlerAPI transferHandler, Object stackSource) { 020 float pad = 3f; 021 float opad = 10f; 022 float small = 5f; 023 Color h = Misc.getHighlightColor(); 024 Color g = Misc.getGrayColor(); 025 Color b = Misc.getButtonTextColor(); 026 b = Misc.getPositiveHighlightColor(); 027 028 if (!Global.CODEX_TOOLTIP_MODE) { 029 tooltip.addTitle(getName()); 030 } else { 031 tooltip.addSpacer(-opad); 032 } 033 034 String design = getDesignType(); 035 if (design != null) { 036 Misc.addDesignTypePara(tooltip, design, 10f); 037 } 038 039 if (!spec.getDesc().isEmpty()) { 040 if (Global.CODEX_TOOLTIP_MODE) { 041 tooltip.setParaSmallInsignia(); 042 } 043 tooltip.addPara(spec.getDesc(), Misc.getTextColor(), opad); 044 } 045 046 addCostLabel(tooltip, opad, transferHandler, stackSource); 047 048 if (!Global.CODEX_TOOLTIP_MODE) { 049 tooltip.addPara("Right-click to integrate the " + getName() + " with your fleet", b, opad); 050 } 051 } 052 053 @Override 054 public float getTooltipWidth() { 055 return super.getTooltipWidth(); 056 } 057 058 @Override 059 public boolean isTooltipExpandable() { 060 return false; 061 } 062 063 @Override 064 public boolean hasRightClickAction() { 065 return true; 066 } 067 068 @Override 069 public boolean shouldRemoveOnRightClickAction() { 070 return true; 071 } 072 073 @Override 074 public void performRightClickAction() { 075 Global.getSector().getMemoryWithoutUpdate().set(PLAYER_CAN_USE_WORMHOLES, true); 076 Global.getSoundPlayer().playUISound(getSpec().getSoundId(), 1f, 1f); 077 Global.getSector().getCampaignUI().getMessageDisplay().addMessage( 078 getName() + " integrated - can transit wormholes"); 079 } 080 081 082 public static boolean canPlayerUseWormholes() { 083 if (Global.getSector().getMemoryWithoutUpdate().getBoolean(PLAYER_CAN_USE_WORMHOLES)) { 084 return true; 085 } 086 087 CargoAPI cargo = Global.getSector().getPlayerFleet().getCargo(); 088 String id = Items.WORMHOLE_SCANNER; 089 if (cargo.getQuantity(CargoItemType.SPECIAL, new SpecialItemData(id, null)) >= 1) { 090 return true; 091 } 092 093 return false; 094 } 095} 096 097 098