⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p_switch.c

📁 使用Doom引擎开发的著名游戏《毁灭巫师》的源代码。
💻 C
字号:
//**************************************************************************//**//** p_switch.c : Heretic 2 : Raven Software, Corp.//**//** $RCSfile: p_switch.c,v $//** $Revision: 1.8 $//** $Date: 95/09/05 13:58:59 $//** $Author: cjr $//**//**************************************************************************#include "h2def.h"#include "p_local.h"#include "soundst.h"//==================================================================////      CHANGE THE TEXTURE OF A WALL SWITCH TO ITS OPPOSITE////==================================================================switchlist_t alphSwitchList[] ={	{ "SW_1_UP", "SW_1_DN", SFX_SWITCH1 },	{ "SW_2_UP", "SW_2_DN", SFX_SWITCH1 },	{ "VALVE1", "VALVE2", SFX_VALVE_TURN },	{ "SW51_OFF", "SW51_ON", SFX_SWITCH2 },	{ "SW52_OFF", "SW52_ON", SFX_SWITCH2 },	{ "SW53_UP", "SW53_DN", SFX_ROPE_PULL },	{ "PUZZLE5", "PUZZLE9", SFX_SWITCH1 },	{ "PUZZLE6", "PUZZLE10", SFX_SWITCH1 },	{ "PUZZLE7", "PUZZLE11", SFX_SWITCH1 },	{ "PUZZLE8", "PUZZLE12", SFX_SWITCH1 },	{"\0", "\0", 0}};int switchlist[MAXSWITCHES * 2];int numswitches;button_t buttonlist[MAXBUTTONS];/*================= P_InitSwitchList== Only called at game initialization================*/void P_InitSwitchList(void){	int             i;	int             index;	for (index = 0, i = 0; i < MAXSWITCHES; i++)	{		if(!alphSwitchList[i].soundID)		{			numswitches = index/2;			switchlist[index] = -1;			break;		}		switchlist[index++] = R_TextureNumForName(alphSwitchList[i].name1);		switchlist[index++] = R_TextureNumForName(alphSwitchList[i].name2);	}}//==================================================================////      Start a button counting down till it turns off.////==================================================================void P_StartButton(line_t *line,bwhere_e w,int texture,int time){	int             i;	for (i = 0;i < MAXBUTTONS;i++)	{		if (!buttonlist[i].btimer)		{			buttonlist[i].line = line;			buttonlist[i].where = w;			buttonlist[i].btexture = texture;			buttonlist[i].btimer = time;			buttonlist[i].soundorg = (mobj_t *)&line->frontsector->soundorg;			return;		}	}	I_Error("P_StartButton: no button slots left!");}//==================================================================////      Function that changes wall texture.//      Tell it if switch is ok to use again (1=yes, it's a button).////==================================================================void P_ChangeSwitchTexture(line_t *line, int useAgain){	int     texTop;	int     texMid;	int     texBot;	int     i;	texTop = sides[line->sidenum[0]].toptexture;	texMid = sides[line->sidenum[0]].midtexture;	texBot = sides[line->sidenum[0]].bottomtexture;	for (i = 0; i < numswitches*2; i++)	{		if (switchlist[i] == texTop)		{			S_StartSound((mobj_t *)&line->frontsector->soundorg, 				alphSwitchList[i/2].soundID);			sides[line->sidenum[0]].toptexture = switchlist[i^1];			if(useAgain)			{				P_StartButton(line, SWTCH_TOP, switchlist[i], BUTTONTIME);			}			return;		}		else if (switchlist[i] == texMid)		{			S_StartSound((mobj_t *)&line->frontsector->soundorg,				alphSwitchList[i/2].soundID);			sides[line->sidenum[0]].midtexture = switchlist[i^1];			if(useAgain)			{				P_StartButton(line, SWTCH_MIDDLE, switchlist[i], BUTTONTIME);			}			return;		}		else if (switchlist[i] == texBot)		{			S_StartSound((mobj_t *)&line->frontsector->soundorg,				alphSwitchList[i/2].soundID);			sides[line->sidenum[0]].bottomtexture = switchlist[i^1];			if(useAgain)			{				P_StartButton(line, SWTCH_BOTTOM, switchlist[i], BUTTONTIME);			}			return;		}	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -