📄 p_tick.c
字号:
// Emacs style mode select -*- C++ -*- //-----------------------------------------------------------------------------//// $Id: p_tick.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_tick.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:// Archiving: SaveGame I/O.// Thinker, Ticker.////-----------------------------------------------------------------------------static const charrcsid[] = "$Id: p_tick.c,v 1.2 2003/09/08 22:34:30 jasonk Exp $";#include "z_zone.h"#include "p_local.h"#include "doomstat.h"int leveltime;//// THINKERS// All thinkers should be allocated by Z_Malloc// so they can be operated on uniformly.// The actual structures will vary in size,// but the first element must be thinker_t.//// Both the head and tail of the thinker list.thinker_t thinkercap;//// P_InitThinkers//void P_InitThinkers (void){ thinkercap.prev = thinkercap.next = &thinkercap;}//// P_AddThinker// Adds a new thinker at the end of the list.//void P_AddThinker (thinker_t* thinker){ thinkercap.prev->next = thinker; thinker->next = &thinkercap; thinker->prev = thinkercap.prev; thinkercap.prev = thinker;}//// P_RemoveThinker// Deallocation is lazy -- it will not actually be freed// until its thinking turn comes up.//void P_RemoveThinker (thinker_t* thinker){ // FIXME: NOP. thinker->function.acv = (actionf_v)(-1);}//// P_AllocateThinker// Allocates memory and adds a new thinker at the end of the list.//void P_AllocateThinker (thinker_t* thinker){}//// P_RunThinkers//void P_RunThinkers (void){ thinker_t* currentthinker; currentthinker = thinkercap.next; while (currentthinker != &thinkercap) { if ( currentthinker->function.acv == (actionf_v)(-1) ) { // time to remove it currentthinker->next->prev = currentthinker->prev; currentthinker->prev->next = currentthinker->next; Z_Free (currentthinker); } else { if (currentthinker->function.acp1) currentthinker->function.acp1 (currentthinker); } currentthinker = currentthinker->next; }}//// P_Ticker//void P_Ticker (void){ int i; // run the tic if (paused) return; // pause if in menu and at least one tic has been run if ( !netgame && menuactive && !demoplayback && players[consoleplayer].viewz != 1) { return; } for (i=0 ; i<MAXPLAYERS ; i++) if (playeringame[i]) P_PlayerThink (&players[i]); P_RunThinkers (); P_UpdateSpecials (); P_RespawnSpecials (); // for par times leveltime++; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -