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

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

?? cmultiplayer.cpp

?? 一個2D的賽車游戲 在VC下運行 開發庫DIRECTX8.1以上
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
	}

	return NULL;
}

int cMultiplayer::GetSPOptionType(int iOption)
{
	if(*GetSPGuid(m_iSPIndex) == CLSID_DP8SP_MODEM)
	{
		switch(iOption)
		{
		case 0:
			return 0;
		case 1:
			return 1;
		}
	}

	if(*GetSPGuid(m_iSPIndex) == CLSID_DP8SP_TCPIP)
	{
		switch(iOption)
		{
		case 0:
			return 1;
		}
	}

	if(*GetSPGuid(m_iSPIndex) == CLSID_DP8SP_SERIAL)
	{
		return 0;
	}

	if(*GetSPGuid(m_iSPIndex) == CLSID_DP8SP_IPX)
	{
		return 1;
	}

	return 0;

}

void cMultiplayer::EnumDevices()
{

	if(m_pdnDeviceInfo)
		delete[] m_pdnDeviceInfo;
	
	HRESULT	hr;

    DWORD                       dwSize          = 0;

    // Determine the required buffer size
    hr = m_pDP->EnumServiceProviders(GetSPGuid(m_iSPIndex), NULL, NULL, &dwSize, &m_dwNumDevices, 0);

#ifdef _DEBUG
	Log("Devices: Size: %d NumDevices: %d\n", dwSize, m_dwNumSP);
#endif

	m_pdnDeviceInfo = (DPN_SERVICE_PROVIDER_INFO*) new BYTE[dwSize];
    //Fill the buffer with service provider information
    hr = m_pDP->EnumServiceProviders(GetSPGuid(m_iSPIndex), NULL, m_pdnDeviceInfo, &dwSize, &m_dwNumDevices, 0);

}

char* cMultiplayer::GetRegStringValue(char* lpszValueName, char* szBuffer, DWORD dwBufLen)
{
    HKEY hKey;
    LONG lRet;

    if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
        "SOFTWARE\\RaceX",
                    0,
                    KEY_QUERY_VALUE,
                    &hKey) != ERROR_SUCCESS)
		return NULL;

    lRet = RegQueryValueEx(hKey,
                    lpszValueName,
                    NULL,
                    NULL,
                    (LPBYTE)szBuffer,
                    &dwBufLen);

    if(lRet != ERROR_SUCCESS) return NULL;

	RegCloseKey(hKey);

	return szBuffer;
}

DWORD cMultiplayer::GetRegDWValue(char* lpszValueName)
{

	DWORD dwSize=sizeof(DWORD), dwValue, dwType=REG_DWORD;
    HKEY hKey;
    LONG lRet;

    if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
        "SOFTWARE\\RaceX",
                    0,
                    KEY_QUERY_VALUE,
                    &hKey) != ERROR_SUCCESS)
		return NULL;


    lRet=RegQueryValueEx(hKey,
                        lpszValueName,
                        0,
                        &dwType,
                        (LPBYTE)&dwValue,
                        &dwSize );

	if(lRet != ERROR_SUCCESS) return NULL;

	RegCloseKey(hKey);

	return dwValue;
}

void cMultiplayer::SetRegDWValue(char* lpszValueName, DWORD dwValue)
{
	DWORD dwSize=sizeof(DWORD), dwType=REG_DWORD;
    HKEY hKey;
    LONG lRet;

    if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
        "SOFTWARE\\RaceX",
                    0,
                    KEY_WRITE,
                    &hKey) != ERROR_SUCCESS)
	{

		if(RegCreateKey(HKEY_LOCAL_MACHINE,
        "SOFTWARE\\RaceX", &hKey) != ERROR_SUCCESS)
			return;
	}


    lRet=RegSetValueEx(hKey,
                        lpszValueName,
                        0,
                        dwType,
                        (LPBYTE)&dwValue,
                        dwSize );

	if(lRet != ERROR_SUCCESS) return;

	RegCloseKey(hKey);
	return;
}

void cMultiplayer::SetRegStringValue(char* lpszValueName, char* lpszValue)
{
	DWORD dwSize=sizeof(DWORD), dwType=REG_SZ;
    HKEY hKey;
	LONG lRet;

    if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,
        "SOFTWARE\\RaceX",
                    0,
                    KEY_WRITE,
                    &hKey) != ERROR_SUCCESS)
	{

		if(RegCreateKey(HKEY_LOCAL_MACHINE,
        "SOFTWARE\\RaceX", &hKey) != ERROR_SUCCESS)
			return;
	}

	dwSize = strlen(lpszValue) + 1;
    lRet=RegSetValueEx(hKey,
                        lpszValueName,
                        0,
                        dwType,
                        (LPBYTE)lpszValue,
                        dwSize );

	if(lRet != ERROR_SUCCESS) return;

	RegCloseKey(hKey);

	return;
}

void cMultiplayer::AdvanceSPOption(int iOption)
{
	char	buffer[20];

	int	iTmp = 0;


	if(*GetSPGuid(m_iSPIndex) == CLSID_DP8SP_MODEM)
	{
		switch(iOption)
		{
		case 0:
			m_iModemDevice++;
			if(m_iModemDevice >= (int)m_dwNumDevices)
				m_iModemDevice = 0;
			SetRegDWValue("ModemDevice", (DWORD) m_iModemDevice);
			return;
		case 1:
			return;
		}
	}

	if(*GetSPGuid(m_iSPIndex) == CLSID_DP8SP_TCPIP)
	{
		return;
	}

	if(*GetSPGuid(m_iSPIndex) == CLSID_DP8SP_SERIAL)
	{
		switch(iOption)
		{
		case 0:
			m_iSerialDevice++;
			if(m_iSerialDevice >= (int)m_dwNumDevices)
				m_iSerialDevice = 0;
			SetRegDWValue("SerialDevice", (DWORD) m_iSerialDevice);
			break;
		case 1:
			switch(m_dwBaudRate)
			{
			case DPNA_BAUD_RATE_9600:
				m_dwBaudRate = DPNA_BAUD_RATE_14400;
				SetRegDWValue("BaudRate", m_dwBaudRate);
				break;
			case DPNA_BAUD_RATE_14400:
				m_dwBaudRate = DPNA_BAUD_RATE_19200;
				SetRegDWValue("BaudRate", m_dwBaudRate);
				break;
			case DPNA_BAUD_RATE_19200:
				m_dwBaudRate = DPNA_BAUD_RATE_38400;
				SetRegDWValue("BaudRate", m_dwBaudRate);
				break;
			case DPNA_BAUD_RATE_38400:
				m_dwBaudRate = DPNA_BAUD_RATE_56000;
				SetRegDWValue("BaudRate", m_dwBaudRate);
				break;
			case DPNA_BAUD_RATE_56000:
				m_dwBaudRate = DPNA_BAUD_RATE_9600;
				SetRegDWValue("BaudRate", m_dwBaudRate);
				break;
			}
			break;
		case 2:
			sprintf(buffer, "%S", DPNA_FLOW_CONTROL_NONE);
			if(strcmp(m_sFlowControl, buffer) == 0)
			{
				sprintf(m_sFlowControl, "%S", DPNA_FLOW_CONTROL_DTR);
				SetRegStringValue("FlowControl", m_sFlowControl);
				break;
			}

			sprintf(buffer, "%S", DPNA_FLOW_CONTROL_DTR);
			if(strcmp(m_sFlowControl, buffer) == 0)
			{
				sprintf(m_sFlowControl, "%S", DPNA_FLOW_CONTROL_XONXOFF);
				SetRegStringValue("FlowControl", m_sFlowControl);
				break;
			}

			sprintf(buffer, "%S", DPNA_FLOW_CONTROL_XONXOFF);
			if(strcmp(m_sFlowControl, buffer) == 0)
			{
				sprintf(m_sFlowControl, "%S", DPNA_FLOW_CONTROL_RTSDTR);
				SetRegStringValue("FlowControl", m_sFlowControl);
				break;
			}

			sprintf(buffer, "%S", DPNA_FLOW_CONTROL_RTSDTR);
			if(strcmp(m_sFlowControl, buffer) == 0)
			{
				sprintf(m_sFlowControl, "%S", DPNA_FLOW_CONTROL_RTS);
				SetRegStringValue("FlowControl", m_sFlowControl);
				break;
			}

			sprintf(buffer, "%S", DPNA_FLOW_CONTROL_RTS);
			if(strcmp(m_sFlowControl, buffer) == 0)
			{
				sprintf(m_sFlowControl, "%S", DPNA_FLOW_CONTROL_NONE);
				SetRegStringValue("FlowControl", m_sFlowControl);
				break;
			}
			break;

		case 3:

			sprintf(buffer, "%S", DPNA_PARITY_NONE);
			if(strcmp(m_sParity, buffer) == 0)
			{
				sprintf(m_sParity, "%S", DPNA_PARITY_MARK);
				SetRegStringValue("Parity", m_sParity);
				break;
			}

			sprintf(buffer, "%S", DPNA_PARITY_MARK);
			if(strcmp(m_sParity, buffer) == 0)
			{
				sprintf(m_sParity, "%S", DPNA_PARITY_EVEN);
				SetRegStringValue("Parity", m_sParity);
				break;
			}

			sprintf(buffer, "%S", DPNA_PARITY_EVEN);
			if(strcmp(m_sParity, buffer) == 0)
			{
				sprintf(m_sParity, "%S", DPNA_PARITY_SPACE);
				SetRegStringValue("Parity", m_sParity);
				break;
			}

			sprintf(buffer, "%S", DPNA_PARITY_SPACE);
			if(strcmp(m_sParity, buffer) == 0)
			{
				sprintf(m_sParity, "%S", DPNA_PARITY_ODD);
				SetRegStringValue("Parity", m_sParity);
				break;
			}

			sprintf(buffer, "%S", DPNA_PARITY_ODD);
			if(strcmp(m_sParity, buffer) == 0)
			{
				sprintf(m_sParity, "%S", DPNA_PARITY_NONE);
				SetRegStringValue("Parity", m_sParity);
				break;
			}
			break;
		case 4:

			sprintf(buffer, "%S", DPNA_STOP_BITS_ONE);
			if(strcmp(m_sStopBits, buffer) == 0)
			{
				sprintf(m_sStopBits, "%S", DPNA_STOP_BITS_ONE_FIVE);
				SetRegStringValue("StopBits", m_sStopBits);
				break;
			}

			sprintf(buffer, "%S", DPNA_STOP_BITS_ONE_FIVE);
			if(strcmp(m_sStopBits, buffer) == 0)
			{
				sprintf(m_sStopBits, "%S", DPNA_STOP_BITS_TWO);
				SetRegStringValue("StopBits", m_sStopBits);
				break;
			}

			sprintf(buffer, "%S", DPNA_STOP_BITS_TWO);
			if(strcmp(m_sStopBits, buffer) == 0)
			{
				sprintf(m_sStopBits, "%S", DPNA_STOP_BITS_ONE);
				SetRegStringValue("StopBits", m_sStopBits);
				break;
			}

			break;
		}
	}

	if(*GetSPGuid(m_iSPIndex) == CLSID_DP8SP_IPX)
	{
		return;
	}

}

BOOL cMultiplayer::Host(char *sSessionName)
{
	m_iPlayerType =  PLAYERTYPE_HOST;

	HRESULT	hr;
	// Create our IDirectPlay8Address Device Address
	hr = CoCreateInstance( CLSID_DirectPlay8Address, NULL,
									   CLSCTX_INPROC_SERVER,
									   IID_IDirectPlay8Address,
									   (LPVOID*) &m_pDeviceAddress ); 
	
	if(SUCCEEDED(hr))
	{

	}
	

	// Set the SP for our Device Address
	hr = m_pDeviceAddress->SetSP(GetSPGuid(m_iSPIndex));

    DPN_APPLICATION_DESC    dpAppDesc;

    // Set up the application description.
    ZeroMemory(&dpAppDesc, sizeof(DPN_APPLICATION_DESC));
    dpAppDesc.dwSize = sizeof(DPN_APPLICATION_DESC);
    dpAppDesc.guidApplication = g_guidApp;
	dpAppDesc.dwMaxPlayers = 4;


	WCHAR wstrSessionName[MAX_PATH];
	MultiByteToWideChar(CP_ACP, 0, sSessionName, 
		strlen(sSessionName), 
		wstrSessionName, 
		MAX_PATH);

	dpAppDesc.pwszSessionName = new WCHAR[wcslen(wstrSessionName)+1];
	wcscpy( dpAppDesc.pwszSessionName, wstrSessionName );

    // We are now ready to host the application.
    hr = m_pDP->Host( &dpAppDesc,          // AppDesc
                      &m_pDeviceAddress, 1,// Device Address
                      NULL, NULL,              // Reserved
                      NULL,                    // Player Context
                      0);                      // dwFlags


	delete[] dpAppDesc.pwszSessionName;

	return TRUE;
}

BOOL cMultiplayer::EnumSessions()
{
    DPN_APPLICATION_DESC    dpAppDesc;
	HRESULT					hr;
	HOST_NODE*              pHostNode = NULL;
	WCHAR*                  pwszURL = NULL;
	DWORD                   dwNumChars = 0;

	// Create our IDirectPlay8Address Device Address
	hr = CoCreateInstance( CLSID_DirectPlay8Address, NULL,
									   CLSCTX_INPROC_SERVER,
									   IID_IDirectPlay8Address,
									   (LPVOID*) &m_pDeviceAddress ); 
	// Set the SP for our Device Address
	hr = m_pDeviceAddress->SetSP(GetSPGuid(m_iSPIndex));


	// TODO: Add your control notification handler code here
	ZeroMemory(&dpAppDesc, sizeof(DPN_APPLICATION_DESC));
	dpAppDesc.dwSize = sizeof(DPN_APPLICATION_DESC);
	dpAppDesc.guidApplication = g_guidApp;
	
	m_iNumHosts = 0;

	hr = m_pDP->EnumHosts( &dpAppDesc,  // pApplicationDesc
									   NULL,  // Host Address
									   m_pDeviceAddress,// Device Address
									   NULL, 0,   // pvUserEnumData, size
									   4,         // dwEnumCount
									   0,         // dwRetryInterval
									   0,         // dwTimeOut
									   NULL,      // pvUserContext
									   NULL,      // pAsyncHandle
									   DPNENUMHOSTS_SYNC); // dwFlags

	
	return TRUE;
}

int cMultiplayer::GetNumSessions()
{
	return m_iNumHosts;
}

void cMultiplayer::GetSessionName(int iIndex, char *sValue, int iSize)
{
	HOST_NODE*              pHostNode = NULL;

	pHostNode = m_pHostList;
	for(int i=0;i<iIndex;i++)
	{
		pHostNode = pHostNode->pNext;
	}

	sprintf(sValue, "%S", pHostNode->pwszSessionName);

	return;
}

void cMultiplayer::SetCanConnect(BOOL bValue)
{
	m_bCanConnect = bValue;
}

BOOL cMultiplayer::GetCanConnect()
{
	return m_bCanConnect;
}

void cMultiplayer::Connect(int iHost)
{
	// TODO: Add your control notification handler code here
    DPN_APPLICATION_DESC        dpnAppDesc;
    IDirectPlay8Address*        pHostAddress = NULL;
	HRESULT						hr;
	HOST_NODE*              pHostNode = NULL;

	m_iPlayerType =  PLAYERTYPE_PEER;
	m_dpnidSelf = 0;

    ZeroMemory(&dpnAppDesc, sizeof(DPN_APPLICATION_DESC));
    dpnAppDesc.dwSize = sizeof(DPN_APPLICATION_DESC);
    dpnAppDesc.guidApplication = g_guidApp;

	pHostNode = m_pHostList;
	for(int i=0;i<iHost;i++)
	{
		pHostNode = pHostNode->pNext;
	}

    hr = pHostNode->pHostAddress->Duplicate(&pHostAddress);

    hr = m_pDP->Connect(&dpnAppDesc,    // Application Description
                        pHostAddress,       // Host Address
                        m_pDeviceAddress,   
                        NULL,  
                        NULL,
                        NULL, 0, 
                        NULL, 
                        NULL,
                        NULL, 
                        DPNCONNECT_SYNC);

	pHostAddress->Release();


}

BOOL cMultiplayer::IsHosting()
{
	if(m_iPlayerType == PLAYERTYPE_HOST)
		return TRUE;
	else
		return FALSE;
}

int cMultiplayer::GetNumConnected()
{
	return m_lstPlayers.size();
}

PLAYER_INFO* cMultiplayer::GetPlayerInfo(int iIndex)
{
	return m_lstPlayers[iIndex];
}

void cMultiplayer::SendTo(DPNID dpnidTarget, int iType, LPBYTE lpBuffer, DWORD dwSize, DWORD dwFlags)
{
    DPNHANDLE       hAsync;
    DPNHANDLE*      phAsync;

    DPN_BUFFER_DESC dpnBuffer;
	HRESULT			hr;

	LPBYTE	pTmpBuffer;
	pTmpBuffer = (LPBYTE) malloc(sizeof(int) + dwSize);
	memcpy(pTmpBuffer, &iType, sizeof(int));
	memcpy(pTmpBuffer+sizeof(int), lpBuffer, dwSize);

    dpnBuffer.pBufferData = pTmpBuffer;
    dpnBuffer.dwBufferSize = sizeof(int) + dwSize;

	if(dwFlags & DPNSEND_SYNC)
		phAsync = NULL;
	else
		phAsync = &hAsync;

    hr = m_pDP->SendTo( dpnidTarget, // dpnid
                                    &dpnBuffer,  // pBufferDesc
                                    1,           // cBufferDesc
                                    0,           // dwTimeOut
                                    NULL,        // pvAsyncContext
                                    phAsync,        // pvAsyncHandle
                                    dwFlags );    // dwFlags

	free(pTmpBuffer);
}

int cMultiplayer::GetNumMessages()
{
	DWORD	dwTemp;

	dwTemp = m_lstMessages.size();
	return dwTemp;
}

PLAYER_MESSAGE* cMultiplayer::GetMessage(int iIndex)
{
	PLAYERMESSAGE_ELEMENT	theIterator;

	EnterCriticalSection(&m_csMessages);
	theIterator = m_lstMessages.begin();
	for(int i=0;i<iIndex;i++)
		theIterator++;
	return (*theIterator);
}

void cMultiplayer::RemoveMessage(PLAYER_MESSAGE *pMessage)
{
	free(pMessage->pReceiveData);
	m_lstMessages.remove(pMessage);
	delete pMessage;
}

int cMultiplayer::GetHost()
{
	return m_dpnidHost;
}

void cMultiplayer::FindHost()
{
	DWORD dwSize = NULL, dwSize2 = NULL;
	DPNID* pDPNIDs = NULL;
	DPN_PLAYER_INFO *pPlayerInfo = NULL;

	m_pDP->EnumPlayersAndGroups(pDPNIDs, &dwSize, DPNENUM_PLAYERS);
	pDPNIDs = (DPNID*)malloc(dwSize * sizeof(DPNID));
	m_pDP->EnumPlayersAndGroups(pDPNIDs, &dwSize, DPNENUM_PLAYERS);

	for(int i=0;i<dwSize;i++)
	{
		dwSize2 = NULL;
		m_pDP->GetPeerInfo(pDPNIDs[i], pPlayerInfo, &dwSize2, 0);
		pPlayerInfo = (DPN_PLAYER_INFO*) malloc(dwSize2);
		m_pDP->GetPeerInfo(pDPNIDs[i], pPlayerInfo, &dwSize2, 0);
		if(pPlayerInfo->dwPlayerFlags & DPNPLAYER_HOST)
		{
			m_dpnidHost = pDPNIDs[i];
			free(pPlayerInfo);
			break;
		}
		free(pPlayerInfo);
	}

	free(pDPNIDs);

#ifdef _DEBUG
	Log("FIND HOST: %d\n", m_dpnidHost);
#endif

}

int cMultiplayer::GetMyId()
{
	return m_dpnidSelf;
}

void cMultiplayer::ReleaseMessage()
{
#ifdef _DEBUG
	//Log("LEAVING CRITICAL SECTION\n");
#endif
	LeaveCriticalSection(&m_csMessages);
}

void cMultiplayer::SetHandler(cMessageHandler *pHandler)
{
	m_pHandler = pHandler;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美经典一区二区| 亚洲一区二区欧美激情| 国产精品久久久久久亚洲伦| 成年人网站91| 欧美在线你懂得| 中文字幕欧美激情一区| 日韩一区精品视频| 91啪在线观看| 国产欧美一区视频| 极品少妇xxxx精品少妇偷拍| 欧美专区在线观看一区| 国产精品久久久久7777按摩| 国产精品自拍网站| 欧美一卡二卡在线观看| 亚洲午夜视频在线观看| 91日韩在线专区| 国产精品无圣光一区二区| 久热成人在线视频| 欧美妇女性影城| 亚洲午夜电影在线观看| 欧美在线制服丝袜| 亚洲精品日韩综合观看成人91| 成人精品免费视频| 中文字幕va一区二区三区| 国产精品一区二区男女羞羞无遮挡 | 欧美日韩成人综合天天影院| 国产精品久久久久久久久免费樱桃| 国产专区综合网| 精品福利视频一区二区三区| 日精品一区二区三区| 欧美日韩国产美女| 亚洲成人在线网站| 欧美精品xxxxbbbb| 蜜桃视频在线观看一区二区| 日韩西西人体444www| 欧美aⅴ一区二区三区视频| 日韩欧美国产一区在线观看| 久久不见久久见中文字幕免费| 精品欧美一区二区在线观看| 国产制服丝袜一区| 国产欧美日韩不卡免费| av一区二区三区四区| 亚洲美女偷拍久久| 欧美日韩小视频| 免费观看在线综合| 国产欧美一区二区三区鸳鸯浴| 成人av小说网| 亚洲成人久久影院| 欧美大片一区二区| 国产乱码精品1区2区3区| 国产日产精品一区| 色天天综合色天天久久| 亚洲成a人片在线不卡一二三区| 91精品麻豆日日躁夜夜躁| 激情另类小说区图片区视频区| 久久女同互慰一区二区三区| av不卡在线播放| 日韩电影在线免费| 欧美不卡一区二区三区| 成人aa视频在线观看| 亚洲chinese男男1069| 欧美变态tickling挠脚心| 国产成人综合在线播放| 夜夜精品视频一区二区| 精品sm捆绑视频| 99re6这里只有精品视频在线观看| 亚洲一区免费观看| 久久久久国产精品麻豆ai换脸| 91久久精品日日躁夜夜躁欧美| 日韩电影在线看| 国产精品高潮呻吟| 欧美精品在线观看一区二区| 国产精品亚洲人在线观看| 亚洲一区二区三区四区不卡| 日韩精品一级二级 | 欧美成人福利视频| 99国产精品国产精品毛片| 日本视频一区二区三区| 亚洲日本青草视频在线怡红院| 欧美一区二区三区视频| 91丨porny丨在线| 精品一区二区三区免费视频| 亚洲一区二区欧美日韩| 中文字幕一区二区三区在线不卡 | 国产精品理论片在线观看| 在线不卡一区二区| 91丨porny丨国产入口| 激情综合色综合久久| 午夜久久福利影院| 最近中文字幕一区二区三区| 亚洲精品在线三区| 6080午夜不卡| 日本精品视频一区二区三区| 国产一区二区三区视频在线播放| 亚洲成人精品一区二区| 亚洲色欲色欲www| 中文字幕成人在线观看| 精品久久国产字幕高潮| 欧美久久久久中文字幕| 在线观看91精品国产入口| 成人av网址在线观看| 盗摄精品av一区二区三区| 精品系列免费在线观看| 美国毛片一区二区三区| 日日嗨av一区二区三区四区| 亚洲va在线va天堂| 婷婷久久综合九色国产成人| 亚洲国产日韩综合久久精品| 亚洲欧美一区二区三区极速播放| 国产精品久久久久久久久图文区| 国产精品网曝门| 中文字幕亚洲综合久久菠萝蜜| 亚洲国产激情av| 国产精品成人午夜| 国产精品免费久久| 国产精品福利影院| 日韩美女视频19| 亚洲乱码国产乱码精品精的特点| 国产成人av资源| 国产成人福利片| jlzzjlzz欧美大全| 91丨九色丨国产丨porny| 免费人成精品欧美精品 | 欧美大胆人体bbbb| 欧美大黄免费观看| 欧美极品另类videosde| 国产精品久久久久9999吃药| 中文字幕日韩av资源站| 一区二区三区中文字幕| 亚洲国产精品天堂| 日本在线不卡视频| 国产乱人伦偷精品视频不卡| av高清久久久| 欧美日韩中文另类| 精品噜噜噜噜久久久久久久久试看 | 91麻豆精品久久久久蜜臀| 精品免费视频.| 亚洲丝袜美腿综合| 香蕉影视欧美成人| 美腿丝袜亚洲综合| 成人免费视频网站在线观看| 色婷婷综合中文久久一本| 正在播放亚洲一区| 中文av字幕一区| 五月天亚洲精品| 国产福利91精品一区| 欧美网站一区二区| 久久中文字幕电影| 一区二区不卡在线播放| 久久精品国产99国产精品| av激情成人网| 精品国产乱码久久久久久蜜臀| 国产精品私人影院| 麻豆精品蜜桃视频网站| 99久久亚洲一区二区三区青草| 欧美视频精品在线| 中文字幕 久热精品 视频在线| 亚洲一级在线观看| 福利一区二区在线| 欧美肥妇bbw| 国产精品成人免费在线| 精品一区二区三区的国产在线播放| jlzzjlzz亚洲日本少妇| 欧美成人精品福利| 亚洲无人区一区| 99视频在线精品| 久久久久久久久久美女| 亚洲国产精品影院| av动漫一区二区| 久久综合久色欧美综合狠狠| 亚洲成人av福利| 97国产一区二区| 国产午夜精品久久久久久免费视| 亚洲高清不卡在线观看| av不卡免费在线观看| 久久久久一区二区三区四区| 午夜av一区二区| 日本韩国精品在线| 国产精品午夜在线观看| 韩日欧美一区二区三区| 日韩一区二区三区视频在线观看| 一区二区三区四区乱视频| 99在线精品免费| 国产精品美女久久久久久2018| 黄页网站大全一区二区| 7777女厕盗摄久久久| 亚洲国产精品久久久男人的天堂| 99久久亚洲一区二区三区青草| 国产欧美日韩综合| 免费成人你懂的| 亚洲综合精品久久| 粉嫩av亚洲一区二区图片| 精品久久久久久无| 日韩成人dvd| 日韩一区二区免费在线电影| 五月激情丁香一区二区三区| 欧美视频中文一区二区三区在线观看| 中文字幕av在线一区二区三区| 国产成人av资源| 中文字幕一区二|