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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? role.cpp

?? 泡泡堂單機版(含ASL游戲引擎源碼 泡泡堂單機版(含ASL游戲引擎源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include "role.h"
#include "map.h"
#include "sound.h"
#include "game.h"

CRole ROLE[ROLE_NUM];

CRole::CRole(void)
: m_pState(NULL)
{
	New();
}

CRole::~CRole(void)
{
	SAFE_DELETE(m_pState);
}

ASLBitmap CRole::m_bmBigPopo;
ASLBitmap CRole::m_bmSlowTurtle;
ASLBitmap CRole::m_bmFastTurtle;
ASLBitmap CRole::m_bmOwl;
ASLBitmap CRole::m_bmFastUFO;

void CRole::LoadSharedBitmap(ASLFile *pFile)
{
	ASLIni ini;
	ASLFileLoader loader;
	ASLFile *pFilePic;
	POINT ptHot;

	ini.Load(pFile);
	ini.SetSection("Shared");
	loader.SetDirApp("Pic");

	ptHot.x = ini.SafeReadInteger("BigPopoHotX");
	ptHot.y = ini.SafeReadInteger("BigPopoHotY");
	pFilePic = loader.Load(ini.SafeReadString("BigPopo").c_str());
	m_bmBigPopo.LoadBMP(pFilePic);
	m_bmBigPopo.SetBlock(9, 1);
	m_bmBigPopo.SetColorKey(clFuchsia);
	m_bmBigPopo.SetHotspot(ptHot);

	ptHot.x = ini.SafeReadInteger("SlowTurtleHotX");
	ptHot.y = ini.SafeReadInteger("SlowTurtleHotY");
	pFilePic = loader.Load(ini.SafeReadString("SlowTurtle").c_str());
	m_bmSlowTurtle.LoadBMP(pFilePic);
	m_bmSlowTurtle.SetBlock(2, 4);
	m_bmSlowTurtle.SetColorKey(clFuchsia);
	m_bmSlowTurtle.SetHotspot(ptHot);

	ptHot.x = ini.SafeReadInteger("FastTurtleHotX");
	ptHot.y = ini.SafeReadInteger("FastTurtleHotY");
	pFilePic = loader.Load(ini.SafeReadString("FastTurtle").c_str());
	m_bmFastTurtle.LoadBMP(pFilePic);
	m_bmFastTurtle.SetBlock(2, 4);
	m_bmFastTurtle.SetColorKey(clFuchsia);
	m_bmFastTurtle.SetHotspot(ptHot);

	ptHot.x = ini.SafeReadInteger("OwlHotX");
	ptHot.y = ini.SafeReadInteger("OwlHotY");
	pFilePic = loader.Load(ini.SafeReadString("Owl").c_str());
	m_bmOwl.LoadBMP(pFilePic);
	m_bmOwl.SetBlock(2, 4);
	m_bmOwl.SetColorKey(clFuchsia);
	m_bmOwl.SetHotspot(ptHot);

	ptHot.x = ini.SafeReadInteger("FastUFOHotX");
	ptHot.y = ini.SafeReadInteger("FastUFOHotY");
	pFilePic = loader.Load(ini.SafeReadString("FastUFO").c_str());
	m_bmFastUFO.LoadBMP(pFilePic);
	m_bmFastUFO.SetBlock(2, 4);
	m_bmFastUFO.SetColorKey(clFuchsia);
	m_bmFastUFO.SetHotspot(ptHot);	
}

void CRole::Load(ASLFile *pFile)
{
	ASLIni ini;
	ASLFileLoader loader;
	POINT ptHot;
	
	ini.Load(pFile);
	ini.SetSection("Role");
	loader.SetDirApp("Pic");

	// 加載主圖
	ptHot.x = ini.SafeReadInteger("MainHotX");
	ptHot.y = ini.SafeReadInteger("MainHotY");
	m_bmMain.LoadBMP(loader.Load(ini.SafeReadString("Main").c_str()));
	m_bmMain.SetBlock(6, 4);
	m_bmMain.SetHotspot(ptHot);
	m_bmMain.SetColorKey(clFuchsia);

	// 加載陰影
	ptHot.x = ini.SafeReadInteger("ShadowHotX");
	ptHot.y = ini.SafeReadInteger("ShadowHotY");
	m_bmShadow.LoadBMP(loader.Load(ini.SafeReadString("Shadow").c_str()));
	m_bmShadow.SetHotspot(ptHot);
	m_bmShadow.SetColorKey(clFuchsia);

	// 加載開始動畫
	ptHot.x = ini.SafeReadInteger("StartHotX");
	ptHot.y = ini.SafeReadInteger("StartHotY");
	m_bmStart.LoadBMP(loader.Load(ini.SafeReadString("Start").c_str()));
	m_bmStart.SetBlock(10, 1);
	m_bmStart.SetHotspot(ptHot);
	m_bmStart.SetColorKey(clFuchsia);

	// 加載一般動畫
	ptHot.x = ini.SafeReadInteger("AniHotX");
	ptHot.y = ini.SafeReadInteger("AniHotY");
	m_bmAni.LoadBMP(loader.Load(ini.SafeReadString("Ani").c_str()));
	m_bmAni.SetBlock(8, 1);
	m_bmAni.SetHotspot(ptHot);
	m_bmAni.SetColorKey(clFuchsia);

	// 加載死亡動畫
	ptHot.x = ini.SafeReadInteger("DieHotX");
	ptHot.y = ini.SafeReadInteger("DieHotY");
	m_bmDie.LoadBMP(loader.Load(ini.SafeReadString("Die").c_str()));
	m_bmDie.SetBlock(11, 1);
	m_bmDie.SetHotspot(ptHot);
	m_bmDie.SetColorKey(clFuchsia);

	// 加載坐騎動畫
	ptHot.x = ini.SafeReadInteger("RideHotX");
	ptHot.y = ini.SafeReadInteger("RideHotY");
	m_bmRide.LoadBMP(loader.Load(ini.SafeReadString("Ride").c_str()));
	m_bmRide.SetBlock(4, 1);
	m_bmRide.SetHotspot(ptHot);
	m_bmRide.SetColorKey(clFuchsia);
}

void CRole::Start(void)
{
	ChangeState(new CRoleStateStart(this));
}

void CRole::New(void)
{
	m_nCellX = 1;
	m_nCellY = 1;
	m_nOffsetX = 0;
	m_nOffsetY = 0;
	m_Direction = drDown;
	m_nPushTime = 0;
	m_bMoving = false;
	m_bFlying = false;
	m_bDead = false;

	m_Ability.nUsedPopo = 0;
	m_Ability.nPopoMax = 1;
	m_Ability.nPopoPower = 1;
	m_Ability.nSpeed = 3;
	m_Ability.bKick = false;
	m_Ability.Vehicle = vtNone;

	SAFE_DELETE(m_pState);
}

void CRole::Draw(void) const
{
	int x = (m_nCellX-1) * CELL_SIZE + SCENE_LEFT + m_nOffsetX;
	int y = m_nCellY * CELL_SIZE + SCENE_TOP + m_nOffsetY;
	
	m_pState->Draw(x, y);
}

void CRole::Update(float fDelta)
{
	m_pState->Update(fDelta);
}

void CRole::Move(Direction dir)
{
	m_bMoving = true;
	if (m_Direction != dir)
	{
		m_nPushTime = 0;
		m_Direction = dir;
	}
}

void CRole::LayPopo(void)
{
	RoleState rs = m_pState->Type();

	if ((rs == rsNormal || rs == rsIdle) && m_Ability.nUsedPopo < m_Ability.nPopoMax && 
		(MAP[m_nCellY][m_nCellX].Type == itNone || MAP[m_nCellY][m_nCellX].Type == itGift))
	{
		m_Ability.nUsedPopo++;
		
		CPopo *pPopo = (CPopo*)FACTORY.MakeFixedItem(0);
		pPopo->SetPosition(m_nCellY, m_nCellX);
		pPopo->SetPower(m_Ability.nPopoPower);
		pPopo->SetOwner(this);
		SAFE_DELETE(MAP[m_nCellY][m_nCellX].pItem);
		MAP[m_nCellY][m_nCellX].pItem = pPopo;
		MAP[m_nCellY][m_nCellX].Type = itPopo;

		SOUND.Play(snLay);
	}
}

void CRole::Win(void)
{
	ChangeState(new CRoleStateWin(this));
}

void CRole::Normal(void)
{
	RoleState rs = m_pState->Type();
	if (rs == rsNormal && m_Ability.Vehicle != vtNone || rs == rsOnRide)
	{
		ChangeState(new CRoleStateOnDismount(this));
	}
	else if (rs == rsTraped || rs == rsOnTrap)
	{
		ChangeState(new CRoleStateOnSave(this));
	}
}

//-----------------------------------------------------------------------------
// Private Functions

template <Direction dr>
CRole::WalkProperty CRole::GetWalkProperty(void)
{
	int x = m_nCellX, y = m_nCellY;

	switch (dr)
	{
	case drUp: y--; break;
	case drDown: y++; break;
	case drLeft: x--; break;
	case drRight: x++; break;
	case drUpLeft: y--; x--; break;
	case drUpRight: y--; x++; break;
	case drDownLeft: y++; x--; break;
	case drDownRight: y++; x++; break;
	}

	if (MAP[y][x].Type == itFirm || MAP[y][x].Type == itPopo)
	{
		return wpStop;
	}
	else if (MAP[y][x].Type == itSolid || MAP[y][x].Type == itBox)
	{
		return m_bFlying ? wpNone : wpStop;
	}
	else if (MAP[y][x].Type == itNone && MAP[y][x].Blind == btTent)
	{
		return wpTent;
	}
	else
	{
		return wpNone;
	}
}

template <Direction dr>
void CRole::Push(void)
{
	int x = m_nCellX, y = m_nCellY;

	switch (dr)
	{
	case drUp: y--; break;
	case drDown: y++; break;
	case drLeft: x--; break;
	case drRight: x++; break;
	case drUpLeft: y--; x--; break;
	case drUpRight: y--; x++; break;
	case drDownLeft: y++; x--; break;
	case drDownRight: y++; x++; break;
	}

	if (MAP[y][x].Type == itBox)
	{
		m_nPushTime++;
		if (m_nPushTime >= 20)
		{
			m_nPushTime = 0;
			ASSERT(MAP[y][x].pItem != NULL);
			((CBox*)MAP[y][x].pItem)->Move(dr);
		}
	}
	else if (MAP[y][x].Type == itPopo && m_Ability.bKick && !m_bFlying)
	{
		ASSERT(MAP[y][x].pItem != NULL);
		((CPopo*)MAP[y][x].pItem)->Move(dr);
	}
}

void CRole::UpdateMoveUp(int nSpeed)
{
	WalkProperty up, upleft, upright, left, right;

	up			= GetWalkProperty<drUp>();
	upleft		= GetWalkProperty<drUpLeft>();
	upright		= GetWalkProperty<drUpRight>();
	left		= GetWalkProperty<drLeft>();
	right		= GetWalkProperty<drRight>();

	if (m_nOffsetY > 0)
	{
		m_nOffsetY -= nSpeed;
		if (m_nOffsetY < 0 && up != wpNone)
		{
			m_nOffsetY = 0;
		}
	}
	else
	{
		switch (up)
		{
		case wpStop:
			if (m_nOffsetX < -10 && left == wpNone && upleft <= wpTent)
			{
				m_nOffsetX -= nSpeed;
			}
			else if (m_nOffsetX > 10 && right == wpNone && upright <= wpTent)
			{
				m_nOffsetX += nSpeed;
			}
			else
			{
				Push<drUp>();
			}
			break;

		case wpTent:
			if (m_nOffsetX == 0)
			{
				m_nOffsetY -= nSpeed;
			}
			else if (m_nOffsetX < 0)
			{
				m_nOffsetX = min(m_nOffsetX + nSpeed, 0);
			}
			else if (m_nOffsetX > 0)
			{
				m_nOffsetX = max(m_nOffsetX - nSpeed, 0);
			}
			break;

		case wpNone:
			if (m_nOffsetX < 0 && upleft == wpNone ||
				m_nOffsetX > 0 && upright == wpNone ||
				m_nOffsetX == 0)
			{
				m_nOffsetY -= nSpeed;
			}
			else if (m_nOffsetX < 0 && upleft != wpNone)
			{
				m_nOffsetX = min(m_nOffsetX + nSpeed, 0);
			}
			else if (m_nOffsetX > 0 && upright != wpNone)
			{
				m_nOffsetX = max(m_nOffsetX - nSpeed, 0);
			}
		}
	}

	AdjustCell();	
}

void CRole::UpdateMoveDown(int nSpeed)
{
	WalkProperty down, downleft, downright, left, right;

	down		= GetWalkProperty<drDown>();
	downleft	= GetWalkProperty<drDownLeft>();
	downright	= GetWalkProperty<drDownRight>();
	left		= GetWalkProperty<drLeft>();
	right		= GetWalkProperty<drRight>();

	if (m_nOffsetY < 0)
	{
		m_nOffsetY += nSpeed;
		if (m_nOffsetY > 0 && down != wpNone)
		{
			m_nOffsetY = 0;
		}
	}
	else
	{		
		switch (down)
		{
		case wpStop:
			if (m_nOffsetX < -10 && left == wpNone && downleft <= wpTent)
			{
				m_nOffsetX -= nSpeed;
			}
			else if (m_nOffsetX > 10 && right == wpNone && downright <= wpTent)
			{
				m_nOffsetX += nSpeed;
			}
			else
			{
				Push<drDown>();
			}
			break;

		case wpTent:
			if (m_nOffsetX == 0)
			{
				m_nOffsetY += nSpeed;
			}
			else if (m_nOffsetX < 0)
			{
				m_nOffsetX = min(m_nOffsetX + nSpeed, 0);
			}
			else if (m_nOffsetX > 0)
			{
				m_nOffsetX = max(m_nOffsetX - nSpeed, 0);
			}
			break;
		
		case wpNone:
			if (m_nOffsetX < 0 && downleft == wpNone ||
				m_nOffsetX > 0 && downright == wpNone ||
				m_nOffsetX == 0)
			{
				m_nOffsetY += nSpeed;
			}
			else if (m_nOffsetX < 0 && downleft != wpNone)
			{
				m_nOffsetX = min(m_nOffsetX + nSpeed, 0);
			}
			else if (m_nOffsetX > 0 && downright != wpNone)
			{
				m_nOffsetX = max(m_nOffsetX - nSpeed, 0);
			}
		}
	}

	AdjustCell();
}

void CRole::UpdateMoveLeft(int nSpeed)
{
	WalkProperty left, downleft, upleft, down, up;
	left		= GetWalkProperty<drLeft>();
	downleft	= GetWalkProperty<drDownLeft>();
	upleft		= GetWalkProperty<drUpLeft>();
	down		= GetWalkProperty<drDown>();
	up			= GetWalkProperty<drUp>();

	if (m_nOffsetX > 0)
	{
		m_nOffsetX -= nSpeed;
		if (m_nOffsetX < 0 && left != wpNone)
		{
			m_nOffsetX = 0;
		}
	}
	else if (MAP[m_nCellY][m_nCellX].Blind != btTent)
	{
		if (left != wpNone)
		{
			if (m_nOffsetY < -10 && up == wpNone && upleft <= wpTent)
			{
				m_nOffsetY -= nSpeed;
			}
			else if (m_nOffsetY > 10 && down == wpNone && downleft <= wpTent)
			{
				m_nOffsetY += nSpeed;
			}
			else
			{
				Push<drLeft>();
			}
		}
		else
		{			
			if (m_nOffsetY < 0 && (upleft != wpNone || up == wpTent))
			{
				m_nOffsetY = min(m_nOffsetY + nSpeed, 0);
			}
			else if (m_nOffsetY > 0 && (downleft != wpNone || down == wpTent))
			{
				m_nOffsetY = max(m_nOffsetY - nSpeed, 0);
			}
			else if (m_nOffsetY < 0 && upleft == wpNone ||
				m_nOffsetY > 0 && downleft == wpNone ||
				m_nOffsetY == 0)
			{
				m_nOffsetX -= nSpeed;
			}
		}
	}

	AdjustCell();
}

void CRole::UpdateMoveRight(int nSpeed)
{
	WalkProperty right, downright, upright, down, up;

	right		= GetWalkProperty<drRight>();
	downright	= GetWalkProperty<drDownRight>();
	upright		= GetWalkProperty<drUpRight>();
	down		= GetWalkProperty<drDown>();
	up			= GetWalkProperty<drUp>();

	if (m_nOffsetX < 0)
	{
		m_nOffsetX += nSpeed;
		if (m_nOffsetX > 0 && right != wpNone)
		{
			m_nOffsetX = 0;
		}
	}
	else if (MAP[m_nCellY][m_nCellX].Blind != btTent)
	{
		if (right != wpNone)
		{
			if (m_nOffsetY < -10 && up == wpNone && upright <= wpTent)
			{
				m_nOffsetY -= nSpeed;
			}
			else if (m_nOffsetY > 10 && down == wpNone && downright <= wpTent)
			{
				m_nOffsetY += nSpeed;
			}
			else
			{
				Push<drRight>();
			}
		}
		else
		{			
			if (m_nOffsetY < 0 && (upright != wpNone || up == wpTent))
			{
				m_nOffsetY = min(m_nOffsetY + nSpeed, 0);
			}
			else if (m_nOffsetY > 0 && (downright != wpNone || down == wpTent))
			{
				m_nOffsetY = max(m_nOffsetY - nSpeed, 0);
			}
			else if (m_nOffsetY < 0 && upright == wpNone ||
				m_nOffsetY > 0 && downright == wpNone ||
				m_nOffsetY == 0)
			{
				m_nOffsetX += nSpeed;
			}
		}
	}

	AdjustCell();
}

void CRole::AdjustCell(void)
{
	if (m_nOffsetX < -CELL_SIZE/2)
	{
		m_nCellX--;
		m_nOffsetX += CELL_SIZE;
	}
	else if (m_nOffsetX > CELL_SIZE/2)
	{
		m_nCellX++;
		m_nOffsetX -= CELL_SIZE;
	}
	else if (m_nOffsetY < -CELL_SIZE/2)
	{
		m_nCellY--;
		m_nOffsetY += CELL_SIZE;
	}
	else if (m_nOffsetY > CELL_SIZE/2)
	{
		m_nCellY++;
		m_nOffsetY -= CELL_SIZE;		
	}
	else
	{
		return;
	}
	
	EnterNewCell();
}

void CRole::EnterNewCell(void)
{
	// 草叢擺動
	if (MAP[m_nCellY][m_nCellX].Blind >= btBush)
	{
		MAP[m_nCellY][m_nCellX].pBlindage->Waggle();
	}
}

void CRole::ChangeState(CRoleState *pState)
{
	SAFE_DELETE(m_pState);
	m_pState = pState;
}


//-----------------------------------------------------------------------------
// 狀態(tài)類實現(xiàn)
//-----------------------------------------------------------------------------
void CRoleState::CheckChange(void)
{
	Cell *pCell = &MAP[m_pRole->m_nCellY][m_pRole->m_nCellX];

	if (pCell->Type == itGift && !m_pRole->m_bFlying)
	{
		ASSERT(pCell->pItem != NULL);

		SOUND.Play(snGet);

		const Ability ab = ((CGift*)pCell->pItem)->GetAbility();
		SAFE_DELETE(pCell->pItem);
		pCell->Type = itNone;
		
		Ability &abRole = m_pRole->m_Ability;
		abRole.nPopoMax += ab.nPopoMax;
		abRole.nPopoPower = min(abRole.nPopoPower + ab.nPopoPower, MAX_POWER);
		abRole.nSpeed = min(abRole.nSpeed + ab.nSpeed, MAX_SPEED);
		abRole.bKick = abRole.bKick || ab.bKick;
		if (abRole.Vehicle == vtNone && ab.Vehicle != vtNone)
		{
			abRole.Vehicle = ab.Vehicle;
			m_pRole->m_nOffsetX = 0;
			m_pRole->m_nOffsetY = 0;
			if (ab.Vehicle == vtFastUFO || ab.Vehicle == vtSlowUFO)
			{
				m_pRole->m_bFlying = true;
			}
			ChangeState(new CRoleStateOnRide(m_pRole));
			return;
		}
	}

	if (pCell->Explosion.Status != 0)
	{
		if (m_pRole->m_Ability.Vehicle == vtNone)
		{

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜一区二区三区在线观看| 亚洲欧洲性图库| 麻豆国产欧美日韩综合精品二区| 欧美精品久久一区| 天天影视网天天综合色在线播放| 91精品国产色综合久久不卡蜜臀| 久久国产综合精品| 国产日韩欧美激情| 99久久婷婷国产综合精品| 亚洲高清一区二区三区| 337p亚洲精品色噜噜狠狠| 精品一区二区日韩| 国产精品麻豆一区二区| 欧美亚洲精品一区| 国产麻豆欧美日韩一区| 亚洲视频在线观看三级| 欧美美女一区二区三区| 国产一区二区导航在线播放| 国产精品国产三级国产aⅴ无密码| 在线看不卡av| 极品销魂美女一区二区三区| 中文字幕一区二区三区乱码在线| 欧美色倩网站大全免费| 国产精品一区二区三区四区| 亚洲精品视频在线观看网站| 日韩视频国产视频| 91美女片黄在线观看| 日韩黄色免费电影| 国产精品免费aⅴ片在线观看| 欧美三级日韩在线| 国产成人午夜99999| 亚洲成人动漫在线观看| 国产欧美精品一区二区色综合朱莉| 91传媒视频在线播放| 国产在线精品视频| 日韩精品亚洲专区| 综合久久综合久久| 精品国产乱码91久久久久久网站| 91精彩视频在线观看| 国产在线精品免费| 日韩电影在线免费| 亚洲欧美在线高清| 久久久国际精品| 欧美一级黄色录像| 在线视频一区二区免费| 豆国产96在线|亚洲| 日韩电影在线观看网站| 亚洲欧美日韩在线| 亚洲国产精品国自产拍av| 欧美一区二区性放荡片| 在线精品亚洲一区二区不卡| 成人毛片老司机大片| 久久国产麻豆精品| 日本欧美一区二区| 亚洲电影一级片| 亚洲人123区| 国产精品午夜免费| 久久精品日韩一区二区三区| 日韩亚洲欧美成人一区| 欧美日韩精品久久久| 91久久人澡人人添人人爽欧美| 国产91高潮流白浆在线麻豆| 久久er精品视频| 毛片av一区二区| 日韩电影在线观看网站| 午夜电影一区二区| 亚洲大片在线观看| 亚洲一区在线电影| 一区二区不卡在线播放 | 在线不卡免费av| 一道本成人在线| 97精品久久久久中文字幕 | 日韩免费高清视频| 91麻豆精品91久久久久久清纯| 91高清视频免费看| 在线一区二区三区四区五区| 一本色道**综合亚洲精品蜜桃冫| 91亚洲永久精品| 色婷婷久久久综合中文字幕| 色综合天天在线| 一本高清dvd不卡在线观看| 99re6这里只有精品视频在线观看| av在线不卡免费看| 91福利国产精品| 欧美日韩一二三| 欧美一区二区福利在线| 精品日产卡一卡二卡麻豆| 欧美大片在线观看一区二区| 久久综合色婷婷| 中文字幕电影一区| 综合久久综合久久| 一区二区三区欧美久久| 亚洲6080在线| 久久精品72免费观看| 国产一二三精品| 94-欧美-setu| 欧美日韩国产小视频| 91精品国产综合久久精品麻豆 | 欧美亚洲禁片免费| 在线不卡免费欧美| 久久一区二区视频| 中文字幕制服丝袜成人av | 欧美人狂配大交3d怪物一区| 777亚洲妇女| 精品电影一区二区三区| 国产亚洲一本大道中文在线| 中文字幕一区二区三区不卡在线| 亚洲国产日产av| 麻豆极品一区二区三区| 成人v精品蜜桃久久一区| 色婷婷综合久久| 日韩欧美国产电影| 国产精品毛片久久久久久久| 亚洲成av人片在线观看无码| 精品无人码麻豆乱码1区2区| 99精品热视频| 欧美成人乱码一区二区三区| 中文字幕永久在线不卡| 亚洲国产日韩一级| 国产福利一区二区三区视频在线| 一本久久综合亚洲鲁鲁五月天| 日韩视频免费直播| 亚洲精品视频一区二区| 国产一区二区三区观看| 欧美手机在线视频| 国产嫩草影院久久久久| 天堂va蜜桃一区二区三区漫画版| 成人动漫视频在线| 日韩欧美综合在线| 亚洲在线观看免费视频| 成人午夜精品在线| 日韩一区二区三区高清免费看看| 亚洲天堂av一区| 激情都市一区二区| 在线不卡a资源高清| 亚洲欧洲日韩在线| 国产成人免费视频精品含羞草妖精| 在线视频综合导航| 国产精品久久久一区麻豆最新章节| 日本不卡的三区四区五区| 日本高清成人免费播放| 国产精品天美传媒| 韩国三级在线一区| 欧美精品免费视频| 亚洲欧美激情小说另类| 懂色av一区二区夜夜嗨| 久久综合色播五月| 日韩电影免费一区| 欧美久久高跟鞋激| 亚洲第一电影网| 在线观看亚洲精品视频| 亚洲日本乱码在线观看| 成人精品国产福利| 久久久www免费人成精品| 久久丁香综合五月国产三级网站| 精品视频全国免费看| 亚洲综合在线视频| 日本高清不卡一区| 亚洲精品一二三| 91网页版在线| 日韩理论片中文av| 91免费观看在线| 日韩伦理电影网| 91免费国产在线| 一区二区三区在线看| 色综合久久精品| 亚洲一区二区三区四区不卡| 欧美在线观看视频在线| 亚洲综合免费观看高清在线观看| 一本久久精品一区二区| 一区二区三区不卡在线观看 | 国产精品色婷婷| 成人爱爱电影网址| 亚洲欧美一区二区三区极速播放 | 亚洲最新在线观看| 精品污污网站免费看| 日韩国产在线观看| 日韩精品专区在线| 国产在线播精品第三| 久久精品视频在线免费观看| 成人综合在线观看| 亚洲人成精品久久久久| 欧美中文一区二区三区| 偷拍一区二区三区四区| 欧美一区二区人人喊爽| 国产精品中文有码| 国产精品免费视频一区| 在线免费av一区| 免费在线观看一区| 国产欧美精品一区| 在线观看三级视频欧美| 日韩中文欧美在线| 亚洲精品在线三区| 99精品欧美一区二区蜜桃免费 | 8x福利精品第一导航| 免费成人av资源网| 国产精品乱人伦| 欧美日本视频在线| 国产成人午夜精品5599| 亚洲午夜精品久久久久久久久|