diff options
author | Kelly Rauchenberger <fefferburbia@gmail.com> | 2018-05-14 18:40:54 -0400 |
---|---|---|
committer | Kelly Rauchenberger <fefferburbia@gmail.com> | 2018-05-17 15:39:39 -0400 |
commit | 5e48cf6333aca7af6854d79194f138d57ce0b5e1 (patch) | |
tree | b1703c6268b762a04a101f35188163fe2d9feb45 /src/components/automatable.h | |
parent | 046ee24a341468e9b3ea2983a731dbce18b52ac6 (diff) | |
download | therapy-5e48cf6333aca7af6854d79194f138d57ce0b5e1.tar.gz therapy-5e48cf6333aca7af6854d79194f138d57ce0b5e1.tar.bz2 therapy-5e48cf6333aca7af6854d79194f138d57ce0b5e1.zip |
Specialized treatment of behavior scripts
The AutomatableComponent now links to the Runnable entity representing the behavior script. Also reordered the SystemManager and EntityManager members of the Game class such that the EntityManager is destroyed before the SystemManager is. This fixes a bug where the destruction of a component has some affect on the state of a system. Specifically, if the ScriptingSystem (and thus the Lua state) is destroyed before the EntityManager is and there are any Runnable entities, the game will crash when trying to destroy them.
Diffstat (limited to 'src/components/automatable.h')
-rw-r--r-- | src/components/automatable.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/components/automatable.h b/src/components/automatable.h new file mode 100644 index 0000000..22d9859 --- /dev/null +++ b/src/components/automatable.h | |||
@@ -0,0 +1,34 @@ | |||
1 | #ifndef AUTOMATABLE_H_FACB42A5 | ||
2 | #define AUTOMATABLE_H_FACB42A5 | ||
3 | |||
4 | #include "component.h" | ||
5 | #include "entity_manager.h" | ||
6 | |||
7 | class AutomatableComponent : public Component { | ||
8 | public: | ||
9 | |||
10 | using id_type = EntityManager::id_type; | ||
11 | |||
12 | /** | ||
13 | * Controls what script will be run as this entity's behavior. It should refer | ||
14 | * to a table in the global namespace of the script engine state, and that | ||
15 | * table should contain a function called "Behavior". | ||
16 | */ | ||
17 | std::string table; | ||
18 | |||
19 | /** | ||
20 | * Whether or not the behavior script is running. | ||
21 | * | ||
22 | * @managed_by ScriptingSystem | ||
23 | */ | ||
24 | bool running = false; | ||
25 | |||
26 | /** | ||
27 | * The entity ID of the running script, if there is one. | ||
28 | * | ||
29 | * @managed_by ScriptingSystem | ||
30 | */ | ||
31 | id_type script; | ||
32 | }; | ||
33 | |||
34 | #endif /* end of include guard: AUTOMATABLE_H_FACB42A5 */ | ||