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
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 -
Method Summary
Modifier and TypeMethodDescriptionaddTask
(PriorityTask task) Add a priority task to the list of tasks.void
create()
create, called after component has been attached to an entityvoid
dispose()
Called when the component is disposed.void
On update, run the current highest priority task.void
Methods inherited from class com.deco2800.game.components.Component
getEntity, setEnabled, setEntity, toString, triggerEarlyUpdate, triggerUpdate, update
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface com.deco2800.game.ai.tasks.TaskRunner
getEntity
-
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
-
create
public void create()create, called after component has been attached to an entity -
earlyUpdate
public void earlyUpdate()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:
earlyUpdate
in classComponent
-
dispose
public void dispose()Description copied from class:Component
Called when the component is disposed. Dispose of any internal resources here. -
updateMovementTask
public void updateMovementTask()
-