📄 p_tick.c
字号:
//**************************************************************************//**//** p_tick.c : Heretic 2 : Raven Software, Corp.//**//** $RCSfile: p_tick.c,v $//** $Revision: 1.5 $//** $Date: 95/10/08 21:53:00 $//** $Author: bgokey $//**//**************************************************************************// HEADER FILES ------------------------------------------------------------#include "h2def.h"#include "p_local.h"// MACROS ------------------------------------------------------------------// TYPES -------------------------------------------------------------------// EXTERNAL FUNCTION PROTOTYPES --------------------------------------------// PUBLIC FUNCTION PROTOTYPES ----------------------------------------------// PRIVATE FUNCTION PROTOTYPES ---------------------------------------------static void RunThinkers(void);// EXTERNAL DATA DECLARATIONS ----------------------------------------------// PUBLIC DATA DEFINITIONS -------------------------------------------------int leveltime;int TimerGame;thinker_t thinkercap; // The head and tail of the thinker list// PRIVATE DATA DEFINITIONS ------------------------------------------------// CODE --------------------------------------------------------------------//==========================================================================//// P_Ticker////==========================================================================void P_Ticker(void){ int i; if(paused) { return; } for(i = 0; i < MAXPLAYERS; i++) { if(playeringame[i]) { P_PlayerThink(&players[i]); } } if(TimerGame) { if(!--TimerGame) { G_Completed(P_TranslateMap(P_GetMapNextMap(gamemap)), 0); } } RunThinkers(); P_UpdateSpecials(); P_AnimateSurfaces(); leveltime++;}//==========================================================================//// RunThinkers////==========================================================================static void RunThinkers(void){ thinker_t *currentthinker; currentthinker = thinkercap.next; while(currentthinker != &thinkercap) { if(currentthinker->function == (think_t)-1) { // Time to remove it currentthinker->next->prev = currentthinker->prev; currentthinker->prev->next = currentthinker->next; Z_Free(currentthinker); } else if(currentthinker->function) { currentthinker->function(currentthinker); } currentthinker = currentthinker->next; }}//==========================================================================//// 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){ thinker->function = (think_t)-1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -