// // BTManger.cpp // redream_runtime // // Created by zhu on 2022/11/26. // #include "BTManger.hpp" #include "behaviac/behaviac.h" #include "BehaviacFileManager.hpp" static BTManger *s_pBTManger = nullptr; static behaviac::BehaviacFileManager *s_pBehaviacFileManager = nullptr; BTManger::BTManger() { _globalVarStringMap.clear(); } BTManger::~BTManger() { BEHAVIAC_DELETE(s_pBehaviacFileManager); _globalVarStringMap.clear(); s_pBehaviacFileManager = nullptr; } BTManger* BTManger::getInstance() { if (s_pBTManger == nullptr) { s_pBTManger = new (std::nothrow)BTManger(); s_pBehaviacFileManager = BEHAVIAC_NEW behaviac::BehaviacFileManager(); } return s_pBTManger; } void BTManger::startGame(){ _gameRunTime = 0; _gameRunFram = 0; _gameStartTime = utils::gettime(); // Director::getInstance()->getScheduler()->schedule([=](float dt){ // this->updateTime(dt); // }, this, 1, false, "BTManger::startGame"); Director::getInstance()->getScheduler()->scheduleUpdate(this, 0, false); } void BTManger::setRootPath(std::string path){ s_pBehaviacFileManager->setRootPath(path); } void BTManger::updateTime(float dt){ // _gameRunTime += dt; double time = utils::gettime() - _gameStartTime; behaviac::Workspace::GetInstance()->SetTimeSinceStartup(time); behaviac::Workspace::GetInstance()->SetDoubleValueSinceStartup(time); } void BTManger::update(float dt){ _gameRunFram++; behaviac::Workspace::GetInstance()->SetFrameSinceStartup(_gameRunFram); double time = utils::gettime() - _gameStartTime; //MARK: 进度需求放在每一帧里面计算开始时间,但是这个获取时间的性能如果需要研究 behaviac::Workspace::GetInstance()->SetTimeSinceStartup(time); behaviac::Workspace::GetInstance()->SetDoubleValueSinceStartup(time); } void BTManger::setGlobalDataVar(std::string key, std::string content){ _globalVarStringMap[key] = content; } std::string BTManger::getGlobalDataVar(std::string key, ReboltErrorInfo& errorInfo){ auto it = _globalVarStringMap.find(key); if(it != _globalVarStringMap.end()){ std::string str = it->second; return str; } else{ errorInfo.errorType = ReboltErrorTypeError; errorInfo.errorDes = StringUtils::format("没有找到全局变量[%s]", key.c_str()); return ""; } }