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.
140 lines
3.4 KiB
140 lines
3.4 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: Base class for many flying NPCs |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#include "cbase.h" |
|
#include "ai_basenpc_flyer_new.h" |
|
#include "ai_route.h" |
|
#include "ai_navigator.h" |
|
|
|
// memdbgon must be the last include file in a .cpp file!!! |
|
#include "tier0/memdbgon.h" |
|
|
|
#define FLYER_ROUTE_REBUILD_TIME 3.0 // Time between route rebuilds |
|
|
|
|
|
// NOTE: Never instantiate ai_base_npc_flyer_new directly!! |
|
//IMPLEMENT_CUSTOM_AI( ai_base_npc_flyer_new, CAI_BaseNPCFlyerNew); |
|
|
|
|
|
//------------------------------------------------------------------------------ |
|
// Purpose : |
|
// Input : |
|
// Output : |
|
//------------------------------------------------------------------------------ |
|
CAI_BaseNPCFlyerNew::CAI_BaseNPCFlyerNew() |
|
{ |
|
} |
|
|
|
|
|
//------------------------------------------------------------------------------ |
|
// Used to set up a flyer |
|
//------------------------------------------------------------------------------ |
|
void CAI_BaseNPCFlyerNew::SpawnFlyer() |
|
{ |
|
SetNavType( NAV_FLY ); |
|
AddFlag( FL_FLY ); |
|
SetMoveType( MOVETYPE_STEP ); |
|
CapabilitiesAdd( bits_CAP_MOVE_FLY ); |
|
} |
|
|
|
|
|
/* |
|
void CAI_BaseNPCFlyerNew::InitCustomSchedules(void) |
|
{ |
|
INIT_CUSTOM_AI(CAI_BaseNPCFlyerNew); |
|
|
|
ADD_CUSTOM_CONDITION(CAI_BaseNPCFlyerNew, COND_FLYER_MOVE_BLOCKED); |
|
ADD_CUSTOM_CONDITION(CAI_BaseNPCFlyerNew, COND_FLYER_MOVE_IMPOSSIBLE); |
|
} |
|
*/ |
|
|
|
//------------------------------------------------------------------------------ |
|
// Should be called during Select Schedule (BLEAH!) |
|
//------------------------------------------------------------------------------ |
|
void CAI_BaseNPCFlyerNew::ClearFlyerConditions(void) |
|
{ |
|
// ClearCondition( COND_FLYER_MOVE_BLOCKED ); |
|
// ClearCondition( COND_FLYER_MOVE_IMPOSSIBLE ); |
|
} |
|
|
|
|
|
|
|
//------------------------------------------------------------------------------ |
|
// Purpose : |
|
// Input : |
|
// Output : |
|
//------------------------------------------------------------------------------ |
|
float CAI_BaseNPCFlyerNew::MinGroundDist(void) |
|
{ |
|
return 0; |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Sets the ground speed appropriately: |
|
//----------------------------------------------------------------------------- |
|
float CAI_BaseNPCFlyerNew::GetIdealSpeed( ) const |
|
{ |
|
return m_flSpeed; |
|
} |
|
|
|
|
|
//------------------------------------------------------------------------------ |
|
// Purpose : |
|
// Input : |
|
// Output : |
|
//------------------------------------------------------------------------------ |
|
void CAI_BaseNPCFlyerNew::StartTask( const Task_t *pTask ) |
|
{ |
|
switch (pTask->iTask) |
|
{ |
|
// Activity is just idle (have no run) |
|
case TASK_RUN_PATH: |
|
{ |
|
GetNavigator()->SetMovementActivity(ACT_IDLE); |
|
TaskComplete(); |
|
break; |
|
} |
|
|
|
// Don't check for run/walk activity |
|
case TASK_SCRIPT_RUN_TO_TARGET: |
|
case TASK_SCRIPT_WALK_TO_TARGET: |
|
{ |
|
if (GetTarget() == NULL) |
|
{ |
|
TaskFail(FAIL_NO_TARGET); |
|
} |
|
else |
|
{ |
|
if (!GetNavigator()->SetGoal( GOALTYPE_TARGETENT ) ) |
|
{ |
|
TaskFail(FAIL_NO_ROUTE); |
|
GetNavigator()->ClearGoal(); |
|
} |
|
} |
|
TaskComplete(); |
|
break; |
|
} |
|
|
|
default: |
|
{ |
|
BaseClass::StartTask(pTask); |
|
} |
|
break; |
|
} |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CAI_BaseNPCFlyerNew::RunTask( const Task_t *pTask ) |
|
{ |
|
BaseClass::RunTask(pTask); |
|
} |
|
|
|
|
|
|