|
@@ -57,7 +57,11 @@ void area_business_count_checker::on_enter(const std::shared_ptr<area_hover>&a,
|
|
|
log_warn("on_enter_area_id:%d,limit_person_count is 0.so should not run area_business_count_checker...",aid);
|
|
|
return;
|
|
|
}
|
|
|
- a->m_area->m_person_count ++ ;
|
|
|
+ if(!ptr)
|
|
|
+ {
|
|
|
+ log_info("person_count_enter[ptr is nulll....]:%d,v_count: limit:%d",aid,limit_val);
|
|
|
+ a->m_area->m_person_count ++;
|
|
|
+ }
|
|
|
if(c->m_display)
|
|
|
a->m_area->m_person_show_count ++ ;
|
|
|
int pc=a->m_area->m_person_count.load();
|
|
@@ -85,7 +89,8 @@ void area_business_count_checker::on_enter(const std::shared_ptr<area_hover>&a,
|
|
|
log_warn("on_enter_area_id:%d,limit_vehicle_count is 0.so should not run area_business_count_checker...",aid);
|
|
|
return;
|
|
|
}
|
|
|
- a->m_area->m_vehicle_count ++ ;
|
|
|
+ if(!ptr)
|
|
|
+ a->m_area->m_vehicle_count ++ ;
|
|
|
if(c->m_display)
|
|
|
a->m_area->m_vehicle_show_count ++ ;
|
|
|
int vc=a->m_area->m_vehicle_count.load();
|
|
@@ -104,23 +109,48 @@ void area_business_count_checker::on_enter(const std::shared_ptr<area_hover>&a,
|
|
|
log_info("vehicle_count_enter_show:%d,v_count:%d limit:%d",aid,vc_,limit_val);
|
|
|
}
|
|
|
}
|
|
|
+ c->update_display();
|
|
|
}
|
|
|
void area_business_count_checker::on_hover(const std::shared_ptr<area_hover>&a,
|
|
|
const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr)
|
|
|
{
|
|
|
+ if(!c->eq_display())
|
|
|
+ {
|
|
|
+ ptr=std::make_shared<business_data>();
|
|
|
+ if(c->m_display==1)
|
|
|
+ on_enter(a,c,ptr);
|
|
|
+ else if(c->m_display==0)
|
|
|
+ on_leave(a,c,ptr);
|
|
|
+ c->update_display();
|
|
|
+ ptr=nullptr;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
//减少计数
|
|
|
void area_business_count_checker::on_leave(const std::shared_ptr<area_hover>&a,
|
|
|
const std::shared_ptr<card_location_base>&c,std::shared_ptr<business_data> ptr)
|
|
|
{
|
|
|
- if (nullptr == a->m_area )
|
|
|
- return ;
|
|
|
+ if (nullptr == a->m_area )return ;
|
|
|
+ int flag=c->m_display;
|
|
|
+ if(!ptr){
|
|
|
+ if(!c->eq_display()){
|
|
|
+ c->update_display();
|
|
|
+ //从0 变成1 之前是0 m_show_count没加1 这里不需要减一
|
|
|
+ if(c->m_display==1)flag=0;
|
|
|
+ //从1 变成 0 之前是加1了。 这里需要减去
|
|
|
+ if(c->m_display==0)flag=1;
|
|
|
+ }
|
|
|
+ }
|
|
|
if (c->is_person())
|
|
|
{
|
|
|
- a->m_area->m_person_count -- ;
|
|
|
- if(c->m_display)
|
|
|
+ if(ptr)
|
|
|
a->m_area->m_person_show_count -- ;
|
|
|
+ else{
|
|
|
+ a->m_area->m_person_count -- ;
|
|
|
+ //if(c->m_display)
|
|
|
+ if(flag)
|
|
|
+ a->m_area->m_person_show_count -- ;
|
|
|
+ }
|
|
|
int pc=a->m_area->m_person_count.load();
|
|
|
int pc_=a->m_area->m_person_show_count.load();
|
|
|
int limit_val=a->m_area->m_limit_person_count;
|
|
@@ -141,9 +171,14 @@ void area_business_count_checker::on_leave(const std::shared_ptr<area_hover>&a,
|
|
|
}
|
|
|
else if (c->is_vehicle())
|
|
|
{
|
|
|
- a->m_area->m_vehicle_count -- ;
|
|
|
- if(c->m_display)
|
|
|
+ if(ptr)
|
|
|
a->m_area->m_vehicle_show_count -- ;
|
|
|
+ else{
|
|
|
+ a->m_area->m_vehicle_count -- ;
|
|
|
+ //if(c->m_display)
|
|
|
+ if(flag)
|
|
|
+ a->m_area->m_vehicle_show_count -- ;
|
|
|
+ }
|
|
|
int pc=a->m_area->m_vehicle_count.load();
|
|
|
int pc_=a->m_area->m_vehicle_show_count.load();
|
|
|
int limit_val=a->m_area->m_limit_vehicle_count;
|