#include "g_local.h"Go to the source code of this file.
Data Structures | |
| struct | gtimer_s |
Defines | |
| #define | MAX_GTIMERS 16384 |
Typedefs | |
| typedef gtimer_s | gtimer_t |
Functions | |
| void | TIMER_Clear (void) |
| void | TIMER_Clear2 (gentity_t *ent) |
| gtimer_t * | TIMER_GetNew (int num, const char *identifier) |
| gtimer_t * | TIMER_GetExisting (int num, const char *identifier) |
| void | TIMER_Set (gentity_t *ent, const char *identifier, int duration) |
| int | TIMER_Get (gentity_t *ent, const char *identifier) |
| qboolean | TIMER_Done (gentity_t *ent, const char *identifier) |
| void | TIMER_RemoveHelper (int num, gtimer_t *timer) |
| qboolean | TIMER_Done2 (gentity_t *ent, const char *identifier, qboolean remove) |
| qboolean | TIMER_Exists (gentity_t *ent, const char *identifier) |
| void | TIMER_Remove (gentity_t *ent, const char *identifier) |
| qboolean | TIMER_Start (gentity_t *self, const char *identifier, int duration) |
Variables | |
| gtimer_t | g_timerPool [MAX_GTIMERS] |
| gtimer_t * | g_timers [MAX_GENTITIES] |
| gtimer_t * | g_timerFreeList |
|
|
Definition at line 8 of file g_timer.c. Referenced by TIMER_Clear(). |
|
|
Referenced by TIMER_Clear2(), TIMER_Done(), TIMER_Done2(), TIMER_Exists(), TIMER_Get(), TIMER_GetExisting(), TIMER_GetNew(), TIMER_Remove(), TIMER_RemoveHelper(), and TIMER_Set(). |
|
|
Definition at line 27 of file g_timer.c. References g_timerFreeList, g_timerPool, g_timers, MAX_GENTITIES, MAX_GTIMERS, gtimer_s::next, and NULL. Referenced by G_InitGame().
00028 {
00029 int i;
00030 for (i = 0; i < MAX_GENTITIES; i++)
00031 {
00032 g_timers[i] = NULL;
00033 }
00034
00035 for (i = 0; i < MAX_GTIMERS - 1; i++)
00036 {
00037 g_timerPool[i].next = &g_timerPool[i+1];
00038 }
00039 g_timerPool[MAX_GTIMERS-1].next = NULL;
00040 g_timerFreeList = &g_timerPool[0];
00041 }
|
|
|
Definition at line 49 of file g_timer.c. References g_timerFreeList, g_timers, gentity_t, gtimer_t, MAX_GENTITIES, gtimer_s::next, NULL, entityState_s::number, and gentity_s::s. Referenced by player_die().
00050 {
00051 // rudimentary safety checks, might be other things to check?
00052 if ( ent && ent->s.number > 0 && ent->s.number < MAX_GENTITIES )
00053 {
00054 gtimer_t *p = g_timers[ent->s.number];
00055
00056 // No timers at all -> do nothing
00057 if (!p)
00058 {
00059 return;
00060 }
00061
00062 // Find the end of this ents timer list
00063 while (p->next)
00064 {
00065 p = p->next;
00066 }
00067
00068 // Splice the lists
00069 p->next = g_timerFreeList;
00070 g_timerFreeList = g_timers[ent->s.number];
00071 g_timers[ent->s.number] = NULL;
00072 return;
00073 }
00074 }
|
|
||||||||||||
|
||||||||||||||||
|
Definition at line 223 of file g_timer.c. References gentity_t, gtimer_t, level, entityState_s::number, qboolean, qfalse, gentity_s::s, level_locals_t::time, gtimer_s::time, TIMER_GetExisting(), and TIMER_RemoveHelper(). Referenced by Howler_Attack(), Howler_Combat(), MineMonster_Attack(), MineMonster_Combat(), NPC_BSRancor_Default(), Rancor_Attack(), Rancor_Combat(), Wampa_Attack(), and Wampa_Combat().
00224 {
00225 gtimer_t *timer = TIMER_GetExisting(ent->s.number, identifier);
00226 qboolean res;
00227
00228 if (!timer)
00229 {
00230 return qfalse;
00231 }
00232
00233 res = (timer->time < level.time);
00234
00235 if (res && remove)
00236 {
00237 // Put it back on the free list
00238 TIMER_RemoveHelper(ent->s.number, timer);
00239 }
00240
00241 return res;
00242 }
|
|
||||||||||||
|
Definition at line 249 of file g_timer.c. References gentity_t, gtimer_t, entityState_s::number, qboolean, qfalse, qtrue, gentity_s::s, and TIMER_GetExisting(). Referenced by Howler_Attack(), MineMonster_Attack(), NPC_AimAdjust(), Rancor_Attack(), and Wampa_Attack().
|
|
||||||||||||
|
Definition at line 147 of file g_timer.c. References gentity_t, gtimer_t, entityState_s::number, gentity_s::s, gtimer_s::time, and TIMER_GetExisting(). Referenced by NPC_BSSniper_Attack(), NPC_CheckEnemyStealth(), ST_ApproachEnemy(), ST_HuntEnemy(), ST_ResolveBlockedShot(), ST_TrackEnemy(), and ST_TransferTimers().
00148 {
00149 gtimer_t *timer = TIMER_GetExisting(ent->s.number, identifier);
00150
00151 if (!timer)
00152 {
00153 return -1;
00154 }
00155
00156 return timer->time;
00157 }
|
|
||||||||||||
|
Definition at line 106 of file g_timer.c. References g_timers, gtimer_t, gtimer_s::name, gtimer_s::next, NULL, and Q_stricmp(). Referenced by TIMER_Done(), TIMER_Done2(), TIMER_Exists(), TIMER_Get(), and TIMER_Remove().
|
|
||||||||||||
|
Definition at line 79 of file g_timer.c. References g_timerFreeList, g_timers, gtimer_t, gtimer_s::name, gtimer_s::next, NULL, and Q_stricmp(). Referenced by TIMER_Set().
00080 {
00081 gtimer_t *p = g_timers[num];
00082
00083 // Search for an existing timer with this name
00084 while (p)
00085 {
00086 if (!Q_stricmp(p->name, identifier))
00087 { // Found it
00088 return p;
00089 }
00090
00091 p = p->next;
00092 }
00093
00094 // No existing timer with this name was found, so grab one from the free list
00095 if (!g_timerFreeList)
00096 return NULL;
00097
00098 p = g_timerFreeList;
00099 g_timerFreeList = g_timerFreeList->next;
00100 p->next = g_timers[num];
00101 g_timers[num] = p;
00102 return p;
00103 }
|
|
||||||||||||
|
Definition at line 267 of file g_timer.c. References gentity_t, gtimer_t, entityState_s::number, gentity_s::s, TIMER_GetExisting(), and TIMER_RemoveHelper(). Referenced by NPC_BSRancor_Default(), NPC_BSWampa_Default(), NPC_Howler_Pain(), NPC_MineMonster_Pain(), NPC_Rancor_Pain(), NPC_Wampa_Pain(), and Rancor_Swing().
00268 {
00269 gtimer_t *timer = TIMER_GetExisting(ent->s.number, identifier);
00270
00271 if (!timer)
00272 {
00273 return;
00274 }
00275
00276 // Put it back on the free list
00277 TIMER_RemoveHelper(ent->s.number, timer);
00278 }
|
|
||||||||||||
|
Definition at line 187 of file g_timer.c. References g_timerFreeList, g_timers, gtimer_t, and gtimer_s::next. Referenced by TIMER_Done2(), and TIMER_Remove().
00188 {
00189 gtimer_t *p = g_timers[num];
00190
00191 // Special case: first timer in list
00192 if (p == timer)
00193 {
00194 g_timers[num] = g_timers[num]->next;
00195 p->next = g_timerFreeList;
00196 g_timerFreeList = p;
00197 return;
00198 }
00199
00200 // Find the predecessor
00201 while (p->next != timer)
00202 {
00203 p = p->next;
00204 }
00205
00206 // Rewire
00207 p->next = p->next->next;
00208 timer->next = g_timerFreeList;
00209 g_timerFreeList = timer;
00210 return;
00211 }
|
|
||||||||||||||||
|
||||||||||||||||
|
Definition at line 286 of file g_timer.c. References gentity_t, qboolean, qfalse, qtrue, TIMER_Done(), and TIMER_Set(). Referenced by Jedi_SaberBlockGo().
00287 {
00288 if ( TIMER_Done( self, identifier ) )
00289 {
00290 TIMER_Set( self, identifier, duration );
00291 return qtrue;
00292 }
00293 return qfalse;
00294 }
|
|
|
Definition at line 19 of file g_timer.c. Referenced by TIMER_Clear(), TIMER_Clear2(), TIMER_GetNew(), and TIMER_RemoveHelper(). |
|
|
Definition at line 17 of file g_timer.c. Referenced by TIMER_Clear(). |
|
|
Definition at line 18 of file g_timer.c. Referenced by TIMER_Clear(), TIMER_Clear2(), TIMER_GetExisting(), TIMER_GetNew(), and TIMER_RemoveHelper(). |