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;
226 void addAction(std::shared_ptr<BehaviorActionDef> actiondef) {
238 void addAction(
const std::string& name, std::shared_ptr<BehaviorActionDef> actiondef);
248 void addAction(
const char* name, std::shared_ptr<BehaviorActionDef> actiondef) {
261 std::shared_ptr<BehaviorActionDef>
getAction(
const std::string& name)
const;
272 std::shared_ptr<BehaviorActionDef>
getAction(
const char* name)
const {
286 std::shared_ptr<BehaviorActionDef>
removeAction(
const std::string& name);
302 #pragma mark Parsing Functions
317 std::unordered_map<std::string, std::shared_ptr<BehaviorNodeDef>>
336 std::unordered_map<std::string, std::shared_ptr<BehaviorNodeDef>>
350 std::shared_ptr<BehaviorNodeDef> parseJson(
const std::shared_ptr<JsonValue>& json);