You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.2 KiB
47 lines
1.2 KiB
#include "bot_common.h" |
|
|
|
// Face the entity and "use" it |
|
// NOTE: This state assumes we are standing in range of the entity to be used, with no obstructions. |
|
|
|
void UseEntityState::OnEnter(CCSBot *me) |
|
{ |
|
; |
|
} |
|
|
|
void UseEntityState::OnUpdate(CCSBot *me) |
|
{ |
|
// in the very rare situation where two or more bots "used" a hostage at the same time, |
|
// one bot will fail and needs to time out of this state |
|
const float useTimeout = 5.0f; |
|
if (me->GetStateTimestamp() - gpGlobals->time > useTimeout) |
|
{ |
|
me->Idle(); |
|
return; |
|
} |
|
|
|
// look at the entity |
|
Vector pos = m_entity->pev->origin + Vector(0, 0, HumanHeight * 0.5f); |
|
me->SetLookAt("Use entity", &pos, PRIORITY_HIGH); |
|
|
|
// if we are looking at the entity, "use" it and exit |
|
// if (me->IsLookingAtPosition(&pos)) |
|
{ |
|
#if 0 |
|
if (TheCSBots()->GetScenario() == CCSBotManager::SCENARIO_RESCUE_HOSTAGES |
|
&& me->m_iTeam == CT |
|
&& me->GetTask() == CCSBot::COLLECT_HOSTAGES) |
|
{ |
|
// we are collecting a hostage, assume we were successful - the update check will correct us if we weren't |
|
me->IncreaseHostageEscortCount(); |
|
} |
|
#endif |
|
me->UseEnvironment(); |
|
me->Idle(); |
|
} |
|
} |
|
|
|
void UseEntityState::OnExit(CCSBot *me) |
|
{ |
|
me->ClearLookAt(); |
|
me->ResetStuckMonitor(); |
|
}
|
|
|