コード例 #1
0
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();
		}
	}
}
コード例 #2
0
/* <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();
		}
	}
}