001package com.fs.starfarer.api.impl.campaign.intel.misc; 002 003import java.util.ArrayList; 004import java.util.List; 005import java.util.Set; 006 007import java.awt.Color; 008 009import com.fs.starfarer.api.Global; 010import com.fs.starfarer.api.campaign.JumpPointAPI; 011import com.fs.starfarer.api.campaign.JumpPointAPI.JumpDestination; 012import com.fs.starfarer.api.campaign.SectorEntityToken; 013import com.fs.starfarer.api.campaign.TextPanelAPI; 014import com.fs.starfarer.api.campaign.comm.IntelInfoPlugin; 015import com.fs.starfarer.api.impl.campaign.JumpPointInteractionDialogPluginImpl; 016import com.fs.starfarer.api.impl.campaign.ids.Tags; 017import com.fs.starfarer.api.ui.SectorMapAPI; 018import com.fs.starfarer.api.ui.TooltipMakerAPI; 019import com.fs.starfarer.api.util.Misc; 020 021public class WormholeIntel extends MapMarkerIntel { 022 023 public WormholeIntel(SectorEntityToken entity, TextPanelAPI textPanel, boolean deployed) { 024 025 //String icon = Global.getSettings().getSpriteName("intel", "wormhole"); 026 String title = entity.getName(); 027 028 String text = null; 029// if (entity.getStarSystem() != null) { 030// if (entity.getStarSystem().isDeepSpace()) { 031// text = "Located in deep space"; 032// } else { 033// text = "Located in the " + entity.getStarSystem().getNameWithLowercaseTypeShort(); 034// } 035// } 036 setSound("ui_discovered_entity"); 037 if (deployed) { 038 setDiscoveredPrefixOverride("Deployed: "); 039 } 040 setWithDeleteButton(false); 041 //setWithTimestamp(false); 042 043 init(entity, title, text, null, true, textPanel); 044 } 045 046 @Override 047 public String getIcon() { 048 return Global.getSettings().getSpriteName("intel", "wormhole"); 049 } 050 051 052 053 @Override 054 protected boolean withTextInDesc() { 055 return true; 056 } 057 058 @Override 059 protected boolean withCustomVisual() { 060 return true; 061 } 062 063 @Override 064 protected boolean withCustomDescription() { 065 return true; 066 } 067 068 @Override 069 protected void addCustomVisual(TooltipMakerAPI info, float width, float height) { 070 info.addImage(Global.getSettings().getSpriteName("illustrations", "jump_point_wormhole"), width, 10f); 071 } 072 073 @Override 074 protected void addCustomDescription(TooltipMakerAPI info, float width, float height) { 075 //setWithTimestamp(true); 076 float opad = 10f; 077 info.addPara("Wormholes can be used for rapid transit between termini located many " 078 + "light-years apart.", opad); 079 } 080 081 @Override 082 protected void addExtraBulletPoints(TooltipMakerAPI info, Color tc, float initPad, ListInfoMode mode) { 083 if (!(entity instanceof JumpPointAPI)) return; 084 085 JumpPointAPI jumpPoint = (JumpPointAPI) entity; 086 float dur = jumpPoint.getMemoryWithoutUpdate().getExpire(JumpPointInteractionDialogPluginImpl.UNSTABLE_KEY); 087 if (dur > 0) { 088 String durStr = "" + (int) dur; 089 String days = "days"; 090 if ((int)dur == 1) { 091 days = "day"; 092 } 093 if ((int)dur <= 0) { 094 days = "day"; 095 durStr = "1"; 096 } 097 info.addPara("%s " + days + " until stabilized", initPad, tc, Misc.getHighlightColor(), durStr); 098 } 099 } 100 101 @Override 102 protected void addPostDescriptionSection(TooltipMakerAPI info, float width, float height, float opad) { 103 104 } 105 106 public static WormholeIntel getWormholeIntel(SectorEntityToken entity) { 107 for (IntelInfoPlugin intel : Global.getSector().getIntelManager().getIntel(WormholeIntel.class)) { 108 if (((WormholeIntel)intel).getEntity() == entity) return (WormholeIntel)intel; 109 } 110 return null; 111 } 112 113 @Override 114 public Set<String> getIntelTags(SectorMapAPI map) { 115 Set<String> tags = super.getIntelTags(map); 116 //tags.remove(Tags.INTEL_FLEET_LOG); 117 tags.add(Tags.INTEL_GATES); 118 return tags; 119 } 120 121 @Override 122 public String getSortString() { 123 if (getTagsForSort().contains(Tags.INTEL_FLEET_LOG) || getTagsForSort().contains(Tags.INTEL_EXPLORATION)) { 124 return super.getSortString(); 125 } 126 //return super.getSortString(); 127 return "AAAA"; 128 } 129 130 @Override 131 public List<ArrowData> getArrowData(SectorMapAPI map) { 132 133 if (!(entity instanceof JumpPointAPI)) return null; 134 135 JumpPointAPI jp = (JumpPointAPI) entity; 136 137 List<ArrowData> result = new ArrayList<ArrowData>(); 138 for (JumpDestination dest : jp.getDestinations()) { 139 SectorEntityToken target = dest.getDestination(); 140 if (getWormholeIntel(target) == null) continue; 141 142 ArrowData arrow = new ArrowData(entity, target); 143 arrow.color = new Color(255,75,255,255); 144 arrow.width = 7f; 145 result.add(arrow); 146 } 147 148 return result; 149 } 150 151 152} 153 154 155 156