001package com.fs.starfarer.api.campaign.events; 002 003import java.util.List; 004 005import com.fs.starfarer.api.campaign.LocationAPI; 006import com.fs.starfarer.api.campaign.SectorEntityToken; 007import com.fs.starfarer.api.campaign.econ.MarketAPI; 008 009public interface CampaignEventManagerAPI { 010 EventProbabilityAPI getProbability(String eventType, SectorEntityToken eventTargetEntity); 011 EventProbabilityAPI getProbability(String eventType, LocationAPI eventTargetLocation); 012 EventProbabilityAPI getProbability(String eventType, CampaignEventTarget target); 013 EventProbabilityAPI getProbability(String eventType, MarketAPI market); 014 EventProbabilityAPI getProbability(String eventType, Object custom); 015 016 /** 017 * Whether an event associated with this probability is already ongoing. 018 * Only one event of a given type can occur at a time for a given event target. 019 * @param ep 020 * @return 021 */ 022 boolean isOngoing(EventProbabilityAPI ep); 023 boolean isOngoing(CampaignEventTarget eventTarget, String eventType); 024 025 /** 026 * Starts an event immediately, bypassing any probability checks. Returns null 027 * if failed to start the event because there's already an ongoing event of the 028 * same type, or the event plugin otherwise. 029 * 030 * param gets passed in to the event via CampaignEventPlugin.setParam(). 031 * 032 * @param eventTarget can be null if the event doesn't have a specific target. 033 * @param eventType 034 * @param param 035 * @return 036 */ 037 CampaignEventPlugin startEvent(CampaignEventTarget eventTarget, String eventType, Object param); 038 039 040 CampaignEventPlugin getOngoingEvent(CampaignEventTarget eventTarget, String eventType); 041 void endEvent(CampaignEventPlugin event); 042 043 /** 044 * Initialize the event plugin, but don't actually start the event. 045 * Useful if the event is needed for doing token replacement in reports, for example, but 046 * it's not desired for the event to start. 047 * 048 * Will return null if the event can't be created for any reason - for example, if another event 049 * of the same type is ongoing for this target and the event doesn't allow multiple ongoing 050 * at the same time. 051 * 052 * @param eventTarget 053 * @param eventType 054 * @param param 055 * @return 056 */ 057 CampaignEventPlugin primeEvent(CampaignEventTarget eventTarget, String eventType, Object param); 058 059 /** 060 * Start an event previously created with primeEvent() 061 * @param primedEvent 062 */ 063 void startEvent(CampaignEventPlugin primedEvent); 064 int getNumOngoing(String eventType); 065 List<CampaignEventPlugin> getOngoingEvents(); 066} 067 068 069