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表示~~数据大小未知
//========= 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表示~~数据大小未知
相关文章推荐
- SDK中的任务跟踪代码简单注释
- (C语言版)链表(一)——实现单向链表创建、插入、删除等简单操作(包含个人理解说明及注释,新手跟着写代码)
- [已封装] DIV拖动类 支持在FF下拖动,调用简单 主要代码都有注释 适合初学者学习
- 用opencv简单显示图像和视频(代码有注释)
- 简单返回顶部代码及注释说明
- 简单返回顶部代码及注释说明
- 通过代码XML注释与Sandcastle生成SDK文档(进阶篇)
- 目标跟踪之:blob_tracking 跟踪代码中文注释
- tensorflow笔记:流程,概念和简单代码注释
- tensorflow笔记:流程,概念和简单代码注释
- 简单返回顶部代码及注释说明
- OpenCV中blob_tracking 跟踪代码中文注释
- WIN32简单的窗体代码,带函数功能注释
- 安卓ListView一个简单代码的注释和探讨
- tensorflow笔记:流程,概念和简单代码注释
- tensorflow安装、流程,概念和简单代码注释
- 简单返回顶部代码及注释说明(转载自cnblogs)
- tensorflow:流程,概念和简单代码注释
- leetcode 722. Remove Comments 移除代码注释 + 简单状态机 + 有点烦但是需要细心
- css 简单 返回顶部 代码及注释说明