001package com.fs.starfarer.api.impl.campaign.missions.cb;
002
003import java.awt.Color;
004import java.util.ArrayList;
005import java.util.HashMap;
006import java.util.List;
007import java.util.Map;
008
009import com.fs.starfarer.api.campaign.CampaignFleetAPI;
010import com.fs.starfarer.api.campaign.StarSystemAPI;
011import com.fs.starfarer.api.campaign.TextPanelAPI;
012import com.fs.starfarer.api.campaign.econ.MarketAPI;
013import com.fs.starfarer.api.impl.campaign.CoreReputationPlugin.RepRewards;
014import com.fs.starfarer.api.impl.campaign.missions.hub.BaseHubMission.Abortable;
015import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithBarEvent;
016import com.fs.starfarer.api.impl.campaign.missions.hub.HubMissionWithSearch.StarSystemRequirement;
017import com.fs.starfarer.api.ui.TooltipMakerAPI;
018
019public interface CustomBountyCreator extends StarSystemRequirement {
020        
021        public static int MIN_DIFFICULTY = 0;
022        public static int MAX_DIFFICULTY = 10;
023        
024        public class CustomBountyData {
025                public Map<Object, Object> customMap = new HashMap<Object, Object>();
026                public Object custom1;
027                public Object custom2;
028                public Object custom3;
029                public Object stage;
030                
031                public int baseReward;
032                public float repPerson = RepRewards.MEDIUM;
033                public float repFaction = RepRewards.TINY;
034                public CampaignFleetAPI fleet;
035                public StarSystemAPI system;
036                public MarketAPI market;
037                public int difficulty;
038                
039                public List<Abortable> abortWhenOtherVersionAccepted = new ArrayList<Abortable>();
040        }
041        
042        
043        String getId();
044        float getFrequency(HubMissionWithBarEvent mission, int difficulty);
045        
046        CustomBountyData createBounty(MarketAPI createdAt, HubMissionWithBarEvent mission, int difficulty, Object bountyStage);
047        void notifyAccepted(MarketAPI createdAt, HubMissionWithBarEvent mission, CustomBountyData data);
048        
049        void addIntelAssessment(TextPanelAPI text, HubMissionWithBarEvent mission, CustomBountyData data);
050        void addFleetDescription(TooltipMakerAPI info, float width, float height, HubMissionWithBarEvent mission, CustomBountyData data);
051        
052        void notifyCompleted(HubMissionWithBarEvent mission, CustomBountyData data);
053        void notifyFailed(HubMissionWithBarEvent mission, CustomBountyData data);
054        
055        int getMinDifficulty();
056        int getMaxDifficulty();
057        
058        StarSystemAPI getSystemWithNoTimeLimit(CustomBountyData data);
059        
060        String getBaseBountyName(HubMissionWithBarEvent mission, CustomBountyData data);
061        String getBountyNamePostfix(HubMissionWithBarEvent mission, CustomBountyData data);
062        
063        float getBountyDays();
064        
065        void updateInteractionData(HubMissionWithBarEvent mission, CustomBountyData data);
066        void addTargetLocationAndDescription(TooltipMakerAPI info, float width, float height, HubMissionWithBarEvent mission, CustomBountyData data);
067        void addTargetLocationAndDescriptionBulletPoint(TooltipMakerAPI info, Color tc, float pad, HubMissionWithBarEvent mission, CustomBountyData data);
068        String getIconName();
069}