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

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

?? wl_act1.c

?? wolf3d游戲源代碼!非常不錯! 與大家共享! 如果大家又相關資料還請多多上傳!
?? C
?? 第 1 頁 / 共 2 頁
字號:
		if (player->tilex == tilex)
		{
			if ( ((player->y+MINDIST) >>TILESHIFT) == tiley )
				return;
			if ( ((player->y-MINDIST) >>TILESHIFT) == tiley )
				return;
		}
		check = actorat[tilex][tiley-1];
		if (check && ((check->y+MINDIST) >> TILESHIFT) == tiley )
			return;
		check = actorat[tilex][tiley+1];
		if (check && ((check->y-MINDIST) >> TILESHIFT) == tiley )
			return;
	}


//
// play door sound if in a connected area
//
	area = *(mapsegs[0] + farmapylookup[doorobjlist[door].tiley]
			+doorobjlist[door].tilex)-AREATILE;
	if (areabyplayer[area])
	{
		PlaySoundLocTile(CLOSEDOORSND,doorobjlist[door].tilex,doorobjlist[door].tiley);	// JAB
	}

	doorobjlist[door].action = dr_closing;
//
// make the door space solid
//
	(unsigned)actorat[tilex][tiley]
		= door | 0x80;
}



/*
=====================
=
= OperateDoor
=
= The player wants to change the door's direction
=
=====================
*/

void OperateDoor (int door)
{
	int	lock;

	lock = doorobjlist[door].lock;
	if (lock >= dr_lock1 && lock <= dr_lock4)
	{
		if ( ! (gamestate.keys & (1 << (lock-dr_lock1) ) ) )
		{
			SD_PlaySound (NOWAYSND);		// locked
			return;
		}
	}

	switch (doorobjlist[door].action)
	{
	case dr_closed:
	case dr_closing:
		OpenDoor (door);
		break;
	case dr_open:
	case dr_opening:
		CloseDoor (door);
		break;
	}
}


//===========================================================================

/*
===============
=
= DoorOpen
=
= Close the door after three seconds
=
===============
*/

void DoorOpen (int door)
{
	if ( (doorobjlist[door].ticcount += tics) >= OPENTICS)
		CloseDoor (door);
}



/*
===============
=
= DoorOpening
=
===============
*/

void DoorOpening (int door)
{
	int		area1,area2;
	unsigned	far	*map;
	long	position;

	position = doorposition[door];
	if (!position)
	{
	//
	// door is just starting to open, so connect the areas
	//
		map = mapsegs[0] + farmapylookup[doorobjlist[door].tiley]
			+doorobjlist[door].tilex;

		if (doorobjlist[door].vertical)
		{
			area1 =	*(map+1);
			area2 =	*(map-1);
		}
		else
		{
			area1 =	*(map-mapwidth);
			area2 =	*(map+mapwidth);
		}
		area1 -= AREATILE;
		area2 -= AREATILE;
		areaconnect[area1][area2]++;
		areaconnect[area2][area1]++;
		ConnectAreas ();
		if (areabyplayer[area1])
		{
			PlaySoundLocTile(OPENDOORSND,doorobjlist[door].tilex,doorobjlist[door].tiley);	// JAB
		}
	}

//
// slide the door by an adaptive amount
//
	position += tics<<10;
	if (position >= 0xffff)
	{
	//
	// door is all the way open
	//
		position = 0xffff;
		doorobjlist[door].ticcount = 0;
		doorobjlist[door].action = dr_open;
		actorat[doorobjlist[door].tilex][doorobjlist[door].tiley] = 0;
	}

	doorposition[door] = position;
}


/*
===============
=
= DoorClosing
=
===============
*/

void DoorClosing (int door)
{
	int		area1,area2,move;
	unsigned	far	*map;
	long	position;
	int		tilex,tiley;

	tilex = doorobjlist[door].tilex;
	tiley = doorobjlist[door].tiley;

	if ( ((unsigned)actorat[tilex][tiley] != (door | 0x80))
	|| (player->tilex == tilex && player->tiley == tiley) )
	{			// something got inside the door
		OpenDoor (door);
		return;
	};

	position = doorposition[door];

//
// slide the door by an adaptive amount
//
	position -= tics<<10;
	if (position <= 0)
	{
	//
	// door is closed all the way, so disconnect the areas
	//
		position = 0;

		doorobjlist[door].action = dr_closed;

		map = mapsegs[0] + farmapylookup[doorobjlist[door].tiley]
			+doorobjlist[door].tilex;

		if (doorobjlist[door].vertical)
		{
			area1 =	*(map+1);
			area2 =	*(map-1);
		}
		else
		{
			area1 =	*(map-mapwidth);
			area2 =	*(map+mapwidth);
		}
		area1 -= AREATILE;
		area2 -= AREATILE;
		areaconnect[area1][area2]--;
		areaconnect[area2][area1]--;

		ConnectAreas ();
	}

	doorposition[door] = position;
}




/*
=====================
=
= MoveDoors
=
= Called from PlayLoop
=
=====================
*/

void MoveDoors (void)
{
	int		door;

	if (gamestate.victoryflag)		// don't move door during victory sequence
		return;

	for (door = 0 ; door < doornum ; door++)
		switch (doorobjlist[door].action)
		{
		case dr_open:
			DoorOpen (door);
			break;

		case dr_opening:
			DoorOpening(door);
			break;

		case dr_closing:
			DoorClosing(door);
			break;
		}
}


/*
=============================================================================

						PUSHABLE WALLS

=============================================================================
*/

unsigned	pwallstate;
unsigned	pwallpos;			// amount a pushable wall has been moved (0-63)
unsigned	pwallx,pwally;
int			pwalldir;

/*
===============
=
= PushWall
=
===============
*/

void PushWall (int checkx, int checky, int dir)
{
	int		oldtile;

	if (pwallstate)
	  return;


	oldtile = tilemap[checkx][checky];
	if (!oldtile)
		return;

	switch (dir)
	{
	case di_north:
		if (actorat[checkx][checky-1])
		{
			SD_PlaySound (NOWAYSND);
			return;
		}
		(unsigned)actorat[checkx][checky-1] =
		tilemap[checkx][checky-1] = oldtile;
		break;

	case di_east:
		if (actorat[checkx+1][checky])
		{
			SD_PlaySound (NOWAYSND);
			return;
		}
		(unsigned)actorat[checkx+1][checky] =
		tilemap[checkx+1][checky] = oldtile;
		break;

	case di_south:
		if (actorat[checkx][checky+1])
		{
			SD_PlaySound (NOWAYSND);
			return;
		}
		(unsigned)actorat[checkx][checky+1] =
		tilemap[checkx][checky+1] = oldtile;
		break;

	case di_west:
		if (actorat[checkx-1][checky])
		{
			SD_PlaySound (NOWAYSND);
			return;
		}
		(unsigned)actorat[checkx-1][checky] =
		tilemap[checkx-1][checky] = oldtile;
		break;
	}

	gamestate.secretcount++;
	pwallx = checkx;
	pwally = checky;
	pwalldir = dir;
	pwallstate = 1;
	pwallpos = 0;
	tilemap[pwallx][pwally] |= 0xc0;
	*(mapsegs[1]+farmapylookup[pwally]+pwallx) = 0;	// remove P tile info

	SD_PlaySound (PUSHWALLSND);
}



/*
=================
=
= MovePWalls
=
=================
*/

void MovePWalls (void)
{
	int		oldblock,oldtile;

	if (!pwallstate)
		return;

	oldblock = pwallstate/128;

	pwallstate += tics;

	if (pwallstate/128 != oldblock)
	{
	// block crossed into a new block
		oldtile = tilemap[pwallx][pwally] & 63;

		//
		// the tile can now be walked into
		//
		tilemap[pwallx][pwally] = 0;
		(unsigned)actorat[pwallx][pwally] = 0;
		*(mapsegs[0]+farmapylookup[pwally]+pwallx) = player->areanumber+AREATILE;

		//
		// see if it should be pushed farther
		//
		if (pwallstate>256)
		{
		//
		// the block has been pushed two tiles
		//
			pwallstate = 0;
			return;
		}
		else
		{
			switch (pwalldir)
			{
			case di_north:
				pwally--;
				if (actorat[pwallx][pwally-1])
				{
					pwallstate = 0;
					return;
				}
				(unsigned)actorat[pwallx][pwally-1] =
				tilemap[pwallx][pwally-1] = oldtile;
				break;

			case di_east:
				pwallx++;
				if (actorat[pwallx+1][pwally])
				{
					pwallstate = 0;
					return;
				}
				(unsigned)actorat[pwallx+1][pwally] =
				tilemap[pwallx+1][pwally] = oldtile;
				break;

			case di_south:
				pwally++;
				if (actorat[pwallx][pwally+1])
				{
					pwallstate = 0;
					return;
				}
				(unsigned)actorat[pwallx][pwally+1] =
				tilemap[pwallx][pwally+1] = oldtile;
				break;

			case di_west:
				pwallx--;
				if (actorat[pwallx-1][pwally])
				{
					pwallstate = 0;
					return;
				}
				(unsigned)actorat[pwallx-1][pwally] =
				tilemap[pwallx-1][pwally] = oldtile;
				break;
			}

			tilemap[pwallx][pwally] = oldtile | 0xc0;
		}
	}


	pwallpos = (pwallstate/2)&63;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲国产一区二区三区va| 在线观看av一区二区| 在线一区二区三区四区五区| 日韩一区二区影院| 国产精品视频在线看| 青青草97国产精品免费观看无弹窗版| 粗大黑人巨茎大战欧美成人| 91精品国产综合久久国产大片| 日韩一区有码在线| 丁香桃色午夜亚洲一区二区三区| 5858s免费视频成人| **欧美大码日韩| 国产激情精品久久久第一区二区| 欧美日韩一区二区三区免费看 | 欧美区一区二区三区| 国产日韩精品一区二区三区 | 欧美日韩卡一卡二| 国产精品久久久久久久久图文区| 国内精品国产三级国产a久久| 欧美日韩亚洲综合| 一区二区三区四区不卡在线 | 日韩黄色片在线观看| 91啦中文在线观看| 亚洲天堂福利av| 成人午夜碰碰视频| 久久天天做天天爱综合色| 视频一区欧美日韩| 久久免费视频一区| 国产精品私房写真福利视频| 九九热在线视频观看这里只有精品| 欧美在线不卡一区| 亚洲激情自拍偷拍| 一本久久a久久精品亚洲| 综合久久一区二区三区| 99久久免费视频.com| 综合电影一区二区三区 | 精品一区二区三区欧美| 日韩一区二区三区免费观看| 婷婷夜色潮精品综合在线| 欧美亚洲国产一区二区三区| 午夜不卡av在线| 91精品国产综合久久久久| 免费人成在线不卡| 日韩一区二区免费在线观看| 免费成人av资源网| 亚洲精品一线二线三线| 韩国女主播成人在线观看| 国产亚洲欧美一级| 成人福利视频在线| 一区二区成人在线视频 | 2019国产精品| 国产电影一区二区三区| 国产精品欧美精品| 在线精品视频小说1| 偷窥少妇高潮呻吟av久久免费| 5566中文字幕一区二区电影| 国产乱一区二区| 国产精品久久久久久久久免费桃花| 91香蕉视频污| 日韩va欧美va亚洲va久久| 精品美女一区二区| 99免费精品视频| 污片在线观看一区二区| 日韩三级电影网址| av电影天堂一区二区在线观看| 亚洲一区二区欧美日韩| 日韩精品一区二区三区在线观看 | 久久99深爱久久99精品| 国产精品三级电影| 91黄色免费网站| 久久电影网站中文字幕| 国产精品久久久久影院色老大| 91福利资源站| 国产一区二区三区黄视频| 亚洲欧美一区二区三区久本道91| 欧美精品乱人伦久久久久久| 国产成人亚洲综合色影视| 亚洲午夜在线观看视频在线| 欧美电影免费观看高清完整版在线观看 | 国产精品久99| 91麻豆精品久久久久蜜臀| 成人黄色在线网站| 日韩国产成人精品| 亚洲精品乱码久久久久| 欧美一区二区播放| 在线日韩一区二区| 国产白丝网站精品污在线入口| 亚洲一区二区三区中文字幕在线| 久久久高清一区二区三区| 欧美日韩亚洲综合| 99精品热视频| 处破女av一区二区| 开心九九激情九九欧美日韩精美视频电影| 国产精品福利一区二区三区| 日韩欧美一区在线| 欧美久久久久久蜜桃| 色视频一区二区| 不卡区在线中文字幕| 久草精品在线观看| 日韩高清不卡一区二区三区| 亚洲精品视频免费看| 国产欧美日韩综合| 久久久久综合网| 精品国产免费久久| 日韩欧美国产一区在线观看| 欧美性videosxxxxx| 91久久免费观看| 91麻豆swag| 91欧美一区二区| 91亚洲永久精品| 国产福利一区二区三区视频 | 91啪在线观看| 95精品视频在线| 99在线视频精品| 成+人+亚洲+综合天堂| av综合在线播放| 97aⅴ精品视频一二三区| 国产精品1区2区| 高潮精品一区videoshd| 国产精品亚洲一区二区三区在线| 国模娜娜一区二区三区| 国产真实乱偷精品视频免| 狠狠色丁香久久婷婷综| 国产成人在线看| 成人综合婷婷国产精品久久| 不卡在线观看av| 在线亚洲+欧美+日本专区| 欧美唯美清纯偷拍| 欧美精品 日韩| 日韩一级精品视频在线观看| 日韩欧美国产午夜精品| 欧美精品一区二区三区蜜桃| 欧美国产日韩亚洲一区| 91久久精品网| 成人国产精品视频| 91电影在线观看| 91精品一区二区三区久久久久久| 26uuu亚洲| 国产精品麻豆久久久| 亚洲免费色视频| 日产欧产美韩系列久久99| 裸体在线国模精品偷拍| 国产成人精品亚洲日本在线桃色| 成人av午夜影院| 欧美亚洲高清一区二区三区不卡| 欧美猛男gaygay网站| 亚洲精品一区二区三区香蕉| 中文字幕av一区二区三区 | 欧美tickling挠脚心丨vk| 久久奇米777| 玉米视频成人免费看| 日本亚洲天堂网| 大桥未久av一区二区三区中文| 欧美综合欧美视频| 精品美女一区二区三区| 日韩码欧中文字| 蜜桃在线一区二区三区| av激情亚洲男人天堂| 日韩欧美的一区二区| 中文字幕一区av| 蜜桃视频第一区免费观看| 成人动漫av在线| 91精品国产欧美一区二区18| 中文字幕在线不卡视频| 蜜桃视频在线一区| 91国偷自产一区二区使用方法| 久久久久九九视频| 日韩专区欧美专区| 99久久久国产精品| 久久久久久一二三区| 天天影视网天天综合色在线播放| 国产一区二区三区免费观看| 在线不卡免费欧美| 自拍偷在线精品自拍偷无码专区 | youjizz国产精品| 欧美一区二区三区播放老司机| 国产精品久久久久久久久果冻传媒 | 欧美日韩你懂的| 国产精品久久久久久久久果冻传媒| 久久精品久久综合| 欧美日韩一区中文字幕| 亚洲色图制服诱惑 | 五月天视频一区| 色综合久久六月婷婷中文字幕| 久久精品在线观看| 国产激情视频一区二区三区欧美| 美女一区二区三区在线观看| www一区二区| 日本vs亚洲vs韩国一区三区 | 高清在线不卡av| 欧美一卡在线观看| 日韩综合一区二区| 欧美视频一区二区三区四区| 亚洲女同一区二区| 99re6这里只有精品视频在线观看| 久久精品亚洲精品国产欧美kt∨| 久久电影网电视剧免费观看| 欧美videos大乳护士334| 日韩电影在线免费观看| 在线播放欧美女士性生活|