001package com.fs.starfarer.api.impl.campaign.intel.events;
002
003import java.util.Random;
004
005import java.awt.Color;
006
007import com.fs.starfarer.api.campaign.CampaignFleetAPI;
008import com.fs.starfarer.api.campaign.StarSystemAPI;
009import com.fs.starfarer.api.campaign.comm.IntelInfoPlugin.ListInfoMode;
010import com.fs.starfarer.api.impl.campaign.intel.events.BaseEventIntel.EventStageData;
011import com.fs.starfarer.api.impl.campaign.intel.events.HostileActivityEventIntel.HAERandomEventData;
012import com.fs.starfarer.api.ui.TooltipMakerAPI;
013import com.fs.starfarer.api.ui.TooltipMakerAPI.TooltipCreator;
014
015public interface HostileActivityFactor {
016
017        String getId();
018        
019        String getNameForThreatList(boolean first);
020        Color getNameColorForThreatList();
021        
022        float getEffectMagnitude(StarSystemAPI system);
023        int getMaxNumFleets(StarSystemAPI system);
024        float getStayInHyperProbability(StarSystemAPI system);
025        float getSpawnInHyperProbability(StarSystemAPI system);
026        float getSpawnFrequency(StarSystemAPI system);
027        
028        CampaignFleetAPI createFleet(StarSystemAPI system, Random random);
029
030        void setRandomizedStageSeed(long seed);
031        float getEventFrequency(HostileActivityEventIntel intel, EventStageData stage);
032        void rollEvent(HostileActivityEventIntel intel, EventStageData stage);
033        void addBulletPointForEvent(HostileActivityEventIntel intel, EventStageData stage, 
034                                                            TooltipMakerAPI info, ListInfoMode mode, boolean isUpdate, 
035                                                                Color tc, float initPad);
036
037        void addStageDescriptionForEvent(HostileActivityEventIntel intel, EventStageData stage, TooltipMakerAPI info);
038        //boolean canEscalate(HostileActivityEventIntel intel, EventStageData stage);
039
040        String getEventStageIcon(HostileActivityEventIntel intel, EventStageData stage);
041        String getEventStageSound(HAERandomEventData data);
042        
043        TooltipCreator getStageTooltipImpl(HostileActivityEventIntel intel, EventStageData stage);
044
045        void resetEvent(HostileActivityEventIntel intel, EventStageData stage);
046
047        void addBulletPointForEventReset(HostileActivityEventIntel intel, EventStageData stage, TooltipMakerAPI info,
048                        ListInfoMode mode, boolean isUpdate, Color tc, float initPad);
049
050        boolean fireEvent(HostileActivityEventIntel intel, EventStageData stage);
051}