您的位置:首页 > 编程语言

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

2007-07-24 02:59 405 查看
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表示~~数据大小未知
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: