GameEvents.cc 848 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include <boost/foreach.hpp>
  2. #include "Base/Marcos.h"
  3. #include "Base/Typedef.h"
  4. #include "BehaviorTree/GameEvents.h"
  5. #include "BehaviorTree/BehaviorTreeConf.pb.h"
  6. namespace Egametang {
  7. GameEvents::GameEvents(NodeFactories& factories):
  8. factories(factories), events(100)
  9. {
  10. }
  11. GameEvents::~GameEvents()
  12. {
  13. foreach (std::list<BehaviorTree*> list, events)
  14. {
  15. foreach (BehaviorTree* tree, list)
  16. {
  17. delete tree;
  18. }
  19. }
  20. }
  21. void GameEvents::AddEvent(const BehaviorTreeConf& conf)
  22. {
  23. int32 type = conf.type();
  24. BehaviorTree* event = new BehaviorTree(factories, conf);
  25. events[type].push_back(event);
  26. }
  27. void GameEvents::Excute(int type, ContexIf* contex)
  28. {
  29. std::list<BehaviorTree*>& es = events[type];
  30. for (std::list<BehaviorTree*>::iterator iter = es.begin(); iter != es.end(); ++iter)
  31. {
  32. (*iter)->Run(contex);
  33. }
  34. }
  35. } // namespace Egametang