#ifndef _card_car_h_
#define _card_car_h_

#include <string>
#include <memory>

#include "point.h"
#include "loc_point.h"

#include "card_base.h"
#include "card_area.h"

struct area_hover;
struct mine_tool;
struct site;
struct site_area_hover;

struct car:card_location_base,card_area
{
	int m_vehicle_category_id=0;
    int m_vehicle_type_id=0;

public:

    car(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 void site_hover(int sid);
    virtual std::shared_ptr<area_hover> get_area_hover();
    virtual std::shared_ptr<mine_tool> get_mine_tool();
    virtual std::shared_ptr<site_area_hover> get_site_area();
	virtual void do_business(const std::shared_ptr<site>&site,const point &pt,double acc);
	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();
private:
	void handle_three_rates(const point &pt);
	void on_timer();
	//int statbiz(int32_t special_id);
	void make_package();
	loc_point getSmoothPoint();
};


#endif


