001package com.fs.starfarer.api.campaign.ai;
002
003import com.fs.starfarer.api.campaign.CampaignFleetAPI;
004
005/**
006 * 
007 * Assignment module: keeps track of assignments and when they are completed (due to time or proximity), 
008 * doesn't do any thinking.
009 * 
010 * Strategic module: figures out how to go about doing assignments - what the current
011 * destination is, jump plans, etc.
012 * 
013 * Tactical module: takes strategic considerations and combines with local conditions,
014 * i.e. terrain, hostile fleets, etc. Also handles encounter decisions, since those need to be consistent
015 * with tactical ones (i.e. no pursuing a fleet it then won't want to engage).
016 * The tactical module is the one that sets the fleet's movement destination.
017 * 
018 * Navigation module: figures out the best direction to move in, given what the tactical module
019 * decides matters. Tactical module then may use the result if it wants to.
020 * 
021 * 
022 * Ability AI plugins: communicate with the above using the fleet's memory.
023 * 
024 * @author Alex Mosolov
025 *
026 * Copyright 2015 Fractal Softworks, LLC
027 */
028public interface ModularFleetAIAPI extends CampaignFleetAIAPI {
029
030        CampaignFleetAPI getFleet();
031        
032        NavigationModulePlugin getNavModule();
033        void setNavModule(NavigationModulePlugin navModule);
034        
035        AssignmentModulePlugin getAssignmentModule();
036        void setAssignmentModule(AssignmentModulePlugin assignmentModule);
037        
038        StrategicModulePlugin getStrategicModule();
039        void setStrategicModule(StrategicModulePlugin strategicModule);
040        
041        TacticalModulePlugin getTacticalModule();
042        void setTacticalModule(TacticalModulePlugin tacticalModule);
043}
044
045
046
047
048
049
050
051