monkeycar_area.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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(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