Starsector API
Loading...
Searching...
No Matches
BaseIntelPlugin.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.intel;
2
3import java.awt.Color;
4import java.util.LinkedHashSet;
5import java.util.List;
6import java.util.Map;
7import java.util.Set;
8
9import org.lwjgl.input.Keyboard;
10import org.lwjgl.util.vector.Vector2f;
11
12import com.fs.starfarer.api.EveryFrameScript;
13import com.fs.starfarer.api.Global;
14import com.fs.starfarer.api.campaign.FactionAPI;
15import com.fs.starfarer.api.campaign.InteractionDialogAPI;
16import com.fs.starfarer.api.campaign.LocationAPI;
17import com.fs.starfarer.api.campaign.SectorEntityToken;
18import com.fs.starfarer.api.campaign.StoryPointActionDelegate;
19import com.fs.starfarer.api.campaign.TextPanelAPI;
20import com.fs.starfarer.api.campaign.comm.CommMessageAPI.MessageClickAction;
21import com.fs.starfarer.api.campaign.comm.IntelInfoPlugin;
22import com.fs.starfarer.api.campaign.econ.MarketAPI;
23import com.fs.starfarer.api.campaign.rules.MemoryAPI;
24import com.fs.starfarer.api.impl.campaign.CommRelayEntityPlugin.CommSnifferReadableIntel;
25import com.fs.starfarer.api.impl.campaign.ids.Tags;
26import com.fs.starfarer.api.impl.campaign.rulecmd.CallEvent.CallableEvent;
27import com.fs.starfarer.api.impl.campaign.tutorial.TutorialMissionIntel;
28import com.fs.starfarer.api.ui.ButtonAPI;
29import com.fs.starfarer.api.ui.CustomPanelAPI;
30import com.fs.starfarer.api.ui.IntelUIAPI;
31import com.fs.starfarer.api.ui.LabelAPI;
32import com.fs.starfarer.api.ui.SectorMapAPI;
33import com.fs.starfarer.api.ui.TooltipMakerAPI;
34import com.fs.starfarer.api.util.Misc;
35import com.fs.starfarer.api.util.Misc.Token;
36
42public class BaseIntelPlugin implements IntelInfoPlugin, CallableEvent, EveryFrameScript, CommSnifferReadableIntel {
43
44 public static final String BULLET = " - ";
45 public static final String INDENT = " ";
46
47 public static String BUTTON_DELETE = "button_delete";
48
49 protected Boolean important;
50 protected Long timestamp;
51 protected Boolean neverClicked = true;
52
53 transient protected Object listInfoParam = null;
54
55 protected Boolean ended = null;
56 protected Boolean ending = null;
57 protected Float endingTimeRemaining = null;
58
59 protected SectorEntityToken postingLocation = null;
60 protected Float postingRangeLY = null;
61
62 public BaseIntelPlugin() {
63 }
64
65 public void advance(float amount) {
66 if (isEnded()) return;
67
68 float days = Global.getSector().getClock().convertToDays(amount);
69 if (isEnding()) {
70 endingTimeRemaining -= days;
71 if (endingTimeRemaining <= 0) {
72 ended = true;
74 }
75 return;
76 }
77
78 advanceImpl(amount);
79 }
80
82
83 }
84
85 protected void advanceImpl(float amount) {}
86
87 protected void notifyEnding() {
88
89 }
90
91 protected void notifyEnded() {
92 //Global.getSector().getIntelManager().removeIntel(this);
93 }
94
95 public void endImmediately() {
96 endAfterDelay(0f);
97 }
98 public void endAfterDelay() {
100 }
101 public void endAfterDelay(float days) {
102 endingTimeRemaining = days;
103 boolean wasEnding = isEnding();
104 ending = true;
105 if (!wasEnding) {
106 notifyEnding();
107 }
108 if (endingTimeRemaining <= 0) {
109 ended = true;
110 notifyEnded();
111 }
112 }
113
114 protected float getBaseDaysAfterEnd() {
115 return 3f;
116 }
117
118 public boolean isDone() {
119 return isEnded();
120 }
121
122 public boolean runWhilePaused() {
123 return false;
124 }
125
126 public boolean isEnding() {
127 return ending != null && ending;
128 }
129
130 public boolean isEnded() {
131 return ended != null && ended;
132 }
133
134
140 public Object getListInfoParam() {
141 return listInfoParam;
142 }
143
144 public void setListInfoParam(Object listInfoParam) {
145 this.listInfoParam = listInfoParam;
146 }
147
148
149 public boolean isSendingUpdate() {
150 return listInfoParam != null;
151 }
152
153 public void sendUpdate(Object listInfoParam, TextPanelAPI textPanel) {
154 this.listInfoParam = listInfoParam;
155 Global.getSector().getIntelManager().addIntelToTextPanel(this, textPanel);
156 this.listInfoParam = null;
157 }
158
159 public void sendUpdateIfPlayerHasIntel(Object listInfoParam, TextPanelAPI textPanel) {
160 if (textPanel == null) {
162 } else {
163 sendUpdate(listInfoParam, textPanel);
164 }
165 }
166
167 public void sendUpdateIfPlayerHasIntel(Object listInfoParam, boolean onlyIfImportant) {
168 sendUpdateIfPlayerHasIntel(listInfoParam, onlyIfImportant, false);
169 }
170 public void sendUpdateIfPlayerHasIntel(Object listInfoParam, boolean onlyIfImportant, boolean sendIfHidden) {
171 if (timestamp == null) return;
172
173 if (onlyIfImportant && !isImportant()) return;
174
175 if (!sendIfHidden && isHidden()) return;
176
177 this.listInfoParam = listInfoParam;
178 Global.getSector().getCampaignUI().addMessage(this, MessageClickAction.INTEL_TAB, this);
179 this.listInfoParam = null;
180 }
181
182
183 public boolean canTurnImportantOff() {
184 return true;
185 }
186
187 public String getImportantIcon() {
188 return null;
189 }
190
191 public boolean hasImportantButton() {
192 return true;
193 }
194
195// public void createIntelInfo(TooltipMakerAPI info, ListInfoMode mode) {
196// info.addPara("Override .createIntelInfo()", Misc.getNegativeHighlightColor(), 0f);
197// }
198
199 protected void addBulletPoints(TooltipMakerAPI info, ListInfoMode mode) {
200 float pad = 3f;
201 float opad = 10f;
202
203 float initPad = pad;
204 if (mode == ListInfoMode.IN_DESC) initPad = opad;
205
206 Color tc = getBulletColorForMode(mode);
207
208 boolean isUpdate = getListInfoParam() != null;
209
210 bullet(info);
211 addBulletPoints(info, mode, isUpdate, tc, initPad);
212 unindent(info);
213 }
214
215 protected void addBulletPoints(TooltipMakerAPI info, ListInfoMode mode, boolean isUpdate,
216 Color tc, float initPad) {
217
218 }
219
220 public void createIntelInfo(TooltipMakerAPI info, ListInfoMode mode) {
221 if (getName() != null) {
222 Color c = getTitleColor(mode);
223 info.addPara(getName(), c, 0f);
224 }
225 addBulletPoints(info, mode);
226 }
227
228 protected String getName() {
229 return null;
230 }
231
232
233 public boolean hasSmallDescription() {
234 return true;
235 }
236
237 public void createSmallDescription(TooltipMakerAPI info, float width, float height) {
238 info.addPara("Override .createSmallDescription()", Misc.getNegativeHighlightColor(), 0f);
239 }
240
241 public boolean hasLargeDescription() {
242 return false;
243 }
244
245 public void createLargeDescription(CustomPanelAPI panel, float width, float height) {
246 TooltipMakerAPI desc = panel.createUIElement(width, height, true);
247 desc.addPara("Override .createLargeDescription()", Misc.getNegativeHighlightColor(), 0f);
248 panel.addUIElement(desc).inTL(0, 0);
249 }
250
251 public String getIcon() {
252 return null;
253 }
254
255// public float getIconBrightness() {
256// if (isEnding() || isEnded()) return 0.5f;
257// return 1f;
258// }
259
260 public Color getBackgroundGlowColor() {
261 return null;
262 }
263
264 public boolean shouldRemoveIntel() {
265// if (this instanceof CommSnifferIntel) {
266// System.out.println("wefwefe");
267// }
268// if (isImportant()) return false;
269
270 if (timestamp == null && isEnding()) {
271 return true; // already ending, and not yet player-visible; remove
272 }
273 return isEnded();
274 }
275
276 public Set<String> getIntelTags(SectorMapAPI map) {
277 Set<String> tags = new LinkedHashSet<String>();
278 if (isImportant()) {
279 tags.add(Tags.INTEL_IMPORTANT);
280 }
281 if (isNew()) {
282 tags.add(Tags.INTEL_NEW);
283 }
284 if (map != null) {
285 SectorEntityToken loc = getMapLocation(map);
286 if (loc != null) {
287 float max = Global.getSettings().getFloat("maxRelayRangeInHyperspace");
288 float dist = Misc.getDistanceLY(loc.getLocationInHyperspace(), Global.getSector().getPlayerFleet().getLocationInHyperspace());
289 if (dist <= max) {
290 tags.add(Tags.INTEL_LOCAL);
291 }
292 }
293 }
294
295// FactionAPI faction = getFactionForUIColors();
296// if (faction != null && !faction.isPlayerFaction()) {
297// if (faction.isHostileTo(Factions.PLAYER)) {
298// tags.add(Tags.INTEL_HOSTILE);
299// } else {
300// tags.add(Tags.INTEL_NOT_HOSTILE);
301// }
302// }
303
304 return tags;
305 }
306
307
308 public boolean isImportant() {
309 return important != null && important;
310 }
311
312 public void setImportant(Boolean important) {
313 this.important = important;
314 if (this.important != null && !this.important) {
315 this.important = null;
316 }
317 }
318
319 public FactionAPI getFactionForUIColors() {
320 return Global.getSector().getPlayerFaction();
321 }
322
323 public boolean doesButtonHaveConfirmDialog(Object buttonId) {
324 if (buttonId == BUTTON_DELETE) {
325 return true;
326 }
327 return false;
328 }
329 public float getConfirmationPromptWidth(Object buttonId) {
330 return 550f;
331 }
332
333 protected void createDeleteConfirmationPrompt(TooltipMakerAPI prompt) {
334 prompt.addPara("Are you sure you want to permanently delete this fleet log entry?", Misc.getTextColor(), 0f);
335 }
336
337 public void createConfirmationPrompt(Object buttonId, TooltipMakerAPI prompt) {
338 if (buttonId == BUTTON_DELETE) {
340 }
341 }
342
343 public String getConfirmText(Object buttonId) {
344 return "Confirm";
345 }
346
347 public String getCancelText(Object buttonId) {
348 return "Cancel";
349 }
350
351 protected void addDeleteButton(TooltipMakerAPI info, float width) {
352 addDeleteButton(info, width, "Delete log entry");
353 }
354 protected void addDeleteButton(TooltipMakerAPI info, float width, String delete) {
355 float opad = 10f;
356 ButtonAPI button = info.addButton(delete, BUTTON_DELETE,
357 getFactionForUIColors().getBaseUIColor(), getFactionForUIColors().getDarkUIColor(),
358 (int)(width), 20f, opad * 2f);
359 button.setShortcut(Keyboard.KEY_G, true);
360 }
361
362 public void buttonPressConfirmed(Object buttonId, IntelUIAPI ui) {
363 if (buttonId == BUTTON_DELETE) {
365 ui.recreateIntelUI();
366 return;
367 }
368 ui.updateUIForItem(this);
369 }
370
371// public void buttonPressConfirmed(Object buttonId, IntelUIAPI ui) {
372// ui.updateUIForItem(this);
373// }
374
375 public void buttonPressCancelled(Object buttonId, IntelUIAPI ui) {
376 }
377
378 public boolean isPlayerVisible() {
379 if (isHidden()) return false;
380 if (isEnded()) return false;
381 return timestamp != null;
382 }
383
385 return timestamp;
386 }
387
389 this.timestamp = timestamp;
390 }
391
393 long ts = Global.getSector().getClock().getTimestamp();
394 if (timestamp != null) ts = timestamp;
395 return Global.getSector().getClock().getElapsedDaysSince(ts);
396 }
397
398 public void reportPlayerClickedOn() {
399 neverClicked = null; // makes it lose "new" status
400 }
401
402 public boolean isNew() {
403 Long ts = getPlayerVisibleTimestamp();
404 if (ts == null) ts = 0L;
405 float days = Global.getSector().getClock().getElapsedDaysSince(ts);
406 return neverClicked != null && neverClicked && days < NEW_DAYS;
407 }
408
409 public void setNew(boolean isNew) {
410 if (isNew) {
411 neverClicked = true;
412 } else {
413 neverClicked = null;
414 }
415 }
416
417 public IntelSortTier getSortTier() {
418 if (isEnding()) {
419 return IntelSortTier.TIER_COMPLETED;
420 }
421 return IntelSortTier.TIER_3;
422 }
423
424 public String getSortString() {
425 return getName();
426 //return null;
427 }
428
429 public boolean autoAddCampaignMessage() {
430 return !isHidden();
431 }
432
433 public String getCommMessageSound() {
434 if (isSendingUpdate()) {
435 return getSoundStandardUpdate();
436 }
438 }
439
440
441 protected Boolean hidden = null;
442 public boolean isHidden() {
443 // never mind; handled by making comm relay in Galatia non-functional until the jump-point is stabilized
444 // but procurement missions etc generated inside Galatia still show up, so: need to do this
445 return TutorialMissionIntel.isTutorialInProgress() || hidden != null;
446 //return hidden != null;
447 }
448
449
450 public void setHidden(boolean hidden) {
451 if (hidden) {
452 this.hidden = hidden;
453 } else {
454 this.hidden = null;
455 }
456 }
457
458
460
461 }
462
463 protected float getCommRelayRange() {
464 return Global.getSettings().getFloat("maxRelayRangeInHyperspace");
465 }
466
467 public boolean canMakeVisibleToPlayer(boolean playerInRelayRange) {
468 return canMakeVisible(playerInRelayRange,
469 Global.getSector().getPlayerFleet().getContainingLocation(),
470 Global.getSector().getPlayerFleet().getLocationInHyperspace(), false);
471 }
472
473 public boolean canMakeVisibleToCommSniffer(boolean playerInRelayRange, SectorEntityToken relay) {
474 return canMakeVisible(playerInRelayRange, relay.getContainingLocation(),
475 relay.getLocationInHyperspace(), true);
476 }
477
478 public boolean canMakeVisible(boolean playerInRelayRange, LocationAPI conLoc, Vector2f hyperLoc,
479 boolean commSniffer) {
480 if (isEnding()) return false;
481
482 if (postingLocation != null) {
483 float rangeLY = 0f;
484 if (postingRangeLY != null) {
485 rangeLY = postingRangeLY;
486 } else { // unless a range of 0 is specified, get local messages when nearing system
487 rangeLY = getCommRelayRange();
488 }
489
490 float commRange = 0f;
491 if (postingLocation.isInHyperspace()) {
492 commRange = getCommRelayRange();
493 rangeLY = Math.max(rangeLY, commRange);
494 }
495
496 boolean sameLoc = postingLocation.getContainingLocation() != null &&
497 postingLocation.getContainingLocation() ==
498 conLoc;
499 if (rangeLY <= 0 && !sameLoc) {
500 return false;
501 }
502
503 if (playerInRelayRange) {
504 float dist = Misc.getDistanceLY(postingLocation.getLocationInHyperspace(),
505 hyperLoc);
506 return dist <= rangeLY;
507 } else {
508 if (postingLocation.isInHyperspace()) {
509 float dist = Misc.getDistanceLY(postingLocation.getLocationInHyperspace(),
510 hyperLoc);
511 return dist < commRange && (!commSniffer || playerInRelayRange);
512 } else {
513 return sameLoc && (!commSniffer || playerInRelayRange);
514 }
515 }
516 }
517
518 return playerInRelayRange;
519 }
520
521 public SectorEntityToken getPostingLocation() {
522 return postingLocation;
523 }
524
525 public void setPostingLocation(SectorEntityToken postingLocation) {
526 this.postingLocation = postingLocation;
527 }
528
529 public Float getPostingRangeLY() {
530 return postingRangeLY;
531 }
532
535 }
536 public void setPostingRangeLY(Float postingRangeLY, boolean ensureVisibleOutsideSystem) {
537 if (ensureVisibleOutsideSystem) {
538 if (postingRangeLY == null) postingRangeLY = 0f;
540 }
541 this.postingRangeLY = postingRangeLY;
542 }
543
544
545 public void reportRemovedIntel() {
546
547 }
548
549 public SectorEntityToken getMapLocation(SectorMapAPI map) {
550 return null;
551 }
552
553
554 protected void bullet(TooltipMakerAPI info) {
555 info.setBulletedListMode(" - ");
556 if (listInfoParam != null && false) {
557 info.setTextWidthOverride(0);
558 } else {
559 info.setTextWidthOverride(LIST_ITEM_TEXT_WIDTH);
560 }
561 }
562 protected void indent(TooltipMakerAPI info) {
563 info.setBulletedListMode(" ");
564 if (listInfoParam != null && false) {
565 info.setTextWidthOverride(0);
566 } else {
567 info.setTextWidthOverride(LIST_ITEM_TEXT_WIDTH);
568 }
569 }
570 protected void unindent(TooltipMakerAPI info) {
571 info.setBulletedListMode(null);
572 info.setTextWidthOverride(0);
573 }
574
575 protected void addDays(TooltipMakerAPI info, String after, float days) {
576 addDays(info, after, days, null);
577 }
578 protected void addDays(TooltipMakerAPI info, String after, float days, Color c) {
579 addDays(info, after, days, c, 0f);
580 }
581 protected void addDays(TooltipMakerAPI info, String after, float days, Color c, float pad) {
582 String pre = "";
583 if (info.getBulletedListPrefix() != null) {
584 pre = "";
585 }
586
587 int d = (int) Math.round(days);
588 String daysStr = "days";
589 if (d <= 1) {
590 d = 1;
591 daysStr = "day";
592 }
593 if (c == null) c = Misc.getGrayColor();
594 info.addPara(pre + "%s " + daysStr + " " + after, pad, c,
595 Misc.getHighlightColor(), "" + d);
596 }
597
598 protected String getDays(float days) {
599 return "" + (int) Math.round(days);
600 }
601 public static String getDaysString(float days) {
602 int d = (int) Math.round(days);
603 String daysStr = "days";
604 if (d == 1) {
605 d = 1;
606 daysStr = "day";
607 }
608 return daysStr;
609 }
610
611 public String getSmallDescriptionTitle() {
612 return getName();
613 }
614
615 public Color getTitleColor(ListInfoMode mode) {
616 boolean isUpdate = getListInfoParam() != null;
617 if (isEnding() && !isUpdate && mode != ListInfoMode.IN_DESC) {
618 return Misc.getGrayColor();
619 }
620 return Global.getSector().getPlayerFaction().getBaseUIColor();
621 }
622
623// public static Color getListMessageBulletColor() {
624// //return Misc.getGrayColor();
625// return Misc.getTextColor();
626// }
627//
628// public static Color getIntelListBulletColor() {
629// return Misc.getGrayColor();
630// //return Misc.getTextColor();
631// }
632
633 protected Color getBulletColorForMode(ListInfoMode mode) {
634 //boolean isUpdate = getListInfoParam() != null;
635 Color tc = Misc.getTextColor();
636 //if (true) return tc;
637 Color g = Misc.getGrayColor();
638 switch (mode) {
639 case INTEL: return g;
640 case MAP_TOOLTIP: return tc;
641 case IN_DESC: return tc;
642 case MESSAGES: return tc;
643 }
644
645 return g;
646 }
647
648
649 public boolean callEvent(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
650 return false;
651 }
652
653
654 public static String getSoundStandardPosting() {
655 return "ui_intel_something_posted";
656 }
657
658 public static String getSoundStandardUpdate() {
659 return "ui_intel_update";
660 }
661
662 public static String getSoundMajorPosting() {
663 return "ui_intel_major_posted";
664 }
665
666 public static String getSoundColonyThreat() {
667 return "colony_threat";
668 }
669
670 public static String getSoundLogUpdate() {
671 return "ui_intel_log_update";
672 }
673
674 public static String getSoundMinorMessage() {
675 return "ui_intel_minor_message";
676 }
677
678 public List<ArrowData> getArrowData(SectorMapAPI map) {
679 return null;
680 }
681
682
684 return 0;
685 }
686
687
688 public ButtonAPI addGenericButton(TooltipMakerAPI info, float width, String text, Object data) {
689 return addGenericButton(info, width,
690 getFactionForUIColors().getBaseUIColor(), getFactionForUIColors().getDarkUIColor(), text, data);
691 }
692 public ButtonAPI addGenericButton(TooltipMakerAPI info, float width, Color tc, Color bg, String text, Object data) {
693 float opad = 10f;
694 ButtonAPI button = info.addButton(text, data, tc, bg,
695 (int)(width), 20f, opad * 2f);
696 return button;
697 }
698
699
700 protected Boolean forceAdd = null;
701 public boolean forceAddNextFrame() {
702 return forceAdd != null;
703 }
704
705 public void setForceAddNextFrame(boolean add) {
706 if (add) {
707 forceAdd = true;
708 } else {
709 forceAdd = null;
710 }
711 }
712
713 public static void addMarketToList(TooltipMakerAPI info, MarketAPI market, float pad) {
714 addMarketToList(info, market, pad, null);
715 }
716
717 public static void addMarketToList(TooltipMakerAPI info, MarketAPI market, float pad, Color tc) {
718 if (tc == null) tc = Misc.getTextColor();
720 if (info.getBulletedListPrefix() != null) indent = "";
721 LabelAPI label = info.addPara(indent + market.getName() + " (size %s, %s)",
722 //faction.getPersonNamePrefixAOrAn() + " %s colony.",
723 pad, tc, market.getFaction().getBaseUIColor(),
724 "" + (int) market.getSize(),
725 market.getFaction().getDisplayName());
726
727 label.setHighlight("" + (int) market.getSize(), market.getFaction().getDisplayName());
728 label.setHighlightColors(Misc.getHighlightColor(), market.getFaction().getBaseUIColor());
729 }
730
731 public static void addMarketTable(TooltipMakerAPI info, Color base, Color dark, Color bright, List<MarketAPI> markets, float width, float pad) {
732 Color h = Misc.getHighlightColor();
733 FactionAPI f = Global.getSector().getPlayerFaction();
734 info.beginTable(base, dark, bright, 20f, "Colony", 130f, "Faction", 130f, "Size", width - 260f);
735 for (MarketAPI market : markets) {
736 //info.addRow(Misc.getTextColor(), market.getName(),
737 info.addRow(market.getFaction().getBaseUIColor(), market.getName(),
738 market.getFaction().getBaseUIColor(), market.getFaction().getDisplayName(),
739 h, "" + market.getSize());
740 }
741
742 info.addTable("None", 0, pad);
743 info.addSpacer(5f);
744 }
745
746 public StoryPointActionDelegate getButtonStoryPointActionDelegate(Object buttonId) {
747 return null;
748 }
749
750 public void storyActionConfirmed(Object buttonId, IntelUIAPI ui) {
751
752 }
753
755 // TODO Auto-generated method stub
756 return null;
757 }
758
759 public void tableRowClicked(IntelUIAPI ui, TableRowClickData data) {
760
761 }
762
763}
764
765
766
767
768
769
static SettingsAPI getSettings()
Definition Global.java:51
static SectorAPI getSector()
Definition Global.java:59
void buttonPressCancelled(Object buttonId, IntelUIAPI ui)
void addBulletPoints(TooltipMakerAPI info, ListInfoMode mode, boolean isUpdate, Color tc, float initPad)
static void addMarketTable(TooltipMakerAPI info, Color base, Color dark, Color bright, List< MarketAPI > markets, float width, float pad)
void createLargeDescription(CustomPanelAPI panel, float width, float height)
void sendUpdate(Object listInfoParam, TextPanelAPI textPanel)
void setPostingLocation(SectorEntityToken postingLocation)
ButtonAPI addGenericButton(TooltipMakerAPI info, float width, String text, Object data)
void addDays(TooltipMakerAPI info, String after, float days)
void addDeleteButton(TooltipMakerAPI info, float width, String delete)
void createConfirmationPrompt(Object buttonId, TooltipMakerAPI prompt)
boolean canMakeVisibleToCommSniffer(boolean playerInRelayRange, SectorEntityToken relay)
void addDays(TooltipMakerAPI info, String after, float days, Color c, float pad)
boolean callEvent(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
void storyActionConfirmed(Object buttonId, IntelUIAPI ui)
static void addMarketToList(TooltipMakerAPI info, MarketAPI market, float pad, Color tc)
void addBulletPoints(TooltipMakerAPI info, ListInfoMode mode)
void sendUpdateIfPlayerHasIntel(Object listInfoParam, boolean onlyIfImportant)
void addDeleteButton(TooltipMakerAPI info, float width)
void buttonPressConfirmed(Object buttonId, IntelUIAPI ui)
void createSmallDescription(TooltipMakerAPI info, float width, float height)
void sendUpdateIfPlayerHasIntel(Object listInfoParam, TextPanelAPI textPanel)
StoryPointActionDelegate getButtonStoryPointActionDelegate(Object buttonId)
void sendUpdateIfPlayerHasIntel(Object listInfoParam, boolean onlyIfImportant, boolean sendIfHidden)
ButtonAPI addGenericButton(TooltipMakerAPI info, float width, Color tc, Color bg, String text, Object data)
boolean canMakeVisible(boolean playerInRelayRange, LocationAPI conLoc, Vector2f hyperLoc, boolean commSniffer)
void tableRowClicked(IntelUIAPI ui, TableRowClickData data)
void addDays(TooltipMakerAPI info, String after, float days, Color c)
static void addMarketToList(TooltipMakerAPI info, MarketAPI market, float pad)
boolean canMakeVisibleToPlayer(boolean playerInRelayRange)
void createIntelInfo(TooltipMakerAPI info, ListInfoMode mode)
void setPostingRangeLY(Float postingRangeLY, boolean ensureVisibleOutsideSystem)