Package com.deco2800.game.ai.tasks
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).
-
Field Summary
-
Constructor Summary
Constructors Constructor Description AITaskComponent()
-
Method Summary
Modifier and Type Method Description AITaskComponent
addTask(PriorityTask task)
Add a priority task to the list of tasks.void
dispose()
Called when the component is disposed.void
update()
On update, run the current highest priority task.Methods inherited from class com.deco2800.game.components.Component
create, earlyUpdate, getEntity, setEnabled, setEntity, toString, triggerEarlyUpdate, triggerUpdate
-
Constructor Details
-
AITaskComponent
public AITaskComponent()
-
-
Method Details
-
addTask
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. -
dispose
public void dispose()Description copied from class:Component
Called when the component is disposed. Dispose of any internal resources here.
-