BTManger.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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::updateTime(float dt){
  38. // _gameRunTime += dt;
  39. double time = utils::gettime() - _gameStartTime;
  40. behaviac::Workspace::GetInstance()->SetTimeSinceStartup(time);
  41. behaviac::Workspace::GetInstance()->SetDoubleValueSinceStartup(time);
  42. }
  43. void BTManger::update(float dt){
  44. _gameRunFram++;
  45. behaviac::Workspace::GetInstance()->SetFrameSinceStartup(_gameRunFram);
  46. double time = utils::gettime() - _gameStartTime; //MARK: 进度需求放在每一帧里面计算开始时间,但是这个获取时间的性能如果需要研究
  47. behaviac::Workspace::GetInstance()->SetTimeSinceStartup(time);
  48. behaviac::Workspace::GetInstance()->SetDoubleValueSinceStartup(time);
  49. }
  50. void BTManger::setGlobalDataVar(std::string key, std::string content){
  51. _globalVarStringMap[key] = content;
  52. }
  53. std::string BTManger::getGlobalDataVar(std::string key, ReboltErrorInfo& errorInfo){
  54. auto it = _globalVarStringMap.find(key);
  55. if(it != _globalVarStringMap.end()){
  56. std::string str = it->second;
  57. return str;
  58. } else{
  59. errorInfo.errorType = ReboltErrorTypeError;
  60. errorInfo.errorDes = StringUtils::format("没有找到全局变量[%s]", key.c_str());
  61. return "";
  62. }
  63. }