/* ** 井中卡的数据:人员下井 ,人员升进,车下井升井数据 ** 对应的操作,井下人员超时,井下超员等 */ #ifndef __MINECARDMANAGER_H #define __MINECARDMANAGER_H #include "minestruct.h" #include "card.h" //井下警告类型数量 #define MAX_MINE_EVENT_NUM 3 class CMineCardManager { private: CMineCardManager(); private: std::shared_ptr m_minecards; //井下警告列表ID(下标为实践类型) uint64_t m_evlist[MAX_MINE_EVENT_NUM]; private: /** * @brief 获取事件ID **/ uint64_t GetMineEventId(int evType); /** * @brief 判断是否已存在 **/ bool Exist(SET_CARDID &list,uint64_t id); bool Exist(SET_CARDID &list,int card_id,int card_type); /** * @brief 创建警告事件 * @param evType 警告类型 * @param limitVal 限制数据(阀门值) * @param curVal 当前数据 **/ void StartEvent(int evType,int limitVal,int curVal); /** * @brief 取消警告事件 * @param evType 警告类型 * @param curVal 当前数据 **/ void CancelEvent(int evType,int curVal); public: //TODO: 获取信息 std::shared_ptr GetMineCards() ; /** * @brief 人员下井,超员警告 * @param card 卡 * @param bInit 是否初始化(程序启动加载井下人员) **/ void OnPersonDown(std::shared_ptr card,bool bInit = false); /** * @brief 人员升井,取消超员警告 * @param card 卡 **/ void OnPersonUp(std::shared_ptr card); /** * @brief 人员超员警告 **/ void OnPersonOvercrowdingWarning(); /** * @brief 人员井下超时 **/ void OnPersonInMineOverTime(int card_id,int card_type); public: /** * @brief 车下井 ,车辆超员警告 * @param card 卡 * @param bInit 是否初始化(程序启动加载井下车辆) **/ void OnVehicleDown(std::shared_ptr card,bool bInit = false); /** * @brief 车升井,车辆超员警告取消 * @param card 卡 **/ void OnVehicleUp(std::shared_ptr card); /** * @brief 车辆超员警告 **/ void OnVehicleOvercrowdingWarning(); }; #endif //__MINECARDMANAGER_H