SDK中的任务跟踪代码简单注释(续)

 EnvHudTasklist.cpp

 

// ========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============ //
//
//  Purpose: Implements visual effects entities: sprites, beams, bubbles, etc.
//
//  $NoKeywords: $
// ============================================================================= //

#include 
" cbase.h "
#include 
" engine/IEngineSound.h "
#include 
" baseentity.h "
#include 
" entityoutput.h "
#include 
" recipientfilter.h "

//  memdbgon must be the last include file in a .cpp file!!!
#include  " tier0/memdbgon.h "

#define  TASKLIST_MAX_TASKS 4
#define  TASKLIST_TASK_INACTIVE 0
#define  TASKLIST_TASK_COMPLETE 1
#define  TASKLIST_TASK_LOWPRIORITY 2
#define  TASKLIST_TASK_MEDPRIORITY 3
#define  TASKLIST_TASK_HIGHPRIORITY 4

// -----------------------------------------------------------------------------
//  Purpose: 
// -----------------------------------------------------------------------------
class  CEnvHudTasklist :  public  CPointEntity
{
public:
    DECLARE_CLASS( CEnvHudTasklist, CPointEntity );

    
void    Spawn( void );
    
void    Precache( void );

private:

    
void InputShowHudTasklist( inputdata_t &inputdata );
    
void InputHideHudTasklist( inputdata_t &inputdata );

    
void InputTask1Message( inputdata_t &inputdata );
    
void InputTask2Message( inputdata_t &inputdata );
    
void InputTask3Message( inputdata_t &inputdata );
    
void InputTask4Message( inputdata_t &inputdata );

    
void InputTask1Urgency( inputdata_t &inputdata );
    
void InputTask2Urgency( inputdata_t &inputdata );
    
void InputTask3Urgency( inputdata_t &inputdata );
    
void InputTask4Urgency( inputdata_t &inputdata );

    
void SendTaskData (int index);

    string_t m_iszTaskmsg[TASKLIST_MAX_TASKS];
    
int m_iUrgency[TASKLIST_MAX_TASKS]; // 0=complete, 1=low, 2=medium, 3=high

    DECLARE_DATADESC();
}
;

LINK_ENTITY_TO_CLASS( env_hudtasklist, CEnvHudTasklist );

BEGIN_DATADESC( CEnvHudTasklist )

    DEFINE_KEYFIELD( m_iszTaskmsg[
0 ], FIELD_STRING,  " task1message "  ),
    DEFINE_KEYFIELD( m_iUrgency[
0 ], FIELD_INTEGER,   " task1urgency "  ),

    DEFINE_KEYFIELD( m_iszTaskmsg[
1 ], FIELD_STRING,  " task2message "  ),
    DEFINE_KEYFIELD( m_iUrgency[
1 ], FIELD_INTEGER,   " task2urgency "  ),

    DEFINE_KEYFIELD( m_iszTaskmsg[
2 ], FIELD_STRING,  " task3message "  ),
    DEFINE_KEYFIELD( m_iUrgency[
2 ], FIELD_INTEGER,   " task3urgency " ),

    DEFINE_KEYFIELD( m_iszTaskmsg[
3 ], FIELD_STRING,  " task4message "  ),
    DEFINE_KEYFIELD( m_iUrgency[
3 ], FIELD_INTEGER,   " task4urgency "  ),

    
//  Show/hide entire task list
    DEFINE_INPUTFUNC( FIELD_VOID,  " ShowHudTasklist " , InputShowHudTasklist ),
    DEFINE_INPUTFUNC( FIELD_VOID, 
" HideHudTasklist " , InputHideHudTasklist ),

    
//  Set individual task list strings
    DEFINE_INPUTFUNC( FIELD_STRING,  " Task1Message " , InputTask1Message ),
    DEFINE_INPUTFUNC( FIELD_STRING, 
" Task2Message " , InputTask2Message ),
    DEFINE_INPUTFUNC( FIELD_STRING, 
" Task3Message " , InputTask3Message ),
    DEFINE_INPUTFUNC( FIELD_STRING, 
" Task4Message " , InputTask4Message ),

    
//  Set individual task urgency values 
    DEFINE_INPUTFUNC( FIELD_INTEGER,  " Task1Urgency " , InputTask1Urgency ),
    DEFINE_INPUTFUNC( FIELD_INTEGER, 
" Task2Urgency " , InputTask2Urgency ),
    DEFINE_INPUTFUNC( FIELD_INTEGER, 
" Task3Urgency " , InputTask3Urgency ),
    DEFINE_INPUTFUNC( FIELD_INTEGER, 
" Task4Urgency " , InputTask4Urgency ),

END_DATADESC()



// -----------------------------------------------------------------------------
//  Purpose: Spawn the new ent
// -----------------------------------------------------------------------------
void  CEnvHudTasklist::Spawn(  void  )
{
    Precache();
    SetSolid( SOLID_NONE );
    SetMoveType( MOVETYPE_NONE );
}



// -----------------------------------------------------------------------------
//  Purpose: 
// -----------------------------------------------------------------------------
void  CEnvHudTasklist::Precache(  void  )
{
}


// -----------------------------------------------------------------------------
//  Purpose: Input handler for showing the task list
// -----------------------------------------------------------------------------
void  CEnvHudTasklist::InputShowHudTasklist( inputdata_t  & inputdata )
{
    
for (int i=0; i<TASKLIST_MAX_TASKS; i++{
        SendTaskData (i);
    }

}


// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void  CEnvHudTasklist::InputHideHudTasklist( inputdata_t  & inputdata )
{
}


// -----------------------------------------------------------------------------
//  Send a task data message to the client.  This gets caught by the task HUD
//  display element and shown.
// -----------------------------------------------------------------------------
void  CEnvHudTasklist::SendTaskData ( int  index)
{
    CBaseEntity 
*pPlayer = NULL;

    pPlayer 
= UTIL_GetLocalPlayer();

    
if ( pPlayer )
    
{
        
if ( !pPlayer->IsNetClient() )
        
{
            
return;
        }


        CSingleUserRecipientFilter user( (CBasePlayer 
*)pPlayer );
        user.MakeReliable();

        UserMessageBegin( user, 
"TaskList" );
            WRITE_BYTE( index );
            WRITE_BYTE ( m_iUrgency[index] );
            WRITE_STRING( STRING (m_iszTaskmsg[index]) );
        MessageEnd();
        DevMsg (
2"Sent msg %d, %d, %s ", index, m_iUrgency[index], m_iszTaskmsg[index]);
    }

}


// -----------------------------------------------------------------------------
//  Purpose: Input handler for setting task 1 urgency
//  DEFINE_INPUTFUNC( FIELD_STRING, "Task1Urgency", InputTask1Urgency ),
// -----------------------------------------------------------------------------
void  CEnvHudTasklist::InputTask1Urgency ( inputdata_t  & inputdata )
{
    m_iUrgency[
0= inputdata.value.Int();
    SendTaskData (
0);
}


// -----------------------------------------------------------------------------
//  Purpose: Input handler for setting task 2 urgency
//  DEFINE_INPUTFUNC( FIELD_STRING, "Task2Urgency", InputTask2Urgency ),
// -----------------------------------------------------------------------------
void  CEnvHudTasklist::InputTask2Urgency ( inputdata_t  & inputdata )
{
    DevMsg (
2"Got req. to set task2 urgency to %d ", inputdata.value.Int());
    m_iUrgency[
1= inputdata.value.Int();
    SendTaskData (
1);
}


// -----------------------------------------------------------------------------
//  Purpose: Input handler for setting task 3 urgency
//  DEFINE_INPUTFUNC( FIELD_STRING, "Task3Urgency", InputTask3Urgency ),
// -----------------------------------------------------------------------------
void  CEnvHudTasklist::InputTask3Urgency ( inputdata_t  & inputdata )
{
    m_iUrgency[
2= inputdata.value.Int();
    SendTaskData (
2);
}


// -----------------------------------------------------------------------------
//  Purpose: Input handler for setting task 4 urgency
//  DEFINE_INPUTFUNC( FIELD_STRING, "Task4Urgency", InputTask4Urgency ),
// -----------------------------------------------------------------------------
void  CEnvHudTasklist::InputTask4Urgency ( inputdata_t  & inputdata )
{
    m_iUrgency[
3= inputdata.value.Int();
    SendTaskData (
3);
}


// -----------------------------------------------------------------------------
//  Purpose: Input handler for setting task 1 text
//  DEFINE_INPUTFUNC( FIELD_STRING, "TaskMessage1", InputTaskMessage1 ),
// -----------------------------------------------------------------------------
void  CEnvHudTasklist::InputTask1Message( inputdata_t  & inputdata )
{
    m_iszTaskmsg[
0= MAKE_STRING( inputdata.value.String() );
    SendTaskData (
0);
}

// -----------------------------------------------------------------------------
//  Purpose: Input handler for setting task 2 text
//  DEFINE_INPUTFUNC( FIELD_STRING, "TaskMessage2", InputTaskMessage2 ),
// -----------------------------------------------------------------------------
void  CEnvHudTasklist::InputTask2Message( inputdata_t  & inputdata )
{
    m_iszTaskmsg[
1= MAKE_STRING( inputdata.value.String() );
    SendTaskData (
1);
}

// -----------------------------------------------------------------------------
//  Purpose: Input handler for setting task 3 text
//  DEFINE_INPUTFUNC( FIELD_STRING, "TaskMessage3", InputTaskMessage3 ),
// -----------------------------------------------------------------------------
void  CEnvHudTasklist::InputTask3Message( inputdata_t  & inputdata )
{
    m_iszTaskmsg[
2= MAKE_STRING( inputdata.value.String() );
    SendTaskData (
2);
}

// -----------------------------------------------------------------------------
//  Purpose: Input handler for setting task 4 text
//  DEFINE_INPUTFUNC( FIELD_STRING, "TaskMessage4", InputTaskMessage4 ),
// -----------------------------------------------------------------------------
void  CEnvHudTasklist::InputTask4Message( inputdata_t  & inputdata )
{
    m_iszTaskmsg[
3= MAKE_STRING( inputdata.value.String() );
    SendTaskData (
3);
}


今天编译的时候才发现少了个文件…………
然后还报了个错…………
自己找出来了…………

hl2_usermessages.cpp里面还要注册一下消息~~差点被它害死…………

// ========= Copyright ?1996-2005, Valve Corporation, All rights reserved. ============ //
//
//  Purpose: 
//
// ============================================================================= //

#include 
" cbase.h "
#include 
" usermessages.h "
#include 
" shake.h "
#include 
" voice_gamemgr.h "

//  memdbgon must be the last include file in a .cpp file!!!
#include  " tier0/memdbgon.h "

void  RegisterUserMessages(  void  )
{
    usermessages
->Register( "Geiger"1 );
    
if ( !IsXbox() )
        usermessages
->Register( "Train"1 );
    usermessages
->Register( "HudText"-1 );
    usermessages
->Register( "SayText"-1 );
    usermessages
->Register( "TextMsg"-1 );
    usermessages
->Register( "HudMsg"-1 );
    usermessages
->Register( "ResetHUD"1);        // called every respawn
    usermessages->Register( "GameTitle"0 );
    usermessages
->Register( "ItemPickup"-1 );
    usermessages
->Register( "ShowMenu"-1 );
    usermessages
->Register( "Shake"13 );
    usermessages
->Register( "Fade"10 );
    usermessages
->Register( "VGUIMenu"-1 );    // Show VGUI menu
    usermessages->Register( "XBoxRumble"3 );    // Send a rumble to XBox controller
    usermessages->Register( "Battery"2 );
    usermessages
->Register( "Damage"18 );        // BUG: floats are sent for coords, no variable bitfields in hud & fixed size Msg
    usermessages->Register( "VoiceMask", VOICE_MAX_PLAYERS_DW*4 * 2 + 1 );
    usermessages
->Register( "RequestState"0 );
    usermessages
->Register( "CloseCaption", ( !IsXbox() ) ? 7 : -1 ); // Show a caption (by string id number)(duration in 10th of a second)
    usermessages->Register( "HintText"-1 );    // Displays hint text display
    usermessages->Register( "SquadMemberDied"0 );
    usermessages
->Register( "AmmoDenied"2 );
    usermessages
->Register( "CreditsMsg"1 );
    usermessages
->Register( "LogoTimeMsg"4 );
    usermessages
->Register( "TaskList",-1);
}

添加的代码在最后一行…………,-1表示~~数据大小未知
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值