亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fieldinfo.cpp

?? 奇跡世界 部分源代碼奇跡世界 部分源代碼奇跡世界 部分源代碼
?? CPP
字號:
#include "stdafx.h"
#include "FieldInfo.h"
#include "FieldServer.h"
#include <ProgramCommon/WzArchive.h>
#include <Macro.h>
#include <3DEngine/IncludeAll_NewWorld.h>
#include <3DEngine/3DTerrain/WorldBase.h>
#include <ProgramCommon/DiscAccess.h>
#include "TriggerGroupInfoList.h"

////////////////////////////////////////////////////////////////////////////////////
// MapInfo class 
////////////////////////////////////////////////////////////////////////////////////
MapInfo::MapInfo():	
m_pMapInfo ( NULL )
{
	m_FieldInfoHashTable.Initialize( _MAX_FIELD_IN_MAP_NUM );
}

MapInfo::~MapInfo()
{
	m_FieldInfoHashTable.RemoveAll();
}

VOID MapInfo::AddFieldInfo( FieldInfo * pFieldInfo )
{
	m_FieldInfoHashTable.Add( pFieldInfo, pFieldInfo->GetFieldCode() );
}
////////////////////////////////////////////////////////////////////////////////////
// FieldInfo class 
////////////////////////////////////////////////////////////////////////////////////
FieldInfo::FieldInfo():
m_pWorldBase ( NULL ),
m_dwTotalSectorNum ( 0 ),
m_ppSectorInfo( NULL ),
m_pFieldInfo ( NULL ),
m_pTriggerGroupInfoList( NULL )
{
	m_pMapObjectInfoHashTable = new util::SolarHashTable<MAPOBJECT_INFO *>;
	m_pMapObjectInfoHashTable->Initialize( _MAX_MAPOBJECT_INFO_NUM );
}

FieldInfo::~FieldInfo()
{
	for( DWORD i = 0 ; i < m_dwTotalSectorNum ; ++i )
	{
		SAFE_DELETE( m_ppSectorInfo[i] );		
	}
	SAFE_DELETE_ARRAY( m_ppSectorInfo );

	Destroy();

	SAFE_DELETE( m_pMapObjectInfoHashTable );
	SAFE_DELETE( m_pTriggerGroupInfoList );
}

VOID FieldInfo::Create( const sFIELDINFO * pInfoIn )
{
	SetFieldInfo( pInfoIn );
	
	ASSERT( m_pTriggerGroupInfoList == NULL );
	m_pTriggerGroupInfoList = new TriggerGroupInfoList;

	ASSERT(!m_pWorldBase);

	m_pWorldBase = (CWorldBase *)g_pGameServer->m_fnContactTerrain( CT_NEW_WORLD, 0 );

	m_pWorldBase->Create();
}

INT FieldInfo::Init()
{
	return m_pWorldBase->x_pRoomManager->DuplicateRoomInfo();
}

VOID FieldInfo::Release( INT Index )
{
	BOOL rt = m_pWorldBase->x_pRoomManager->DestroyRoomInfo(Index);
	ASSERT( rt );
}

///< FieldInfo甫 佬籃 促瀾,  SectorSize俊 蝶弗 SectorInfo甫 悸潑
VOID FieldInfo::EstablishSectorInfo( WORD wSectorSize, BOOL bViewport )
{
	if(wSectorSize == 0)
		ASSERT( !"冀磐 牢鄲膠啊 0撈促" );

	m_dwSectorSize = wSectorSize;
	m_bViewport = bViewport;

	BvAABB bdv = m_pWorldBase->GetTerrainSize();
	// 彌措藹撈 瀾薦老薦檔 樂欄骨肺 例措藹欄肺 拌魂
	DWORD XSize = 0, YSize = 0;
	XSize = (DWORD)abs(bdv.m_wvMax.x - bdv.m_wvMin.x);
	YSize = (DWORD)abs(bdv.m_wvMax.y - bdv.m_wvMin.y);

	// 冀磐 牢鄲膠甫 拌魂竅扁 困茄 函薦
	m_iShiftMinX = (int)(bdv.m_wvMin.x);
	m_iShiftMinY = (int)(bdv.m_wvMin.y);
	m_iShiftMaxX = (int)(bdv.m_wvMax.x);
	m_iShiftMaxY = (int)(bdv.m_wvMax.y);

	BYTE byMarginX = 0, byMarginY = 0;
	XSize % wSectorSize == 0 ? byMarginX = 0 : byMarginX = 1;
	YSize % wSectorSize == 0 ? byMarginY = 0 : byMarginY = 1;

	m_dwSectorXNum				= XSize / wSectorSize + byMarginX;
	m_dwSectorYNum				= YSize / wSectorSize + byMarginY;
	m_dwTotalSectorNum			= m_dwSectorXNum * m_dwSectorYNum;
	m_ppSectorInfo				= new SectorInfo*[ m_dwSectorXNum * m_dwSectorYNum ];
	memset( m_ppSectorInfo, 0, sizeof(SectorInfo *) * m_dwSectorXNum * m_dwSectorYNum );

    /// 泅犁, 葛電 Sector啊 糧犁茄促絆 啊瀝
	DWORD dwSectorIndex = 0;
	for( dwSectorIndex = 0 ; dwSectorIndex < m_dwTotalSectorNum ; ++dwSectorIndex )
	{
		m_ppSectorInfo[ dwSectorIndex ] = new SectorInfo( dwSectorIndex );
	}

	/// 撈眶竅綽 sector甫 楷搬
	for( dwSectorIndex = 0 ; dwSectorIndex < m_dwTotalSectorNum ; ++dwSectorIndex )
	{
		// 秦寸 冀磐狼 青苞 凱闌 備茄促.
		DWORD dwRow = dwSectorIndex / m_dwSectorXNum;		// Index_Y
		DWORD dwColumn = dwSectorIndex % m_dwSectorXNum;	// Index_X

		for( int i = -1; i <= 1; ++i )
		{
			int iNeighborColumn = dwColumn + i;
			if( iNeighborColumn < 0 || iNeighborColumn >= (int)m_dwSectorXNum )	continue;

			for( int j = -1; j <= 1; ++j )
			{
				int iNeighborRow = dwRow + j;
				if( iNeighborRow < 0 || iNeighborRow >= (int)m_dwSectorYNum )	continue;

				int index = iNeighborRow * m_dwSectorXNum + iNeighborColumn;

				if( dwSectorIndex == index )	continue;
				if( !m_ppSectorInfo[index] )	continue;

				m_ppSectorInfo[dwSectorIndex]->AddNeighborSectorInfo( m_ppSectorInfo[index] );
			}
		}
	}
}

BOOL FieldInfo::IsValidCoordinates( WzVector* pwzVec )
{
	// X,Y諒釬惑俊輯 彌家藹焊促 累籃 藹闌 努扼撈攫飄俊輯 焊辰 版快
	if( ( m_iShiftMinX > pwzVec->x ) || ( m_iShiftMinY > pwzVec->y ) )
	{
		return FALSE;
	}

	if( ( m_iShiftMaxX < pwzVec->x ) || ( m_iShiftMaxY < pwzVec->y ) )
	{
		return FALSE;
	}

	return TRUE;
}
// Client俊輯 逞絹柯 諒釬甫 啊瘤絆 秦寸竅綽 牢鄲膠甫 掘絹咳
DWORD FieldInfo::GetSectorIndexFor( WzVector * pwzVec ) 
{
	DWORD dwXIndex = 0;
	DWORD dwYIndex = 0;

	if( IsValidCoordinates( pwzVec ) )
	{
		GetSectorIndexFor( pwzVec, dwXIndex, dwYIndex );
	}
	ASSERT( dwXIndex + m_dwSectorXNum * dwYIndex < m_dwTotalSectorNum );
	return ( dwXIndex + m_dwSectorXNum * dwYIndex );
}

VOID FieldInfo::GetSectorIndexFor( WzVector * pwzVec, DWORD & dwXIndexOut, DWORD & dwYIndexOut )
{
	dwXIndexOut = (DWORD)( pwzVec->x - m_iShiftMinX ) / GetSectorSize();
	dwYIndexOut = (DWORD)( pwzVec->y - m_iShiftMinY ) / GetSectorSize();
}


VOID FieldInfo::Destroy()
{
	_unloadMapObjectInfo();

	if( m_pTriggerGroupInfoList )
		m_pTriggerGroupInfoList->Unload();

	if( m_pWorldBase )
	{
		m_pWorldBase->Destroy( NULL );
		g_pGameServer->m_fnContactTerrain( CT_DELETE_WORLD, m_pWorldBase );
		m_pWorldBase = NULL;
	}
}
#include <io.h>

BOOL FieldInfo::Load()
{
	CWzArchive archive;

	CDiscAccess cda;
	cda.Create();
	//m_pWorldBase->SetDiscAccess(&cda);

	ASSERT(_access(m_pFieldInfo->pszPath,0)!=-1);

	if( archive.LoadFile( const_cast<char *>(m_pFieldInfo->pszPath) ) == FALSE )
	{

		SUNLOG( eCRITICAL_LOG,  "[FieldInfo::Load] Failed LoadFile() : From Fieldxx.map[%s]\n", m_pFieldInfo->pszPath );
		archive.Close();
		return FALSE;
	}
	
	if( m_pWorldBase->Serialize( &archive ) == FALSE )
	{
		archive.Close();
		return FALSE;
	}

	_loadMapObjectInfo( archive );

	// 飄府芭 瀝焊 肺爹
	m_pTriggerGroupInfoList->Load( archive );


	//_loadAreaInfo( archive );

	archive.Close();

	SetStartingTileIndex();

	// 操坷 拋膠飄儈 林籍
	/*CPathExplorer *pExplorer;
	pExplorer		= (CPathExplorer*)g_pGameServer->m_fnContactTerrain( CT_NEW_PATH_EXPLORER, 0);
	WzVector vPos;
	vPos.x = 7.6181059f;
	vPos.y = 23.331070f;
	vPos.z = 14.0f;
	m_pWorldBase->PathExp_Reset(pExplorer,&vPos);
	g_pGameServer->m_fnContactTerrain( CT_DELETE_PATH_EXPLORER, pExplorer);*/

	return TRUE;
}
VOID FieldInfo::_loadMapObjectInfo( CWzArchive & archive )
{
	BOOL bAreaChunk = FALSE;
	while( TRUE )
	{
		St_ChunkInfo ci = archive.ReadChunk();
		if( ci.m_nID == 0x1781 )
		{
			bAreaChunk = TRUE;
			break;
		}
		archive.SkipCurrentChunk(ci);
	}

	ASSERT( TRUE == bAreaChunk );

	DWORD dwNumbers = 0;
	DWORD dwDummy = 0;

	// WZU扒呈訛
	archive >> dwNumbers;
	char pszUnitFileFullPath[0xff];
	for( DWORD j = 0 ; j < dwNumbers ; ++j )
	{
		archive.ReadName( pszUnitFileFullPath );
		archive >> dwDummy;
	}
	// 咆膠媚 扒呈訛
	archive >> dwNumbers;
	for ( j = 0; j < dwNumbers; ++j )
	{
		archive >> dwDummy;
		archive.ReadName( pszUnitFileFullPath );
	}


	MAPOBJECT_INFO * pObject = NULL;
	// 角力 甘坷宏璃飄
	archive >> dwNumbers;
	for( DWORD i = 0 ; i < dwNumbers ; ++i )
	{
		pObject = new MAPOBJECT_INFO;
		//pObject->dwMapObjectID = MAP_OBJECT_KEY+i; //< 努扼撈攫飄客 措開闌 嘎苗拎具 茄促.
		pObject->dwMapObjectID = i;

		archive	>> pObject->wzId
				>> pObject->dwAttribute
				>> pObject->wvPos
				>> pObject->wzRot
				>> pObject->wzScale
				>> pObject->wzBV;

		if(archive.GetVersion() >= 138)
		{
			archive >> dwDummy;
		}

		DWORD dwCustom[4];

		if( archive.GetVersion() >= 158)
		{
			archive >> dwCustom[0];
			archive >> dwCustom[1];
			archive >> dwCustom[2];
			archive >> dwCustom[3];
		}

		ASSERT( NULL == m_pMapObjectInfoHashTable->GetData( pObject->dwMapObjectID ) );
		m_pMapObjectInfoHashTable->Add( pObject, pObject->dwMapObjectID );
	}
}
/*
VOID FieldInfo::_loadAreaInfo( CWzArchive & archive )
{
	//------------------------------------------------------------------------------------
	// 
	if( archive.GetVersion() < 140 ) return;
	if( archive.GetVersion() > 143 ) return;

	BOOL bAreaChunk = FALSE;
	while( TRUE )
	{
		St_ChunkInfo ci = archive.ReadChunk();
		if( ci.m_nID == 0x1785 )
		{
			bAreaChunk = TRUE;
			break;
		}
		archive.SkipCurrentChunk(ci);
	}

	if( TRUE != bAreaChunk ) return;

	// 康開 俺薦
	WORD wNumberOfAreas		= 0;
	BYTE byAreaType			= 0;
	WzID wzAreaID			= 0;
	archive >> wNumberOfAreas;
	ASSERT( wNumberOfAreas < 1000 );
	DEBUG_CODE( if(wNumberOfAreas >= 1000) return; );

	for( DWORD idx = 0 ; idx < wNumberOfAreas ; ++idx )
	{
		archive >> byAreaType;
		archive >> wzAreaID;
		if( byAreaType == AREA_INFO::AREA_AABB )
		{
			AABB_AREA_INFO * pAreaInfo = new AABB_AREA_INFO;
			pAreaInfo->dwKey		= idx;
			pAreaInfo->byAreaType	= byAreaType;
			pAreaInfo->wzAreaID		= wzAreaID;
			archive >> pAreaInfo->bvAABB;

			//m_pAreaInfoHashTable->Add( pAreaInfo, pAreaInfo->wzAreaID );
			
			m_pAreaInfoHashTable->Add( pAreaInfo, pAreaInfo->dwKey );
		}
		else
		{
			TILE_AREA_INFO * pAreaInfo = new TILE_AREA_INFO;
			pAreaInfo->dwKey		= idx;
			pAreaInfo->byAreaType	= byAreaType;
			pAreaInfo->wzAreaID		= wzAreaID;
			archive >> pAreaInfo->wNumberOfTiles;
			pAreaInfo->piTileIndex = new int[pAreaInfo->wNumberOfTiles];
			memset( pAreaInfo->piTileIndex, 0, sizeof(int) * pAreaInfo->wNumberOfTiles );

			WORD wTileAttr;		int iTileIndex = 0;		WORD wValidateTiles = 0;
			for( WORD i = 0 ; i < pAreaInfo->wNumberOfTiles ; ++i )
			{
				if( !m_pWorldBase )		continue;

				archive >> iTileIndex;

				wTileAttr = m_pWorldBase->x_pPathFinder->GetAttribute( iTileIndex );

				if( wTileAttr & PTA_NO_WALK )
				{
					continue;
				}

				pAreaInfo->piTileIndex[wValidateTiles] = iTileIndex;

				++wValidateTiles;
			}
			pAreaInfo->wNumberOfTiles = wValidateTiles;

			m_pAreaInfoHashTable->Add( pAreaInfo, pAreaInfo->dwKey );
		}
	}	

}
*/
VOID FieldInfo::_unloadMapObjectInfo()
{
	MAPOBJECT_INFO * pDelNode = NULL;
	m_pMapObjectInfoHashTable->SetFirst();
	while( (pDelNode = m_pMapObjectInfoHashTable->GetNext()) != NULL )
	{
		SAFE_DELETE( pDelNode );
	}
	m_pMapObjectInfoHashTable->RemoveAll();
}
/*
VOID FieldInfo::_unloadAreaInfo()
{
	AREA_INFO * pDelNode = NULL;
	m_pAreaInfoHashTable->SetFirst();
	while( (pDelNode = m_pAreaInfoHashTable->GetNext()) != NULL )
	{
		SAFE_DELETE( pDelNode );
	}
	m_pAreaInfoHashTable->RemoveAll();
}
*/
VOID FieldInfo::SetStartingTileIndex()
{
	m_StartTiles.clear();
	for( int i = '0' ; i <= '9' ; ++i )
	{
		WzSpecialArea * pArea = m_pWorldBase->GetSpecialArea( CharToWzID('S','T','R',i) );
		if( !pArea ) continue;
		ASSERT( pArea->m_wbvRegion.m_eBvType == BVT_PATH_TILE_INDEX );
		ASSERT( pArea->m_wbvRegion.m_BvPathTileIndex.m_nCount != 0 );
		for( DWORD j = 0 ; j < pArea->m_wbvRegion.m_BvPathTileIndex.m_nCount ; ++j )
			m_StartTiles.push_back( pArea->m_wbvRegion.m_BvPathTileIndex.m_pdwData[j] );
	}
	for( int i = 'A' ; i <= 'Z' ; ++i )
	{
		WzSpecialArea * pArea = m_pWorldBase->GetSpecialArea( CharToWzID('S','T','R', i) );
		if( !pArea ) continue;
		ASSERT( pArea->m_wbvRegion.m_eBvType == BVT_PATH_TILE_INDEX );
		ASSERT( pArea->m_wbvRegion.m_BvPathTileIndex.m_nCount != 0 );
		for( DWORD j = 0 ; j < pArea->m_wbvRegion.m_BvPathTileIndex.m_nCount ; ++j )
			m_StartTiles.push_back( pArea->m_wbvRegion.m_BvPathTileIndex.m_pdwData[j] );
	}
}

DWORD FieldInfo::GetRandomStartingTileIndex()
{
	// 罰待 寂敲
	ASSERT( m_StartTiles.size() != 0 );
	random_shuffle( m_StartTiles.begin(), m_StartTiles.end() );
	return *(m_StartTiles.begin());
}

TriggerGroupInfo * FieldInfo::GetTriggerGroupInfo( const TCHAR * pszGroupName )
{
	return m_pTriggerGroupInfoList->GetGroupInfo( pszGroupName );
}
BOOL FieldInfo::CheckMapVersion( DWORD dwCheckSum )
{
	if( m_pWorldBase->GetCheckSum() != dwCheckSum )
	{
		return FALSE;
	}
	else
	{
		if( 0 == dwCheckSum)
		{
			// 0牢 版快綽 備滾傈 甘!!
			return FALSE;
		}
		return TRUE;
	}
}

////////////////////////////////////////////////////////////////////////////////////
// SectorInfo class 
////////////////////////////////////////////////////////////////////////////////////
SectorInfo::SectorInfo( DWORD index )
	:	m_dwSectorIndex ( index ),
		m_NeighborSectorInfo ( MAX_NEIGHBOR_SECTOR_NUM )
{

}

SectorInfo::~SectorInfo()
{

}

VOID SectorInfo::AddNeighborSectorInfo( SectorInfo * pSectorInfo )
{
	m_NeighborSectorInfo.AddTail( pSectorInfo );
}







































?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃精品视频在线观看| 不卡一区二区三区四区| 亚洲一卡二卡三卡四卡五卡| 国产精品久99| 国产欧美日韩一区二区三区在线观看| 精品乱人伦小说| 精品国产91亚洲一区二区三区婷婷| 日韩一区二区电影在线| 欧美一级一区二区| 欧美电影免费观看高清完整版| 欧美一区二区三区四区视频| 欧美一区二区女人| 精品久久久久久久久久久久久久久 | 中文字幕va一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美精品一区二区三区久久久| 欧美xxxxx牲另类人与| 久久综合九色综合97婷婷女人| 久久蜜桃一区二区| 国产精品污污网站在线观看| 成人免费视频在线观看| 亚洲午夜免费视频| 日韩av午夜在线观看| 精品亚洲成a人| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 亚洲免费观看在线观看| 亚洲激情在线激情| 肉肉av福利一精品导航| 精品午夜一区二区三区在线观看| 国产成人日日夜夜| 91视频你懂的| 7777精品久久久大香线蕉| 欧美成人精品福利| 欧美激情一区二区三区| 一区二区三区**美女毛片| 日韩av一区二| 成人免费观看男女羞羞视频| 在线观看日韩高清av| 日韩欧美一二区| 国产精品传媒视频| 日韩精品一卡二卡三卡四卡无卡| 国产精品69毛片高清亚洲| 色天天综合色天天久久| 日韩一级高清毛片| 国产精品久久久久毛片软件| 亚洲高清一区二区三区| 国产精品一区二区视频| 日本黄色一区二区| 久久综合色综合88| 亚洲最大成人网4388xx| 国产在线不卡一区| 91国偷自产一区二区使用方法| 精品国产一区二区三区av性色| 亚洲欧美另类小说视频| 久久精品久久久精品美女| 一本高清dvd不卡在线观看| 日韩一区二区三区视频在线观看| 国产精品大尺度| 九九精品一区二区| 欧美视频一区二区在线观看| 久久精品欧美一区二区三区不卡 | 韩日精品视频一区| 欧美自拍偷拍午夜视频| 国产偷国产偷精品高清尤物| 亚洲777理论| 不卡一卡二卡三乱码免费网站| 日韩精品一区二区三区四区| 亚洲欧美日韩国产综合在线 | 色噜噜狠狠一区二区三区果冻| 欧美大胆一级视频| 亚洲1区2区3区4区| 91免费观看视频在线| 国产亚洲综合av| 蜜臀av在线播放一区二区三区| 一本一道久久a久久精品| 精品国产乱码久久久久久闺蜜 | 91色porny| 久久久久99精品一区| 欧美日韩在线播放三区四区| 国产婷婷一区二区| 麻豆免费精品视频| 欧美日精品一区视频| 亚洲少妇屁股交4| 国产福利一区二区三区视频 | 亚洲高清免费在线| 99综合电影在线视频| 国产丝袜欧美中文另类| 日本少妇一区二区| 欧美绝品在线观看成人午夜影视| 亚洲免费av高清| av欧美精品.com| 国产日韩v精品一区二区| 激情综合网天天干| 精品久久久久久久人人人人传媒| 日本一区二区三区在线观看| 精品一区二区三区蜜桃| 51久久夜色精品国产麻豆| 国产一区二区网址| 日韩欧美一区中文| 五月天一区二区三区| 欧美性大战xxxxx久久久| 亚洲女人****多毛耸耸8| aaa亚洲精品一二三区| 国产精品久久久久久久久免费丝袜| 精品中文字幕一区二区| 欧美一级高清片| 蜜臀av性久久久久蜜臀aⅴ四虎| 91麻豆精品国产自产在线| 亚洲一区二区精品视频| 欧美三级中文字幕| 午夜激情综合网| 欧美一级欧美三级在线观看| 亚洲mv在线观看| 在线91免费看| 日本不卡不码高清免费观看| 日韩一区和二区| 精品午夜一区二区三区在线观看 | 国产日韩一级二级三级| 国产iv一区二区三区| 国产精品欧美久久久久一区二区| 成人免费不卡视频| 亚洲美女视频在线| 日韩欧美高清dvd碟片| 国产成人免费在线观看| 国产亚洲成aⅴ人片在线观看| 国产电影一区在线| 中文字幕一区二区不卡 | 亚洲国产精品ⅴa在线观看| 成人av在线影院| 亚洲综合精品久久| 3atv一区二区三区| 狠狠色丁香九九婷婷综合五月| 国产欧美日韩亚州综合| 91免费版在线| 三级亚洲高清视频| 久久综合九色综合97_久久久| 国产精品亚洲成人| 亚洲欧美视频一区| 91 com成人网| 国产69精品久久777的优势| 亚洲人成网站色在线观看| 欧美日韩成人综合| 国产精品亚洲午夜一区二区三区| 综合精品久久久| 欧美一区二区三级| 成人国产精品免费观看| 午夜影院在线观看欧美| 久久久国产精品麻豆| 色婷婷综合视频在线观看| 免费观看成人av| 国产精品电影一区二区三区| 91精品国产综合久久国产大片| 国产精品一区2区| 亚洲午夜精品在线| 91麻豆免费视频| 欧美一区二区三区免费视频 | 亚洲免费成人av| 欧美一区二区三区视频在线| 国产成人av电影免费在线观看| 亚洲精品免费在线| 欧美成人乱码一区二区三区| 色av成人天堂桃色av| 久久99精品国产| 一区二区三区毛片| 久久久噜噜噜久久中文字幕色伊伊| 在线观看不卡视频| 国产乱码字幕精品高清av| 夜夜精品浪潮av一区二区三区| 欧美v日韩v国产v| 欧亚洲嫩模精品一区三区| 国产精品一区在线观看乱码| 亚洲18色成人| 综合久久久久久| 久久久蜜桃精品| 欧美一区二区三区男人的天堂| 色综合久久久久久久| 国产成人在线免费| 久久草av在线| 午夜激情久久久| 一区二区三区四区乱视频| 欧美高清在线一区二区| 91精品欧美一区二区三区综合在| 色婷婷精品久久二区二区蜜臂av| 盗摄精品av一区二区三区| 久久精品国产99国产| 亚洲大片精品永久免费| 综合久久给合久久狠狠狠97色| 久久久777精品电影网影网| 日韩一区二区三区在线观看| 欧美日韩精品欧美日韩精品一综合| 99久久精品情趣| 国产精品66部| 国产美女视频91| 国内精品视频666| 日本少妇一区二区| 日本成人在线电影网| 天天亚洲美女在线视频| 亚洲国产欧美一区二区三区丁香婷| 中文字幕亚洲精品在线观看| 国产精品视频在线看|