Browse Source

初始化进出区域时间

daiyueteng 6 years ago
parent
commit
2e1ea14a81
2 changed files with 17 additions and 8 deletions
  1. 16 8
      card.cpp
  2. 1 0
      module_service/area_business_card_enter_or_leave.cpp

+ 16 - 8
card.cpp

@@ -248,12 +248,16 @@ void card_list::load_his_card_postion_vehicle()
             area->m_vehicle_count++;
 
             point pt = *card_ptr;
-            card_ptr->m_area_tool->init_area(area,pt,temp_ptr);
+            //card_ptr->m_area_tool->init_area(area,pt,temp_ptr);
 			//m_area_hover = std::make_shared<area_hover>( area, pt,speed);
-            auto area_hover_ptr = card_ptr->get_area_hover();
+            //auto area_hover_ptr = card_ptr->get_area_hover();
 
             auto e_t = tool_time::to_time_ex(enter_time);
-            area_hover_ptr->m_enter_time = std::chrono::system_clock::to_time_t(e_t);
+            auto area_hover_ptr = std::make_shared<area_hover>();
+            area_hover_ptr->m_area = area;
+            area_hover_ptr->m_enter_time = tool_time::to_ms(e_t);
+            card_ptr->m_area_tool->m_hover_list.push_back(area_hover_ptr);
+            area_hover_ptr->m_area->on_enter(area_hover_ptr, temp_ptr);
 
             //int map_id  = 0;
             //int state  = 0;
@@ -317,7 +321,7 @@ void card_list::load_his_card_postion_staff()
                 continue;
             }
 
-            auto card_ptr = static_cast<car*>(temp_ptr.get());
+            auto card_ptr = static_cast<person*>(temp_ptr.get());
 
             double x = 0;
             DBRes.GetField( "x",x, Error );
@@ -368,13 +372,17 @@ void card_list::load_his_card_postion_staff()
             area->m_person_count++;
 
             point pt = *card_ptr;
-            card_ptr->m_area_tool->init_area(area,pt,temp_ptr);
-			
+            //card_ptr->m_area_tool->init_area(area,pt,temp_ptr);
 //			m_area_hover = std::make_shared<area_hover>(area,pt,speed);
-            auto area_hover_ptr = card_ptr->get_area_hover();
 
             auto e_t = tool_time::to_time_ex(enter_time);
-            area_hover_ptr->m_enter_time = std::chrono::system_clock::to_time_t(e_t);
+
+            auto area_hover_ptr = std::make_shared<area_hover>();
+            area_hover_ptr->m_area = area;
+            area_hover_ptr->m_enter_time = tool_time::to_ms(e_t);
+            card_ptr->m_area_tool->m_hover_list.push_back(area_hover_ptr);
+            area_hover_ptr->m_area->on_enter(area_hover_ptr, temp_ptr);
+
 			log_info("load_staff...%d,areaid:%d,mapid:%d",id,area->id(),area->mapid());
 
             //int map_id  = 0;

+ 1 - 0
module_service/area_business_card_enter_or_leave.cpp

@@ -23,6 +23,7 @@ void area_business_card_enter_or_leave::on_enter(const std::shared_ptr<area_hove
                                                  const std::shared_ptr<card_location_base>&card_ptr,std::shared_ptr<business_data>&ptr)
 {
     auto ptr_temp = std::make_shared<enter_or_leave_data>();
+    ptr_temp->m_enter_time_ms = area_hover_ptr->m_enter_time;
     ptr = ptr_temp;
     area_hover_ptr->m_data[area_business_type()] = ptr_temp;
     save_his_area_location_enter(area_hover_ptr, card_ptr, ptr_temp->m_enter_time_ms);