monkeycar_area.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #ifndef __MONKEYCAR_AREA__
  2. #define __MONKEYCAR_AREA__
  3. #include "base_area.h"
  4. #include "base_data.h"
  5. #include "base_card.h"
  6. #include "fp_path.h"
  7. #include "monkeycar_person.h"
  8. #include "monkeycar_bus.h"
  9. #include "cacti/kernel/Mutex.h"
  10. struct monkey_area : area
  11. {
  12. typedef cacti::RecursiveMutex::ScopedLock ScopedLock;
  13. public:
  14. monkey_area(std::shared_ptr<db_area> db_area_ptr);
  15. ~monkey_area()
  16. {
  17. //debug_print_syslog(0,"[framework monkeycar_area] del");
  18. }
  19. std::shared_ptr<monkey_person> find(std::string cardid);
  20. virtual void updata_position()
  21. {
  22. for(auto bus:bus_)
  23. bus->updata_position();
  24. }
  25. virtual void on_card_leave(const std::string& cardid, int next_area);
  26. virtual void on_card_enter(std::shared_ptr<Card> &ccard, int prev_area);
  27. virtual void on_card_move(std::shared_ptr<Card> &card);
  28. inline double map(double x, double y)
  29. {
  30. return m_path.map(x,y);
  31. }
  32. inline point_2 map(double d)
  33. {
  34. return m_path.map(d);
  35. }
  36. inline double get_total_length()
  37. {
  38. return m_path.get_total_length();
  39. }
  40. private:
  41. std::map<std::string,std::shared_ptr<monkey_person>> card_map_;
  42. std::vector<std::shared_ptr<monkey_bus>> bus_;
  43. POS_21::fp_path m_path;
  44. cacti::RecursiveMutex m_monitor;
  45. };
  46. #endif