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

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

?? cbrunot.cpp

?? 赤壁之戰的游戲源代碼
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
// pUnit	:	投石車
// pU		:	敵人
void RUN_FIGHT_SetStone( struct UNIT_STRUCT *pUnit , struct UNIT_STRUCT *pU )
{
	Assert( EYE_IfUnitIsCatapult( pUnit ) );

	struct OTHER_STRUCT other;
	OTHER_ClearData( &other );
	// 類型,大小和顯示
	other.nType = OTHER_TYPE_STONE;
	other.nFile = 4;

	// 得到打擊點數
	//--------------------攻擊計算--------------------
	int nAttack;
	Assert( EYE_IfUnitIsCatapult( pUnit ) );
	nAttack = EYE_GetFarAttack( pUnit );
	//other.nHit = RUN_FIGHT_calcHitPoint( pUnit, pU );
	//--------------------攻擊計算--------------------
	other.nHit = nAttack;

	other.nSpeed = 8;
	other.nMaxFrame = 1;
	other.szItem.cx = MAP_Lib.Other[other.nFile].szItem.cx;	// size
	other.szItem.cy = MAP_Lib.Other[other.nFile].szItem.cy;
	other.nOwnerID = pUnit->nID;	// 設置自己的標識,為攻擊敵人后給敵人的nIDAttackMe賦值

	// 開始和結束坐標
	// 這里所進行校正據要與CBOther.cpp文件里的OTHER_Hit()的校正相同
	POINT ptEnd;
	RECT rect = MAP_GetUnitRect( DRAW_ptScreenOffset, &pUnit->Draw );
	other.ptBegin.x = ((rect.left+rect.right)>>1) + DRAW_ptScreenOffset.x;// begin position
	other.ptBegin.y = ((rect.top+rect.bottom)>>1) + DRAW_ptScreenOffset.y-10;
	rect = MAP_GetUnitRect( DRAW_ptScreenOffset, &pU->Draw );
	ptEnd.x = ((rect.left+rect.right)>>1) + DRAW_ptScreenOffset.x;// end position
	// 注意:此處與弓箭手不一樣
	Assert( ptEnd.y >=0 );
	Assert( ptEnd.x >=0 );
	ptEnd.y = ((rect.top+rect.bottom)>>1) + DRAW_ptScreenOffset.y;
	other.ptEnd.x = pU->Draw.nX;	// 目的地坐標是敵人現在所在位置坐標
	other.ptEnd.y = pU->Draw.nY;
	
	// 為移動做準備
	int nDistX, nDistY;
	nDistX = ptEnd.x - other.ptBegin.x;
	nDistY = ptEnd.y - other.ptBegin.y;
	other.nDelay = (int)sqrt( float(nDistX*nDistX+nDistY*nDistY) );	// 求斜邊的長
	other.fSin = nDistY/(float)other.nDelay;// Sin()
	other.fCos = nDistX/(float)other.nDelay;// Cos()

	// 設置方向
	int nDir = -1;
	float fSin = other.fSin;
	float fCos = other.fCos;
	if( fSin >= 0.866 )		nDir = 4;	// 60-120
	else if( fSin<0.866 && fSin>=0.5 )	
	{
		if( fCos<0.866 && fCos>=0.5 )
				nDir = 3;				// 30-60
		else	nDir = 5;				// 120-150
	}
	else if( fSin<0.5 && fSin>=-0.5 )
	{
		if( fCos>0.866 )
				nDir = 2;				// 330-30
		else	nDir = 6;				// 150-210
	}
	else if( fSin<-0.5 && fSin>=-0.866 )
	{
		if( fCos<-0.5 && fCos>=-0.866 )
				nDir = 7;				// 210-240
		else	nDir = 1;				// 300-330
	}
	else if( fSin<-0.866 )	nDir = 0;	// 240-300

//	other.nCol[0] = nDir;
	Assert( pUnit->Draw.ptOff.x == 0 && pUnit->Draw.ptOff.y == 0 );

#ifdef	_DEBUG_OFFSET_
	if( !( pUnit->Draw.ptOff.x == 0 && pUnit->Draw.ptOff.y == 0) )
	{
		pUnit->Draw.ptOff.x = pUnit->Draw.ptOff.y = 0;
//		WriteLogFile( "off.log", "Setstone\n" );
	}
#endif //_DEBUG_OFFSET_

	pUnit->Draw.nDir = nDir;	// 順便也給弓箭手設上

	OTHER_CreateData( &other );

	//---- 音效
	// 投石車
	POINT pt;
	pt.x = pUnit->Draw.nX, pt.y = pUnit->Draw.nY;
	if( PtInRect( &DRAW_rcScreen, pt ) )
	{
		// throw.wav
		DATA_WAVE_EffectPlay( 105 );
	}
	//---- 音效
}

// 是100人的步兵和弓兵,而且正使用的計謀是滾木
// pUnit	:	投滾木的人
// pU		:	敵人
void RUN_FIGHT_SetGunMu( struct UNIT_STRUCT *pUnit , struct UNIT_STRUCT *pU )
{
	// 必須是100人的步兵或弓兵
	Assert( pUnit->Draw.nFile == 32 || pUnit->Draw.nFile == 45 );

	struct OTHER_STRUCT other;
	OTHER_ClearData( &other );
	// 類型,大小和顯示
	other.nType = OTHER_TYPE_GUNMU;
	if( pUnit->Draw.nFile == 32 )
		other.nFile = 9;	// 石頭
	else
		other.nFile = 10;	// 木頭

	// 得到打擊點數
	//--------------------攻擊計算--------------------
	int nAttack;
//	Assert( EYE_IfUnitIsCatapult( pUnit ) );
//	nAttack = EYE_GetFarAttack( pUnit );
	nAttack = 30;
	//other.nHit = RUN_FIGHT_calcHitPoint( pUnit, pU );
	//--------------------攻擊計算--------------------
	other.nHit = nAttack;

	other.nSpeed = 8;
	other.nMaxFrame = 1;
	other.szItem.cx = MAP_Lib.Other[other.nFile].szItem.cx;	// size
	other.szItem.cy = MAP_Lib.Other[other.nFile].szItem.cy;
	other.nOwnerID = pUnit->nID;	// 設置自己的標識,為攻擊敵人后給敵人的nIDAttackMe賦值

	// 開始和結束坐標
	// 這里所進行校正據要與CBOther.cpp文件里的OTHER_Hit()的校正相同
	POINT ptEnd;
	RECT rect = MAP_GetUnitRect( DRAW_ptScreenOffset, &pUnit->Draw );
	other.ptBegin.x = ((rect.left+rect.right)>>1) + DRAW_ptScreenOffset.x;// begin position
	other.ptBegin.y = ((rect.top+rect.bottom)>>1) + DRAW_ptScreenOffset.y-10;
	rect = MAP_GetUnitRect( DRAW_ptScreenOffset, &pU->Draw );
	ptEnd.x = ((rect.left+rect.right)>>1) + DRAW_ptScreenOffset.x;// end position
	// 注意:此處與弓箭手不一樣
	Assert( ptEnd.y >=0 );
	Assert( ptEnd.x >=0 );
	ptEnd.y = ((rect.top+rect.bottom)>>1) + DRAW_ptScreenOffset.y;
	other.ptEnd.x = pU->Draw.nX;	// 目的地坐標是敵人現在所在位置坐標
	other.ptEnd.y = pU->Draw.nY;
	
	// 為移動做準備
	int nDistX, nDistY;
	nDistX = ptEnd.x - other.ptBegin.x;
	nDistY = ptEnd.y - other.ptBegin.y;
	other.nDelay = (int)sqrt( float(nDistX*nDistX+nDistY*nDistY) );	// 求斜邊的長
	other.fSin = nDistY/(float)other.nDelay;// Sin()
	other.fCos = nDistX/(float)other.nDelay;// Cos()

	// 設置方向
	int nDir = -1;
	float fSin = other.fSin;
	float fCos = other.fCos;
	if( fSin >= 0.866 )		nDir = 4;	// 60-120
	else if( fSin<0.866 && fSin>=0.5 )	
	{
		if( fCos<0.866 && fCos>=0.5 )
				nDir = 3;				// 30-60
		else	nDir = 5;				// 120-150
	}
	else if( fSin<0.5 && fSin>=-0.5 )
	{
		if( fCos>0.866 )
				nDir = 2;				// 330-30
		else	nDir = 6;				// 150-210
	}
	else if( fSin<-0.5 && fSin>=-0.866 )
	{
		if( fCos<-0.5 && fCos>=-0.866 )
				nDir = 7;				// 210-240
		else	nDir = 1;				// 300-330
	}
	else if( fSin<-0.866 )	nDir = 0;	// 240-300

	other.nCol[0] = nDir;
	Assert( pUnit->Draw.ptOff.x == 0 && pUnit->Draw.ptOff.y == 0 );

#ifdef	_DEBUG_OFFSET_
	if( !( pUnit->Draw.ptOff.x == 0 && pUnit->Draw.ptOff.y == 0) )
	{
		pUnit->Draw.ptOff.x = pUnit->Draw.ptOff.y = 0;
//		WriteLogFile( "off.log", "Setstone\n" );
	}
#endif //_DEBUG_OFFSET_

	pUnit->Draw.nDir = nDir;	// 順便也給弓箭手設上

	OTHER_CreateData( &other );

	//---- 音效
	// 投石車
	POINT pt;
	pt.x = pUnit->Draw.nX, pt.y = pUnit->Draw.nY;
	if( PtInRect( &DRAW_rcScreen, pt ) )
	{
		// throw.wav
		DATA_WAVE_EffectPlay( 105 );
	}
	//---- 音效
}

// 對于弓箭手,箭樓,戰船,要射箭,必然命中
// pUnit	:	弓箭手
// pU		:	敵人
void RUN_FIGHT_SetArrow( struct UNIT_STRUCT *pUnit , struct UNIT_STRUCT *pU )
{
	Assert( EYE_IfUnitIsArcher( pUnit ) 
		|| EYE_IfUnitIsTower( pUnit ) 
		|| EYE_IfUnitIsBattleShip( pUnit ) );
/*
	if( pUnit->bHasStone == TRUE )
	{	// 已經投出石頭了,不能再投
		return;
	}
	// 設置投出的標志
	pUnit->bHasStone = TRUE;
*/
	struct OTHER_STRUCT other;
	OTHER_ClearData( &other );
	// 類型,大小和顯示
	other.nType = OTHER_TYPE_ARROW;
	other.nFile = 0;

	// 得到遠程打擊點數
	other.nHit = RUN_FIGHT_calcHitPointF( pUnit, pU );

	other.nSpeed = 16;
	other.nMaxFrame = 1;
	other.szItem.cx = MAP_Lib.Other[other.nFile].szItem.cx;	// size
	other.szItem.cy = MAP_Lib.Other[other.nFile].szItem.cy;
	other.nOwnerID = pUnit->nID;	// 設置自己的標識,為攻擊敵人后給敵人的nIDAttackMe賦值
	other.nTargetID = pU->nID;		// 敵人的標識,必然命中

	// 開始和結束坐標
	// 這里所進行校正據要與CBOther.cpp文件里的OTHER_Hit()的校正相同
	RECT rect = MAP_GetUnitRect( DRAW_ptScreenOffset, &pUnit->Draw );
	other.ptBegin.x = ((rect.left+rect.right)>>1) + DRAW_ptScreenOffset.x;// begin position
	other.ptBegin.y = ((rect.top+rect.bottom)>>1) + DRAW_ptScreenOffset.y-10;
	rect = MAP_GetUnitRect( DRAW_ptScreenOffset, &pU->Draw );
	other.ptEnd.x = ((rect.left+rect.right)>>1) + DRAW_ptScreenOffset.x;// end position
	other.ptEnd.y = ((rect.top+rect.bottom)>>1) + DRAW_ptScreenOffset.y-10;
	
	// 為移動做準備
	int nDistX, nDistY;
	nDistX = other.ptEnd.x - other.ptBegin.x;
	nDistY = other.ptEnd.y - other.ptBegin.y;
	other.nDelay = (int)sqrt( float(nDistX*nDistX+nDistY*nDistY) );	// 求斜邊的長
	other.fSin = nDistY/(float)other.nDelay;// Sin()
	other.fCos = nDistX/(float)other.nDelay;// Cos()

	// 設置方向
	int nDir = -1;
	float fSin = other.fSin;
	float fCos = other.fCos;
	if( fSin >= 0.866 )		nDir = 4;	// 60-120
	else if( fSin<0.866 && fSin>=0.5 )	
	{
		if( fCos<0.866 && fCos>=0.5 )
				nDir = 3;				// 30-60
		else	nDir = 5;				// 120-150
	}
	else if( fSin<0.5 && fSin>=-0.5 )
	{
		if( fCos>0.866 )
				nDir = 2;				// 330-30
		else	nDir = 6;				// 150-210
	}
	else if( fSin<-0.5 && fSin>=-0.866 )
	{
		if( fCos<-0.5 && fCos>=-0.866 )
				nDir = 7;				// 210-240
		else	nDir = 1;				// 300-330
	}
	else if( fSin<-0.866 )	nDir = 0;	// 240-300

	other.nCol[0] = nDir;
	pUnit->Draw.nDir = nDir;	// 順便也給弓箭手設上

	OTHER_CreateData( &other );

	// 弓箭攻擊音效
	RUN_SOUND_HitF( pUnit->Draw.nX, pUnit->Draw.nY, pUnit->Draw.nFile );
	// 弓箭攻擊音效
}

// mouse hit result
// 命令的主體的計數器
extern int	CTRL_nHitCounter;
// 計算戰斗效果,死傷人數
// pUnit	:	攻擊方
// pU	:	被攻擊方
// return	:	TRUE if 被攻擊的一方死了
BOOL RUN_FIGHT_CalcResult( struct UNIT_STRUCT *pUnit, struct UNIT_STRUCT *pU )
{
	// July 31. 1997, Liu Gang
	if( EYE_IfUnitIsDead( pU ) )
		return FALSE;	//

	// 給被攻擊的人置標志
	if( pUnit->Draw.nPlayer != pU->Draw.nPlayer )
	{
		pU->nIDAttackMe = pUnit->nID;
		if( pU->Draw.nPlayer == GAME.nMe )	// 被攻擊方是游戲者
		{
			MINI_SetBlink( pU->Draw.nDrawX, pU->Draw.nDrawY );
			RUN_SOUND_UnderAttack( pU->Draw.nX, pU->Draw.nY, pU->Draw.nFile );
		}
	}

	// 如果被攻擊方的血格在被攻擊前多于滿值一半,而被攻擊后少于滿值一半,
	// 則發出受傷聲音。
	BOOL bWounded = FALSE;
	if( pU->nLife>=(EYE_GetFullLife( pU->Draw.nPlayer, pU->Draw.nFile )>>1) )
		bWounded = TRUE;
	// 被攻擊方生命減少
	pU->nLife -= RUN_FIGHT_calcHitPoint( pUnit, pU );
	if( pU->nLife>=(EYE_GetFullLife( pU->Draw.nPlayer, pU->Draw.nFile )>>1) 
		|| bWounded == FALSE )
		bWounded = FALSE;
	if( bWounded == TRUE )
		// 受傷音效
		RUN_SOUND_Wounded( pU->Draw.nX, pU->Draw.nY, pU->Draw.nFile );
		// 受傷音效

	// 攻擊音效
	RUN_SOUND_Hit( pUnit->Draw.nX, pUnit->Draw.nY, pUnit->Draw.nFile );
	// 攻擊音效

	// 查看是否該死了
	if( pU->nLife <= 0  )
	{
		RUN_UNIT_ToDie( pU );
		return TRUE;
	}

	if( EYE_IfFocusOnUnit( pU ) )
		//&& EYE_IfSheIsMine( pU )
	{
		// 更新血格條
		if( EYE_IfUnitIsGen( pU ) )
		{
			FACE_ShowProcessBar( PROCESSBAR_BLOOD, pU->nLife*100/EYE_GetFullLife( pU->Draw.nPlayer, pU->Draw.nFile) );
		}
		else if( CTRL_nHitCounter == 1 )
			FACE_ShowProcessBar( PROCESSBAR_STONE, pU->nLife*100/EYE_GetFullLife( pU->Draw.nPlayer, pU->Draw.nFile) );
	}
	return FALSE;
}

// 檢測是否到達目的地了
// pUnit	:	被檢測的單元
// return	:	應該轉變的方向,0-1,為-1時未到達
int RUN_MOVE_IfArrived( struct UNIT_STRUCT *pUnit )
{
	// 對于運送(采集)命令,nTaskIDEx所指定的目的地類型是地形(麥田,樹林)
	// 有部隊歸屬的工人士兵和文將,目標類型是地形
	if( (pUnit->Task.nTaskID == YUNSONG 
		&& pUnit->Status.nTaskID == YIDONG 
		&& pUnit->Status.nTaskIDEx == 1 ) )
	{
		if( EYE_IfUnitIsWorker( pUnit )
		&& pUnit->Soldier.nGenID == MAP_DATA_NONE )
		;
		else
		{
			Assert( (EYE_IfUnitIsWorker( pUnit )
			&& pUnit->Soldier.nGenID != MAP_DATA_NONE)
			|| EYE_IfUnitIsWorkerGen( pUnit ) );

			Assert( pUnit->Task.nTaskIDEx2 < 2 
				&& pUnit->Task.nTaskIDEx2 >= 0 );

			int nDir;
			nDir = EYE_IfResIsInRange( pUnit, pUnit->Task.nTaskIDEx2 );
			if( nDir != -1 )
			{
				pUnit->Status.nParam4 = 0;	// 取消預堵塞
				return nDir;
			}
		}
	}

	// 檢測是否接近目的地,目的地是單元
	if( pUnit->Status.nTaskIDEx == 2 )
	{
		int nDir, nRange;
		// 只判定相臨的格子
		if( pUnit->Task.nTaskID == GONGJI )
			nRange = -1;	
		else	nRange = 1;	// 如果任務不是攻擊,強制判定范圍是1
		if( (nDir = EYE_IfUnitIsInRange( pUnit->nID, pUnit->Task.nParam1, nRange )) >= 0 )
		{	// 到達目的地了
			pUnit->Status.nParam4 = 0;	// 取消預堵塞
			return nDir;
		}

		// 檢測是否目標單元已經被刪除,或在建筑內部
		struct UNIT_STRUCT *pU = MAP_GetUnit( pUnit->Task.nParam1 );
		Assert( pU );
		if( EYE_IfUnitIsDead( pU ) 
			|| nDir == -2 )	
		{	// 到達目的地了
			pUnit->Status.nParam4 = 0;	// 取消預堵塞
			return pUnit->Draw.nDir;
		}
	}

	if( pUnit->MarchTrack[pUnit->StepNum] == 255 )
	{	// 到達目的地
		if( pUnit->Task.nTaskID == JIANZAO 
			&& pUnit->Task.nTaskIDEx2 == 20// 任務是造船塢
			&& pUnit->Task.nTaskIDEx == 1 
			&& pUnit->Status.nParam4 != 255 )
			//&& MAP_GetUnitDataEx( pUnit->Status.nParam2, pUnit->Status.nParam3 ) == MAP_DATA_NONE
			//&& EYE_IfShipYardIsInRange( pUnit, pUnit->Status.nParam2, pUnit->Status.nParam3 ) )	// 船塢
		{	// 到達水邊
			// 把坐標變換到建造建筑(船塢)的位置上去,不能省略
			pUnit->Draw.nXLast = pUnit->Draw.nX;	
			pUnit->Draw.nYLast = pUnit->Draw.nY;
			pUnit->Draw.nX = pUnit->Task.nParam2,
			pUnit->Draw.nY = pUnit->Task.nParam3;
			MAP_SetUnitDataEx( pUnit->Draw.nXLast, pUnit->Draw.nYLast, MAP_DATA_NONE );
			MAP_SetUnitDataEx( pUnit->Draw.nX, pUnit->Draw.nY, pUnit->nID );
			pUnit->Status.nParam4 = 0;	// 取消預堵塞
			// 移動陰影
			CTRL_UNIT_MoveShadow( &pUnit->Draw );
		}
		return pUnit->Draw.nDir;	
	}

	// 路徑出界了
	if( pUnit->StepNum >= GAME_MARCH_MAX )
	{
		return pUnit->Draw.nDir;	
	}
	return -1;
}

// 計算收取建筑資源的多少
// pUnit	:	工人部隊
// pU		:	資源建筑
// return	:	如果尚在獲取為0,資源獲取完畢為1,資源枯竭為2
int RUN_HARVEST_Build( struct UNIT_STRUCT *pUnit, struct UNIT_STRUCT *pU )
{
	if( EYE_IfUnitIsDead( pU ) )
		return 2;	// 該資源已經枯竭了
	if( pUnit->nCounter < RUN_TIMEDELAY_HARVEST )
		return 0;	// 繼續在建筑里呆著

	Assert( EYE_IfUnitIsRes( pU ) 
		|| pU->Draw.nFile == 10 
		|| pU->Draw.nFile == 11 );
	Assert( EYE_IfUnitIsWorker( pUnit )	|| EYE_IfUnitIsWorkerGen( pUnit ) );

	int *pSource = NULL;
	if( pU->Draw.nFile == 10 || pU->Draw.nFile == 11 )
	{	// 敵人的糧倉
		pSource = &GAME.Players[pU->Draw.nPlayer].nFood;
	}
	else
	{	// 一般資源
		pSource = &pU->Build.nResource;
	}
	if( *pSource > 0 )
	{
		if( EYE_IfUnitIsWorker( pUnit ) )
		{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 337p日本欧洲亚洲大胆色噜噜| 国产精品一区二区三区乱码| 亚洲一区二区三区自拍| 亚洲精品一区二区三区福利| 日本韩国一区二区| 高清不卡一二三区| 蜜桃视频一区二区三区在线观看| 亚洲欧美电影一区二区| 久久久久亚洲蜜桃| 91精品国产麻豆国产自产在线| 91丝袜美腿高跟国产极品老师| 激情偷乱视频一区二区三区| 丝袜美腿亚洲色图| 亚洲一区二区在线免费观看视频| 日本一区二区三区国色天香| 欧美岛国在线观看| 欧美一区二区二区| 欧美美女激情18p| 色综合久久久久综合体| 成人看片黄a免费看在线| 狠狠色丁香久久婷婷综合_中| 午夜精品一区二区三区三上悠亚| 亚洲欧美日韩国产成人精品影院| 中文字幕不卡三区| 欧美激情一区二区三区全黄| 久久精品免视看| 26uuu另类欧美亚洲曰本| 欧美www视频| 欧美一区日韩一区| 91精品国产综合久久精品图片| 欧美午夜精品电影| 欧美亚洲高清一区二区三区不卡| 99re热视频这里只精品| 99视频精品在线| 91蜜桃婷婷狠狠久久综合9色| www.日韩在线| 成人av电影观看| 91麻豆精品视频| 日本电影欧美片| 欧美在线观看一区| 欧美日韩免费观看一区二区三区| 欧美日韩一区二区三区四区五区 | 亚洲视频在线一区| 国产在线一区观看| 国内精品写真在线观看| 国内精品免费**视频| 国产激情精品久久久第一区二区| 国产一区二区影院| 成人av在线资源网站| 91蜜桃在线免费视频| 欧美综合一区二区| 欧美一区二区三区免费在线看 | 亚洲精品videosex极品| 亚洲免费在线电影| 一区二区三区成人在线视频| 亚洲综合在线电影| 日本美女一区二区三区视频| 蜜桃av一区二区| 国产盗摄精品一区二区三区在线 | 丁香激情综合国产| 色综合天天综合色综合av| 欧日韩精品视频| 欧美成人一区二区三区| 国产色产综合产在线视频| 成人免费小视频| 亚洲动漫第一页| 韩国v欧美v日本v亚洲v| 不卡在线观看av| 欧美日韩亚洲综合一区二区三区| 日韩一区二区精品| 亚洲欧洲日韩在线| 性感美女极品91精品| 精品在线亚洲视频| 99国产精品国产精品久久| 欧美嫩在线观看| 久久精品一二三| 亚洲成人精品影院| 国产裸体歌舞团一区二区| 一本久久综合亚洲鲁鲁五月天| 欧美日韩mp4| 国产精品嫩草影院com| 亚洲成人av中文| 国产成人aaaa| 欧美一区二区在线免费播放| 久久精品视频网| 日韩中文字幕麻豆| 成年人午夜久久久| 91精品婷婷国产综合久久性色| 国产欧美一区二区精品忘忧草 | 91丨porny丨中文| 欧美肥大bbwbbw高潮| 欧美激情一区在线观看| 偷窥少妇高潮呻吟av久久免费| 国产呦精品一区二区三区网站| 色婷婷久久99综合精品jk白丝| 欧美日本在线看| 国产精品久久久久久久久动漫| 日韩在线观看一区二区| 欧美乱妇23p| 欧美国产日韩a欧美在线观看| 天堂精品中文字幕在线| 色综合久久综合网欧美综合网 | 欧美日韩精品一区二区三区 | 久久精品国产免费看久久精品| 99久久婷婷国产| 久久精品亚洲精品国产欧美kt∨| 亚洲成人激情自拍| 99国内精品久久| 久久精品无码一区二区三区| 日本免费在线视频不卡一不卡二 | 久久精品一二三| 久久成人免费电影| 欧美三级韩国三级日本三斤| 国产精品沙发午睡系列990531| 韩国精品在线观看| 日韩欧美色电影| 日韩精品三区四区| 欧美日韩高清不卡| 亚洲国产一区二区在线播放| 99久久久无码国产精品| 中文子幕无线码一区tr| 国产自产高清不卡| 26uuu国产电影一区二区| 青青草97国产精品免费观看无弹窗版| 欧美亚洲国产怡红院影院| 亚洲视频在线一区| 一本一道综合狠狠老| 亚洲欧洲色图综合| 色综合天天综合网天天狠天天| 国产精品久久久久久一区二区三区 | 久久久久久免费网| 韩国三级中文字幕hd久久精品| 日韩美女一区二区三区四区| 日韩av在线发布| 日韩欧美一级精品久久| 精品亚洲成a人| 日韩一区二区三区四区| 另类小说图片综合网| 欧美mv和日韩mv国产网站| 另类人妖一区二区av| 久久久精品国产免大香伊| 国产成人在线电影| 国产精品女主播av| 色域天天综合网| 香蕉影视欧美成人| 欧美大片拔萝卜| 国产乱国产乱300精品| 国产精品卡一卡二卡三| 色噜噜夜夜夜综合网| 亚洲精品视频观看| 欧美精品777| 国产精品一线二线三线精华| 国产婷婷一区二区| 99久久婷婷国产精品综合| 亚洲一区在线免费观看| 欧美电影在线免费观看| 国产在线精品不卡| 奇米888四色在线精品| 久久奇米777| 99久久免费精品| 五月婷婷久久综合| www成人在线观看| 99国产精品99久久久久久| 亚洲一区在线观看视频| 91精品国产麻豆| hitomi一区二区三区精品| 亚洲一区在线视频观看| 亚洲精品一区二区三区影院| www.日本不卡| 蜜乳av一区二区| 中文字幕一区二区三区在线观看| 欧美在线一区二区三区| 久久99国产精品久久99| 1024成人网| 欧美大白屁股肥臀xxxxxx| 成人福利在线看| 天堂蜜桃一区二区三区| 欧美激情自拍偷拍| 正在播放一区二区| 91在线小视频| 狠狠色狠狠色综合日日91app| 亚洲精品免费在线播放| 精品国产一区二区三区久久影院| 成人av电影在线| 激情五月激情综合网| 一区二区三区中文在线观看| www久久久久| 91精品国产高清一区二区三区 | 欧美变态tickling挠脚心| av亚洲精华国产精华| 免费看欧美美女黄的网站| 亚洲欧美二区三区| 国产亚洲精品福利| 欧美区在线观看| 色94色欧美sute亚洲线路一ni| 国产美女精品一区二区三区| 亚洲成va人在线观看| 国产精品蜜臀在线观看| 精品日韩一区二区三区免费视频|