001package com.fs.starfarer.api.impl.campaign.missions.hub;
002
003import java.util.ArrayList;
004import java.util.LinkedHashMap;
005import java.util.LinkedHashSet;
006import java.util.List;
007import java.util.Map;
008
009import org.lwjgl.util.vector.Vector2f;
010
011import com.fs.starfarer.api.campaign.CampaignFleetAPI;
012import com.fs.starfarer.api.campaign.LocationAPI;
013import com.fs.starfarer.api.campaign.PlanetAPI;
014import com.fs.starfarer.api.campaign.SectorEntityToken;
015import com.fs.starfarer.api.campaign.StarSystemAPI;
016import com.fs.starfarer.api.campaign.econ.MarketAPI;
017import com.fs.starfarer.api.characters.PersonAPI;
018import com.fs.starfarer.api.impl.campaign.missions.hub.BaseHubMission.ConditionChecker;
019
020public class MissionTrigger {
021
022        public static class TriggerActionContext {
023                public HubMission mission;
024                public CampaignFleetAPI fleet;
025                public SectorEntityToken entity;
026                public SectorEntityToken token;
027                public PersonAPI person;
028                public MarketAPI market;
029                public PlanetAPI planet;
030                public StarSystemAPI system;
031                public int counter;
032                
033                public LocationAPI containingLocation;
034                public Vector2f coordinates;
035                public SectorEntityToken jumpPoint;
036                
037                public Map<String, Object> custom = new LinkedHashMap<String, Object>();
038                public Object custom1;
039                public Object custom2;
040                public Object custom3;
041                
042                public String patrolText;
043                public String travelText;
044                
045                public boolean makeAllFleetFlagsPermanent = false;
046                
047                public List<CampaignFleetAPI> allFleets = new ArrayList<CampaignFleetAPI>();
048
049                public TriggerActionContext(HubMission mission) {
050                        this.mission = mission;
051                }
052                
053        }
054        
055        public static interface TriggerAction {
056                void doAction(TriggerActionContext context);
057        }
058        
059        
060        /**
061         * Optional, null by default.
062         * Set by calling
063         * getCurrentTrigger().setId(id)
064         * After beginning a trigger.
065         */
066        protected String id = null;
067        protected ConditionChecker condition;
068        protected LinkedHashSet<Object> stages = new LinkedHashSet<Object>();
069        protected List<TriggerAction> actions = new ArrayList<TriggerAction>();
070        
071        public ConditionChecker getCondition() {
072                return condition;
073        }
074        public void setCondition(ConditionChecker condition) {
075                this.condition = condition;
076        }
077        public LinkedHashSet<Object> getStages() {
078                return stages;
079        }
080        public List<TriggerAction> getActions() {
081                return actions;
082        }
083        public String getId() {
084                return id;
085        }
086        public void setId(String id) {
087                this.id = id;
088        }
089}