Class AITaskComponent

java.lang.Object
com.deco2800.game.components.Component
com.deco2800.game.ai.tasks.AITaskComponent
All Implemented Interfaces:
TaskRunner

public class AITaskComponent extends Component implements TaskRunner
Task-based AI component. Given a list of tasks with priorities, the AI component will run the highest priority task each frame. Tasks can be made up of smaller sub-tasks. A negative priority indicates that the task should not be run.

This is a simple implementation of Goal-Oriented Action Planning (GOAP), a common AI decision algorithm in games that's more powerful than Finite State Machines (FSMs) (State pattern).

  • Constructor Details

    • AITaskComponent

      public AITaskComponent()
  • Method Details

    • addTask

      public AITaskComponent addTask(PriorityTask task)
      Add a priority task to the list of tasks. This task will be run only when it has the highest priority, and can be stopped to run a higher priority task.
      Parameters:
      task - Task to add
      Returns:
      self
    • update

      public void update()
      On update, run the current highest priority task. If it's a different one, stop the old one and start the new one. If the highest priority task has negative priority, no task will be run.
      Overrides:
      update in class Component
    • dispose

      public void dispose()
      Description copied from class: Component
      Called when the component is disposed. Dispose of any internal resources here.
      Overrides:
      dispose in class Component