コード例 #1
0
UINT CGPlayerShopAcquireShopListHandler::Execute( CGPlayerShopAcquireShopList* pPacket, Player* pPlayer )
{
	__ENTER_FUNCTION

	GamePlayer* pGamePlayer = (GamePlayer*)pPlayer ;
	Assert( pGamePlayer ) ;

	Obj_Human* pHuman = pGamePlayer->GetHuman() ;
	Assert( pHuman ) ;

	Scene* pScene = pHuman->getScene() ;
	if( pScene==NULL )
	{
		Assert(FALSE) ;
		return PACKET_EXE_ERROR ;
	}
	//检查线程执行资源是否正确
	Assert( MyGetCurrentThreadID()==pScene->m_ThreadID ) ;
	SHOP_INFO_t aShopList[MAX_SHOP_NUM_PER_SCENE];
	UINT ListIndex = 0;
	PlayerShopManager*	pPlayerShopManager = pScene->GetPlayerShopManager();
	UINT uShopNum = pPlayerShopManager->GetPlayerShopNum();

	for(UINT i = 0; i<uShopNum; i++)
	{
		PlayerShop*	pPlayerShop	= pPlayerShopManager->GetPlayerShopByIndex(i);
		Assert(pPlayerShop);
		aShopList[ListIndex].m_ID				= pPlayerShop->GetShopGUID();
		memcpy(aShopList[ListIndex].m_ShopName, pPlayerShop->GetShopName(), MAX_SHOP_NAME_SIZE);
		aShopList[ListIndex].m_StallNumOnSale	= pPlayerShop->GetNumStallOnSale();
		aShopList[ListIndex].m_StallNumOpened	= pPlayerShop->GetNumStallOpened();
		aShopList[ListIndex++].m_Type			= (BYTE)pPlayerShop->GetShopType();
	}

	GCPlayerShopAcquireShopList Msg;
	Msg.SetShopNum(ListIndex);
    Msg.SetShopList(aShopList);

	pGamePlayer->SendPacket(&Msg);

	g_pLog->FastSaveLog( LOG_FILE_1, "CGPlayerShopAcquireShopList::Name=%s"
		,pHuman->GetName()) ;


	return PACKET_EXE_CONTINUE ;

	__LEAVE_FUNCTION

		return PACKET_EXE_ERROR ;
}