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

📄 p_telept.c

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 C
字号:
// Emacs style mode select   -*- C++ -*- //-----------------------------------------------------------------------------//// $Id: p_telept.c,v 1.2 2003/09/08 22:34:30 jasonk Exp $//// Copyright (C) 1993-1996 by id Software, Inc.//// This source is available for distribution and/or modification// only under the terms of the DOOM Source Code License as// published by id Software. All rights reserved.//// The source is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License// for more details.//// $Log: p_telept.c,v $// Revision 1.2  2003/09/08 22:34:30  jasonk// Updated files because this fucker won't build for no fucking good reason.//// Revision 1.1.1.1  2003/09/04 21:08:13  jasonk// Initial import//// Revision 1.1  2000/12/08 21:07:54  jeffw// nxdoom initial entry -- No nxdoom/Makefile so it won't build automatically////// DESCRIPTION://	Teleportation.////-----------------------------------------------------------------------------static const charrcsid[] = "$Id: p_telept.c,v 1.2 2003/09/08 22:34:30 jasonk Exp $";#include "doomdef.h"#include "s_sound.h"#include "p_local.h"// Data.#include "sounds.h"// State.#include "r_state.h"//// TELEPORTATION//intEV_Teleport( line_t*	line,  int		side,  mobj_t*	thing ){    int		i;    int		tag;    mobj_t*	m;    mobj_t*	fog;    unsigned	an;    thinker_t*	thinker;    sector_t*	sector;    fixed_t	oldx;    fixed_t	oldy;    fixed_t	oldz;    // don't teleport missiles    if (thing->flags & MF_MISSILE)	return 0;		    // Don't teleport if hit back of line,    //  so you can get out of teleporter.    if (side == 1)			return 0;	        tag = line->tag;    for (i = 0; i < numsectors; i++)    {	if (sectors[ i ].tag == tag )	{	    thinker = thinkercap.next;	    for (thinker = thinkercap.next;		 thinker != &thinkercap;		 thinker = thinker->next)	    {		// not a mobj		if (thinker->function.acp1 != (actionf_p1)P_MobjThinker)		    continue;			m = (mobj_t *)thinker;				// not a teleportman		if (m->type != MT_TELEPORTMAN )		    continue;				sector = m->subsector->sector;		// wrong sector		if (sector-sectors != i )		    continue;			oldx = thing->x;		oldy = thing->y;		oldz = thing->z;						if (!P_TeleportMove (thing, m->x, m->y))		    return 0;				thing->z = thing->floorz;  //fixme: not needed?		if (thing->player)		    thing->player->viewz = thing->z+thing->player->viewheight;						// spawn teleport fog at source and destination		fog = P_SpawnMobj (oldx, oldy, oldz, MT_TFOG);		S_StartSound (fog, sfx_telept);		an = m->angle >> ANGLETOFINESHIFT;		fog = P_SpawnMobj (m->x+20*finecosine[an], m->y+20*finesine[an]				   , thing->z, MT_TFOG);		// emit sound, where?		S_StartSound (fog, sfx_telept);				// don't move for a bit		if (thing->player)		    thing->reactiontime = 18;			thing->angle = m->angle;		thing->momx = thing->momy = thing->momz = 0;		return 1;	    }		}    }    return 0;}

⌨️ 快捷键说明

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