#ifndef _card_person_h_
#define _card_person_h_

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

struct person:card_location_base, card_area
{
    int m_workLine=0;	
	int m_worktype_id=0;
    int m_thour{-1};
    time_t m_iris_recognition_timeval = 0;
    static int m_limit_detained_time;
    static int m_auto_up_mine_time;
    std::weak_ptr<monkey_person> m_monkeyPerson;
    std::string m_stafferName,m_deptName;
    person(const std::string &type,uint32_t cardid,uint16_t needdisplay,int16_t t,int32_t deptid,int32_t level_id,uint32_t cid,int wl,const std::string &sname,const std::string &dname,int workrype_id);
    ~person();


    void clear();
    void reset(std::shared_ptr<monkey_person> mp);
    void handle_three_rates(const point & pt);
    void on_timer();
    void IKSDK_DB(int);
    point getSmoothPoint(uint64_t& t);
    void print_card_detained();

    virtual void site_hover(int sid);
	virtual void get_card(bool f);
    virtual std::shared_ptr<mine_tool> get_mine_tool();
    virtual void do_business(const std::shared_ptr<site>&site,const point &pt,double acc);
	virtual void set_area_info(int mapid,double scale,int areaid,uint64_t t,int type);
    virtual std::shared_ptr<area_tool> get_area_tool()
    {
        return m_area_tool;
    }
    virtual int get_workline()
    {
        return m_workLine;
    }
};
#endif