Package com.csse3200.game.ai.tasks
Class AITaskComponent
java.lang.Object
com.csse3200.game.components.Component
com.csse3200.game.ai.tasks.AITaskComponent
- All Implemented Interfaces:
com.badlogic.gdx.utils.Json.Serializable
,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()
When component is created, create all tasks.void
dispose()
Dispose AITaskComponent.void
update()
On update, run the current highest priority task.Methods inherited from class com.csse3200.game.components.Component
earlyUpdate, getEntity, read, setEnabled, setEntity, toString, triggerEarlyUpdate, triggerUpdate, write
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface com.csse3200.game.ai.tasks.TaskRunner
getEntity
-
Constructor Details
-
AITaskComponent
public AITaskComponent()
-
-
Method Details
-
create
public void create()When component is created, create all tasks. -
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()Dispose AITaskComponent.
-