45 #ifndef __CU_BEHAVIOR_PARSER_H__
46 #define __CU_BEHAVIOR_PARSER_H__
48 #include <cugl/ai/behavior/CUBehaviorNode.h>
49 #include <cugl/ai/behavior/CUBehaviorAction.h>
50 #include <cugl/io/CUJsonReader.h>
51 #include <unordered_map>
89 std::unordered_map<std::string,std::function<float()>> _prioritizers;
91 std::unordered_map<std::string,std::shared_ptr<BehaviorActionDef>> _actions;
93 #pragma mark Constructors
136 static std::shared_ptr<BehaviorParser>
alloc() {
137 std::shared_ptr<BehaviorParser> result = std::make_shared<BehaviorParser>();
138 return (result->init() ? result :
nullptr);
141 #pragma mark Parser State
152 void addPrioritizer(
const std::string& name, std::function<
float()> prioritizer);
177 std::function<float()>
getPrioritizer(
const std::string& name)
const;
227 void addAction(std::shared_ptr<BehaviorActionDef> actiondef) {
239 void addAction(
const std::string& name, std::shared_ptr<BehaviorActionDef> actiondef);
249 void addAction(
const char* name, std::shared_ptr<BehaviorActionDef> actiondef) {
262 std::shared_ptr<BehaviorActionDef>
getAction(
const std::string& name)
const;
273 std::shared_ptr<BehaviorActionDef>
getAction(
const char* name)
const {
287 std::shared_ptr<BehaviorActionDef>
removeAction(
const std::string& name);
303 #pragma mark Parsing Functions
318 std::unordered_map<std::string, std::shared_ptr<BehaviorNodeDef>>
337 std::unordered_map<std::string, std::shared_ptr<BehaviorNodeDef>>
351 std::shared_ptr<BehaviorNodeDef> parseJson(
const std::shared_ptr<JsonValue>& json);
std::function< float()> getPrioritizer(const std::string &name) const
BehaviorParser()
Definition: CUBehaviorParser.h:101
~BehaviorParser()
Definition: CUBehaviorParser.h:106
std::shared_ptr< BehaviorActionDef > getAction(const char *name) const
Definition: CUBehaviorParser.h:273
void addAction(std::shared_ptr< BehaviorActionDef > actiondef)
Definition: CUBehaviorParser.h:227
std::unordered_map< std::string, std::shared_ptr< BehaviorNodeDef > > parseFile(const std::string &file)
Definition: CUBehaviorParser.h:319
std::shared_ptr< BehaviorActionDef > removeAction(const std::string &name)
void addAction(const char *name, std::shared_ptr< BehaviorActionDef > actiondef)
Definition: CUBehaviorParser.h:249
std::shared_ptr< BehaviorActionDef > getAction(const std::string &name) const
std::function< float()> getPrioritizer(const char *name) const
Definition: CUBehaviorParser.h:188
Definition: CUBehaviorParser.h:86
std::function< float()> removePrioritizer(const std::string &name)
static std::shared_ptr< BehaviorParser > alloc()
Definition: CUBehaviorParser.h:136
void addPrioritizer(const std::string &name, std::function< float()> prioritizer)
std::function< float()> removePrioritizer(const char *name)
Definition: CUBehaviorParser.h:214
Definition: CUAction.h:51
bool init()
Definition: CUBehaviorParser.h:126
void addPrioritizer(const char *name, std::function< float()> prioritizer)
Definition: CUBehaviorParser.h:164
std::shared_ptr< BehaviorActionDef > removeAction(const char *name)
Definition: CUBehaviorParser.h:299