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