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