void CLocalNav::Think(void) { EHANDLE hostage; static cvar_t *sv_stepsize = NULL; if (flNextCvarCheck <= gpGlobals->time) { if (sv_stepsize) { flNextCvarCheck = gpGlobals->time + 1; s_flStepSize = sv_stepsize->value; } else { sv_stepsize = CVAR_GET_POINTER("sv_stepsize"); flNextCvarCheck = gpGlobals->time + 1; s_flStepSize = s_flStepSize ? sv_stepsize->value : 18; } } HostagePrethink(); nodeval -= (gpGlobals->time - flLastThinkTime) * 250; flLastThinkTime = gpGlobals->time; if (nodeval < 0) nodeval = 0; else if (nodeval > 17) return; if (tot_inqueue) { hostage = NULL; hostage = queue[qptr]; if (hostage == NULL) { while (tot_inqueue > 0) { if (++qptr == MAX_HOSTAGES) qptr = 0; tot_inqueue--; if (!tot_inqueue) { hostage = NULL; break; } hostage = queue[qptr]; if (hostage) break; } } if (hostage) { CHostage *pHostage = GetClassPtr((CHostage *)hostage->pev); if (++qptr == MAX_HOSTAGES) qptr = 0; tot_inqueue--; pHostage->NavReady(); } } }
/* <487eeb> ../cstrike/dlls/hostage/hostage_localnav.cpp:851 */ void CLocalNav::Think() { EHANDLE hCallback; static cvar_t *sv_stepsize = NULL; if (gpGlobals->time >= flNextCvarCheck) { if (sv_stepsize != NULL) s_flStepSize = sv_stepsize->value; else { sv_stepsize = CVAR_GET_POINTER("sv_stepsize"); s_flStepSize = s_flStepSize ? sv_stepsize->value : HOSTAGE_STEPSIZE_DEFAULT; } flNextCvarCheck = gpGlobals->time + 1; } HostagePrethink(); float flElapsedTime = gpGlobals->time - flLastThinkTime; nodeval -= flElapsedTime * 250; flLastThinkTime = gpGlobals->time; if (nodeval < 0) nodeval = 0; else if (nodeval > 17) return; if (tot_inqueue) { hCallback = _queue[qptr]; if (!hCallback) { while (tot_inqueue > 0) { if (++qptr == MAX_HOSTAGES_NAV) qptr = 0; tot_inqueue--; if (!tot_inqueue) { hCallback = NULL; break; } hCallback = _queue[qptr]; if (hCallback) break; } } if (hCallback) { CHostage *pHostage = GetClassPtr((CHostage *)hCallback->pev); if (++qptr == MAX_HOSTAGES_NAV) qptr = 0; tot_inqueue--; pHostage->NavReady(); } } }