Class TargetingStrategy

java.lang.Object
de.gurkenlabs.litiengine.abilities.targeting.TargetingStrategy
Direct Known Subclasses:
CustomTargetingStrategy, ExecutingEntityTargetingStrategy, ExecutingEntityTargetTargetingStrategy, OtherEntityTargetingStrategy

public abstract class TargetingStrategy extends Object
The abstract class `TargetingStrategy` defines the logic for selecting targets based on various strategies. It allows for different ways to filter, sort, and select one or more targets in a game environment based on factors like distance or custom conditions.
  • Constructor Details

    • TargetingStrategy

      protected TargetingStrategy(boolean multiTarget, boolean sortByDistance)
      Constructor for the `TargetingStrategy` class.
      Parameters:
      multiTarget - Specifies if the strategy supports selecting multiple targets.
      sortByDistance - Specifies if the strategy should prioritize targets by distance.
  • Method Details

    • findTargets

      public Collection<ICombatEntity> findTargets(Shape impactArea, ICombatEntity executor)
      Finds and returns a collection of combat entities that match the target criteria defined by the strategy. This method applies internal logic for finding targets and then optionally filters and sorts them based on the additional condition and distance priority settings.
      Parameters:
      impactArea - The area where the effect or action is applied.
      executor - The entity executing the action (e.g., the player or an NPC).
      Returns:
      A collection of `ICombatEntity` instances representing the selected targets.
    • findTargetsInternal

      protected abstract Collection<ICombatEntity> findTargetsInternal(Shape impactArea, ICombatEntity executor)
      Finds target entities in the impact area. This is implemented by the individual strategies.
      Parameters:
      impactArea - The area where the effect is applied.
      executor - The entity executing the action.
      Returns:
      A collection of `ICombatEntity` instances that match the strategy criteria.
    • isMultiTarget

      public boolean isMultiTarget()
    • setMultiTarget

      public void setMultiTarget(boolean multiTarget)
    • prioritizeByDistance

      public boolean prioritizeByDistance()
    • setPrioritizeByDistance

      public void setPrioritizeByDistance(boolean prioritizeByDistance)
    • setCustomTargetPriorityComparator

      public void setCustomTargetPriorityComparator(Comparator<IEntity> customTargetPriorityComparator)
    • withCondition

      public TargetingStrategy withCondition(BiPredicate<ICombatEntity,ICombatEntity> customCondition)
      Adds a custom condition to the targeting strategy.
      Parameters:
      customCondition - A condition that adds further filtering based on the executor and target.
      Returns:
      The current `TargetingStrategy` instance, allowing for method chaining.
    • enemies

      public static TargetingStrategy enemies()
      Returns a strategy that targets enemy entities.
      Returns:
      An instance of `EnemyTargetingStrategy`.
    • executingEntity

      public static TargetingStrategy executingEntity()
      Returns a strategy that targets the entity executing the action.
      Returns:
      An instance of `ExecutingEntityTargetingStrategy`.
    • friendly

      public static TargetingStrategy friendly()
      Returns a strategy that targets friendly entities.
      Returns:
      An instance of `FriendlyTargetingStrategy`.
    • friendlyDead

      public static TargetingStrategy friendlyDead()
      Returns a strategy that targets dead friendly entities.
      Returns:
      An instance of `FriendlyTargetingStrategy`.
    • custom

      public static TargetingStrategy custom(BiPredicate<ICombatEntity,ICombatEntity> customPredicate)
      Returns a strategy that uses a custom condition to filter targets.
      Parameters:
      customPredicate - A condition to define custom logic for target selection.
      Returns:
      An instance of `CustomTargetingStrategy`.
    • none

      public static TargetingStrategy none()
      Returns a strategy that targets no entities.
      Returns:
      A `TargetingStrategy` that selects no entities.