-
- All Implemented Interfaces:
-
com.fs.starfarer.api.combat.AutofireAIPlugin
public abstract class SpecificAIPluginBase implements AutofireAIPlugin
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description public classSpecificAIPluginBase.Companion
-
Field Summary
Fields Modifier and Type Field Description private FiringSolutionsolutionprivate final AutofireAIPluginbaseAI
-
Constructor Summary
Constructors Constructor Description SpecificAIPluginBase(AutofireAIPlugin baseAI, Boolean customAIActive)
-
Method Summary
Modifier and Type Method Description final FiringSolutiongetSolution()final UnitsetSolution(FiringSolution solution)final AutofireAIPlugingetBaseAI()abstract FloatcomputeTargetPriority(FiringSolution solution)abstract List<CombatEntityAPI>getRelevantEntitiesWithinRange()abstract List<CombatEntityAPI>getRelevenEntitiesOutOfRange()abstract BooleanisBaseAITargetValid(ShipAPI ship, MissileAPI missile)abstract BooleanisBaseAIOverwritable()abstract BooleanisValid()perform checks to see if this AI is compatible with the weapon if this returns false, the base AI will be used instead Unitadvance(Float p0)final BooleanadvanceBaseAI(Float p0)final UnitadvanceWithCustomAI()List<FiringSolution>getFriendlies()final UnitdetermineTargetLeadingAccuracy(CombatEntityAPI currentTarget, CombatEntityAPI lastTarget)final Vector2fcompensateTargetPointShipSpeed(Vector2f tgt, Float ttt)final List<FiringSolution>calculateFiringSolutions(List<CombatEntityAPI> potentialTargets)UnitforceOff()Vector2fgetTarget()WeaponAPIgetWeapon()final Vector2fcomputePointToAimAt(CombatEntityAPI tgt)approximate position where the target will be after travel time based on player ship and target velocities. final FloatcomputeTimeToTravel(Vector2f tgt)ShipAPIgetTargetShip()MissileAPIgetTargetMissile()final BooleanisWithinArc(CombatEntityAPI entity)final BooleanisWithinArc(Vector2f position, Float radius)BooleanshouldConsiderNeutralsAsFriendlies()final BooleanisFriendlyFire(List<FiringSolution> friendlies, Vector2f aimPoint)final List<FiringSolution>friendliesInDangerZone(List<FiringSolution> friendlies, Vector2f aimPoint)BooleancomputeIfShouldFire(List<FiringSolution> potentialTargets)final Vector2fcomputePointCurrentlyAimedAt()final FloatcomputeBasePriority(FiringSolution solution)BooleanshouldFire()final BooleanisInRange(Vector2f entity, Float radius)-
-
Constructor Detail
-
SpecificAIPluginBase
SpecificAIPluginBase(AutofireAIPlugin baseAI, Boolean customAIActive)
-
-
Method Detail
-
getSolution
final FiringSolution getSolution()
-
setSolution
final Unit setSolution(FiringSolution solution)
-
getBaseAI
final AutofireAIPlugin getBaseAI()
-
computeTargetPriority
abstract Float computeTargetPriority(FiringSolution solution)
-
getRelevantEntitiesWithinRange
abstract List<CombatEntityAPI> getRelevantEntitiesWithinRange()
-
getRelevenEntitiesOutOfRange
abstract List<CombatEntityAPI> getRelevenEntitiesOutOfRange()
-
isBaseAITargetValid
abstract Boolean isBaseAITargetValid(ShipAPI ship, MissileAPI missile)
-
isBaseAIOverwritable
abstract Boolean isBaseAIOverwritable()
-
isValid
abstract Boolean isValid()
perform checks to see if this AI is compatible with the weapon if this returns false, the base AI will be used instead
-
advanceBaseAI
final Boolean advanceBaseAI(Float p0)
-
advanceWithCustomAI
final Unit advanceWithCustomAI()
-
getFriendlies
List<FiringSolution> getFriendlies()
-
determineTargetLeadingAccuracy
final Unit determineTargetLeadingAccuracy(CombatEntityAPI currentTarget, CombatEntityAPI lastTarget)
-
compensateTargetPointShipSpeed
final Vector2f compensateTargetPointShipSpeed(Vector2f tgt, Float ttt)
-
calculateFiringSolutions
final List<FiringSolution> calculateFiringSolutions(List<CombatEntityAPI> potentialTargets)
-
getTarget
Vector2f getTarget()
-
getWeapon
WeaponAPI getWeapon()
-
computePointToAimAt
final Vector2f computePointToAimAt(CombatEntityAPI tgt)
approximate position where the target will be after travel time based on player ship and target velocities. In a way, this transforms points from an absolute to a "relative" frame Some observations:
angles are in degrees
target ships can strafe, i.e. velocity direction =/= heading
acceleration refers to max possible acceleration, not current acceleration conclusion: Don't use acceleration or angular velocity, they are unreliable
-
computeTimeToTravel
final Float computeTimeToTravel(Vector2f tgt)
-
getTargetShip
ShipAPI getTargetShip()
-
getTargetMissile
MissileAPI getTargetMissile()
-
isWithinArc
final Boolean isWithinArc(CombatEntityAPI entity)
-
isWithinArc
final Boolean isWithinArc(Vector2f position, Float radius)
-
shouldConsiderNeutralsAsFriendlies
Boolean shouldConsiderNeutralsAsFriendlies()
-
isFriendlyFire
final Boolean isFriendlyFire(List<FiringSolution> friendlies, Vector2f aimPoint)
-
friendliesInDangerZone
final List<FiringSolution> friendliesInDangerZone(List<FiringSolution> friendlies, Vector2f aimPoint)
-
computeIfShouldFire
Boolean computeIfShouldFire(List<FiringSolution> potentialTargets)
-
computePointCurrentlyAimedAt
final Vector2f computePointCurrentlyAimedAt()
-
computeBasePriority
final Float computeBasePriority(FiringSolution solution)
-
shouldFire
Boolean shouldFire()
-
-
-
-