#ifndef _card_car_h_ #define _card_car_h_ #include <string> #include <memory> #include "point.h" #include "card_base.h" #include "card_area.h" struct area_hover; struct mine_tool; struct site; struct site_area_hover; struct loc_point; struct car:card_location_base,card_area { int m_vehicle_category_id = 0; int m_vehicle_type_id = 0; boost::circular_buffer<double> m_speeds; public: car(const std::string&type,uint32_t cardid,uint16_t needdisplay,int16_t t,int32_t deptid, int32_t categoryid, int type_id,int32_t level_id,uint32_t cid); ~car(); virtual std::shared_ptr<mine_tool> get_mine_tool(); virtual void do_business(const std::shared_ptr<site>&site,const point &pt,double acc, int cell_index); virtual int get_area(); int get_vehicle_type_id(); virtual std::shared_ptr<area_tool> get_area_tool() { return m_area_tool; } virtual int get_vehicle_category_id() { return m_vehicle_category_id; } virtual void set_area_info(int mapid,double scale,int areaid,uint64_t t,int type); virtual void get_card(bool); private: void handle_three_rates(const point &pt); void handle_traffic_light(const point& pt, const int& sid); void handle_anti_coll(const point& pt, const int& sid, int cell_index); void handle_over_speed(); void on_timer(); void make_package(); loc_point getSmoothPoint(); }; #endif