monkeycar_area.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #ifndef __MONKEYCAR_AREA__
  2. #define __MONKEYCAR_AREA__
  3. //#include "monkeycar_person.h"
  4. //#include "monkeycar_bus.h"
  5. #include <mutex>
  6. #include <memory>
  7. #include "area.h"
  8. #include "fp_path.h"
  9. struct db_area
  10. {
  11. std::vector<point> m_point;
  12. double m_default_speed;
  13. };
  14. struct monkey_bus;
  15. struct monkey_person;
  16. struct monkey_area : area,std::enable_shared_from_this<monkey_area>
  17. {
  18. public:
  19. monkey_area(std::shared_ptr<db_area> dap,int area_id,int over_count_person,int over_time_person,double scale,int32_t ,int32_t);
  20. ~monkey_area()
  21. {}
  22. std::shared_ptr<monkey_person> find(uint32_t cardid);
  23. virtual void on_hover(std::shared_ptr<area_hover>&a,std::shared_ptr<card_location_base>&c){}
  24. virtual void on_enter(std::shared_ptr<area_hover>&a,std::shared_ptr<card_location_base>&c){}
  25. virtual void on_leave(std::shared_ptr<area_hover>&a,std::shared_ptr<card_location_base>&c){}
  26. virtual void on_hover(int64_t card_id,std::shared_ptr<area_hover>&c,double speed,uint64_t type);
  27. virtual void on_enter(int64_t card_id,std::shared_ptr<area_hover>&c,double speed,uint64_t type);
  28. virtual void on_leave(int64_t card_id,std::shared_ptr<area_hover>&c,double speed,uint64_t type);
  29. void on_card_leave(uint32_t cardid);
  30. void on_card_enter(uint32_t cardid,uint64_t type);
  31. void on_card_move(uint32_t cardid,const st_coord & st,uint64_t);
  32. inline double map(double x, double y)
  33. {
  34. return m_path.map(x,y);
  35. }
  36. inline point_2 map(double d)
  37. {
  38. return m_path.map(d);
  39. }
  40. inline double get_total_length()
  41. {
  42. return m_path.get_total_length();
  43. }
  44. double getScale()
  45. {
  46. return scale();
  47. }
  48. static uint64_t m_startTime;
  49. private:
  50. std::map<uint32_t ,std::shared_ptr<monkey_person>> card_map_;
  51. std::vector<std::shared_ptr<monkey_bus>> bus_;
  52. fp_path m_path;
  53. std::mutex m_mtx;
  54. };
  55. #endif