Browse Source

ptr bug fix

lixioayao 6 years ago
parent
commit
3401d77762
2 changed files with 14 additions and 13 deletions
  1. 12 11
      area.cpp
  2. 2 2
      card.cpp

+ 12 - 11
area.cpp

@@ -36,14 +36,6 @@ struct underground_area:area
 		  f=true;
 		return f;
 	}
-	//推入特殊区域的是否需要其他信息
-	virtual	void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c)
-	{
-		YA::_CARD_POS_ cp;
-		cp.area_id = m_id;
-        area::on_enter(a, c);
-		swsClientMgr.SendSpecialAreaProcess(cp);
-	}
 };
 
 struct special_area:area
@@ -62,6 +54,15 @@ struct special_area:area
 		}
 		return f;
 	}
+	//推入特殊区域的是否需要其他信息
+	virtual	void on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<card_location_base>&c)
+	{
+        area::on_enter(a, c);
+		YA::_CARD_POS_ cp;
+		cp.area_id = m_id;
+		swsClientMgr.SendSpecialAreaProcess(cp);
+	}
+
 };
 
 area::area(int id,int limit_count_person, int limit_time_person,double scale,int32_t mapid,int32_t type)
@@ -84,7 +85,7 @@ void area::on_hover(const std::shared_ptr<area_hover>&a,const std::shared_ptr<ca
 {
  	for(const auto &i:m_area_business_list)
 	{
-		auto x=a->get_business_data(i->area_business_type());
+		auto &x=a->get_business_data(i->area_business_type());
 		i->on_hover(a,c,x);
 	}
 }
@@ -94,7 +95,7 @@ void area::on_enter(const std::shared_ptr<area_hover>&a,const std::shared_ptr<ca
 	log_info("on_enter..%d  areaId:%d",c->m_id,m_id);
  	for(const auto &i:m_area_business_list)
 	{
-		auto x=a->get_business_data(i->area_business_type());
+		auto &x=a->get_business_data(i->area_business_type());
 		i->on_enter(a,c,x);
 	}
 }
@@ -104,7 +105,7 @@ void area::on_leave(const std::shared_ptr<area_hover>&a,const std::shared_ptr<ca
 	log_info("on_leave..%d  areaId:%d",c->m_id,m_id);
  	for(const auto &i:m_area_business_list)
 	{
-		auto x=a->get_business_data(i->area_business_type());
+		auto &x=a->get_business_data(i->area_business_type());
 		i->on_leave(a,c,x);
 	}
 }

+ 2 - 2
card.cpp

@@ -247,7 +247,7 @@ void card_list::load_his_card_postion_vehicle()
             }
             area->m_vehicle_count++;
 
-            point pt = *card_ptr;
+            //point pt = *card_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();
@@ -371,7 +371,7 @@ void card_list::load_his_card_postion_staff()
             }
             area->m_person_count++;
 
-            point pt = *card_ptr;
+            //point pt = *card_ptr;
             //card_ptr->m_area_tool->init_area(area,pt,temp_ptr);
 //			m_area_hover = std::make_shared<area_hover>(area,pt,speed);