monkeycar_area.h 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. // :area(area_id,over_count_person,over_time_person)
  21. // ,m_scale(scale)
  22. // {}
  23. ~monkey_area()
  24. {}
  25. std::shared_ptr<monkey_person> find(uint32_t cardid);
  26. virtual void on_hover(std::shared_ptr<area_hover>&a,std::shared_ptr<card_location_base>&c){}
  27. virtual void on_enter(std::shared_ptr<area_hover>&a,std::shared_ptr<card_location_base>&c){}
  28. virtual void on_leave(std::shared_ptr<area_hover>&a,std::shared_ptr<card_location_base>&c){}
  29. virtual void on_hover(int64_t card_id,std::shared_ptr<area_hover>&c,double speed,uint64_t type);
  30. virtual void on_enter(int64_t card_id,std::shared_ptr<area_hover>&c,double speed,uint64_t type);
  31. virtual void on_leave(int64_t card_id,std::shared_ptr<area_hover>&c,double speed,uint64_t type);
  32. void on_card_leave(uint32_t cardid);
  33. void on_card_enter(uint32_t cardid,uint64_t type);
  34. void on_card_move(uint32_t cardid,const st_coord & st,uint64_t);
  35. inline double map(double x, double y)
  36. {
  37. return m_path.map(x,y);
  38. }
  39. inline point_2 map(double d)
  40. {
  41. return m_path.map(d);
  42. }
  43. inline double get_total_length()
  44. {
  45. return m_path.get_total_length();
  46. }
  47. double getScale()
  48. {
  49. return scale();
  50. }
  51. static uint64_t m_startTime;
  52. private:
  53. std::map<uint32_t ,std::shared_ptr<monkey_person>> card_map_;
  54. std::vector<std::shared_ptr<monkey_bus>> bus_;
  55. fp_path m_path;
  56. std::mutex m_mtx;
  57. };
  58. #endif