001package com.fs.starfarer.api.campaign.comm;
002
003import java.util.List;
004
005import com.fs.starfarer.api.campaign.TextPanelAPI;
006
007public interface IntelManagerAPI {
008//      public interface IntelCommQueueItemAPI {
009//              float getDaysLeft();
010//              void setDaysLeft(float daysLeft);
011//              IntelInfoPlugin getPlugin();
012//              void setPlugin(IntelInfoPlugin plugin);
013//      }
014
015        boolean hasIntel(IntelInfoPlugin plugin);
016        boolean hasIntelQueued(IntelInfoPlugin plugin);
017
018        List<IntelInfoPlugin> getIntel();
019        List<IntelInfoPlugin> getIntel(Class c);
020        
021        List<IntelInfoPlugin> getCommQueue();
022        List<IntelInfoPlugin> getCommQueue(Class c);
023
024        boolean unqueueIntel(IntelInfoPlugin plugin);
025        
026        /**
027         * Will become known to the player as soon as they're in comm relay range. Will be unqueued
028         * if not received by the player within maxCommQueueDays days.
029         * @param plugin
030         * @param maxCommQueueDays
031         */
032        void queueIntel(IntelInfoPlugin plugin, float maxCommQueueDays);
033        
034        /**
035         * Will become known to the player as soon as they're in comm relay range. Will remain queued
036         * until it's either received or plugin.shouldRemoveIntel() returns true.
037         * 
038         * @param plugin
039         */
040        void queueIntel(IntelInfoPlugin plugin);
041
042        void addIntel(IntelInfoPlugin plugin);
043        void addIntel(IntelInfoPlugin plugin, boolean forceNoMessage);
044        void addIntel(IntelInfoPlugin plugin, boolean forceNoMessage, TextPanelAPI textPanel);
045        
046        /**
047         * Removes and unqueues.
048         * @param plugin
049         */
050        void removeIntel(IntelInfoPlugin plugin);
051        void removeAllThatShouldBeRemoved();
052        void clear();
053        
054        void addIntelToTextPanel(IntelInfoPlugin plugin, TextPanelAPI textPanel);
055        
056        int getIntelCount(Class c, boolean includeQueued);
057        
058        boolean isPlayerInRangeOfCommRelay();
059        IntelInfoPlugin getFirstIntel(Class c);
060        boolean hasIntelOfClass(Class<?> c);
061        void sortIntel(List<IntelInfoPlugin> toSort);
062
063
064
065
066        
067}