BTManger.cpp 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. //
  2. // BTManger.cpp
  3. // redream_runtime
  4. //
  5. // Created by zhu on 2022/11/26.
  6. //
  7. #include "BTManger.hpp"
  8. #include "behaviac/behaviac.h"
  9. #include "BehaviacFileManager.hpp"
  10. static BTManger *s_pBTManger = nullptr;
  11. static behaviac::BehaviacFileManager *s_pBehaviacFileManager = nullptr;
  12. BTManger::BTManger()
  13. {
  14. _globalVarStringMap.clear();
  15. }
  16. BTManger::~BTManger() {
  17. BEHAVIAC_DELETE(s_pBehaviacFileManager);
  18. _globalVarStringMap.clear();
  19. s_pBehaviacFileManager = nullptr;
  20. }
  21. BTManger* BTManger::getInstance() {
  22. if (s_pBTManger == nullptr) {
  23. s_pBTManger = new (std::nothrow)BTManger();
  24. s_pBehaviacFileManager = BEHAVIAC_NEW behaviac::BehaviacFileManager();
  25. }
  26. return s_pBTManger;
  27. }
  28. void BTManger::startGame(){
  29. _gameRunTime = 0;
  30. _gameRunFram = 0;
  31. _gameStartTime = utils::gettime();
  32. // Director::getInstance()->getScheduler()->schedule([=](float dt){
  33. // this->updateTime(dt);
  34. // }, this, 1, false, "BTManger::startGame");
  35. Director::getInstance()->getScheduler()->scheduleUpdate(this, 0, false);
  36. }
  37. void BTManger::setRootPath(std::string path){
  38. s_pBehaviacFileManager->setRootPath(path);
  39. }
  40. void BTManger::updateTime(float dt){
  41. // _gameRunTime += dt;
  42. double time = utils::gettime() - _gameStartTime;
  43. behaviac::Workspace::GetInstance()->SetTimeSinceStartup(time);
  44. behaviac::Workspace::GetInstance()->SetDoubleValueSinceStartup(time);
  45. }
  46. void BTManger::update(float dt){
  47. _gameRunFram++;
  48. behaviac::Workspace::GetInstance()->SetFrameSinceStartup(_gameRunFram);
  49. double time = utils::gettime() - _gameStartTime; //MARK: 进度需求放在每一帧里面计算开始时间,但是这个获取时间的性能如果需要研究
  50. behaviac::Workspace::GetInstance()->SetTimeSinceStartup(time);
  51. behaviac::Workspace::GetInstance()->SetDoubleValueSinceStartup(time);
  52. }
  53. void BTManger::setGlobalDataVar(std::string key, std::string content){
  54. _globalVarStringMap[key] = content;
  55. }
  56. std::string BTManger::getGlobalDataVar(std::string key, ReboltErrorInfo& errorInfo){
  57. auto it = _globalVarStringMap.find(key);
  58. if(it != _globalVarStringMap.end()){
  59. std::string str = it->second;
  60. return str;
  61. } else{
  62. errorInfo.errorType = ReboltErrorTypeError;
  63. errorInfo.errorDes = StringUtils::format("没有找到全局变量[%s]", key.c_str());
  64. return "";
  65. }
  66. }