本文整理汇总了C++中NET_Packet::r_seek方法的典型用法代码示例。如果您正苦于以下问题:C++ NET_Packet::r_seek方法的具体用法?C++ NET_Packet::r_seek怎么用?C++ NET_Packet::r_seek使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类NET_Packet
的用法示例。
在下文中一共展示了NET_Packet::r_seek方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Process_save
void xrServer::Process_save(NET_Packet& P, ClientID sender)
{
xrClientData* CL = ID_to_client(sender);
if (CL) CL->net_Ready = TRUE;
R_ASSERT(CL->flags.bLocal);
// while has information
while (!P.r_eof())
{
// find entity
u16 ID;
u16 size;
P.r_u16 (ID);
P.r_u16 (size);
s32 _pos_start = P.r_tell ();
CSE_Abstract *E = ID_to_entity(ID);
if (E) {
E->net_Ready = TRUE;
E->load (P);
}
else
P.r_advance (size);
s32 _pos_end = P.r_tell ();
s32 _size = size;
if (_size != (_pos_end-_pos_start)) {
Msg ("! load/save mismatch, object: '%s'",E?E->name_replace():"unknown");
s32 _rollback = _pos_start+_size;
P.r_seek (_rollback);
}
}
}
示例2: net_Spawn
BOOL CPhysicObject::net_Spawn(CSE_Abstract* DC)
{
CSE_Abstract *e = (CSE_Abstract*)(DC);
CSE_ALifeObjectPhysic *po = smart_cast<CSE_ALifeObjectPhysic*>(e);
R_ASSERT (po);
m_type = EPOType(po->type);
m_mass = po->mass;
m_collision_hit_callback= NULL;
m_anim_blend = 0;
inherited::net_Spawn ( DC );
create_collision_model ( );
CPHSkeleton::Spawn(e);
setVisible(TRUE);
setEnabled(TRUE);
if (!PPhysicsShell()->isBreakable()&&!CScriptBinder::object()&&!CPHSkeleton::IsRemoving())
SheduleUnregister();
//if (PPhysicsShell()->Animated())
//{
// processing_activate();
//}
bones_snd_player = create_moving_bones_snd_player( *this );
if( bones_snd_player )
play_bones_sound();
m_just_after_spawn = true;
m_activated = false;
if (DC->s_flags.is(M_SPAWN_UPDATE)) {
NET_Packet temp;
temp.B.count = 0;
DC->UPDATE_Write (temp);
if (temp.B.count > 0)
{
temp.r_seek (0);
net_Import (temp);
}
}
//processing_activate();
#ifdef DEBUG
if(dbg_draw_doors)
{
DBG_OpenCashedDraw( );
Fvector closed, open;
get_door_vectors( closed, open );
DBG_ClosedCashedDraw( 50000000 );
}
#endif
return TRUE;
}
示例3:
void CLevel::cl_Process_Event (u16 dest, u16 type, NET_Packet& P)
{
// Msg ("--- event[%d] for [%d]",type,dest);
CObject* O = Objects.net_Find (dest);
if (0==O) {
#ifdef DEBUG
Msg("* WARNING: c_EVENT[%d] to [%d]: unknown dest",type,dest);
#endif // DEBUG
return;
}
CGameObject* GO = smart_cast<CGameObject*>(O);
if (!GO) {
Msg("! ERROR: c_EVENT[%d] : non-game-object",dest);
return;
}
if (type != GE_DESTROY_REJECT)
{
if (type == GE_DESTROY)
Game().OnDestroy(GO);
GO->OnEvent (P,type);
}
else { // handle GE_DESTROY_REJECT here
u32 pos = P.r_tell();
u16 id = P.r_u16();
P.r_seek (pos);
bool ok = true;
CObject *D = Objects.net_Find (id);
if (0==D) {
Msg ("! ERROR: c_EVENT[%d] : unknown dest",id);
ok = false;
}
CGameObject *GD = smart_cast<CGameObject*>(D);
if (!GD) {
Msg ("! ERROR: c_EVENT[%d] : non-game-object",id);
ok = false;
}
GO->OnEvent (P,GE_OWNERSHIP_REJECT);
if (ok)
{
Game().OnDestroy(GD);
GD->OnEvent (P,GE_DESTROY);
};
}
};
示例4:
void message_filter::check_new_data (NET_Packet & packet)
{
u32 tmp_old_pos = packet.r_tell();
msg_type_subtype_t packet_mtype;
packet_mtype.import (packet);
if (packet_mtype.msg_type == M_EVENT_PACK)
{
NET_Packet tmp_packet;
while (!packet.r_eof())
{
tmp_packet.B.count = packet.r_u8();
packet.r (tmp_packet.B.data, tmp_packet.B.count);
packet_mtype.import(tmp_packet);
R_ASSERT2(packet_mtype.msg_type != M_EVENT_PACK, "M_EVENT_PACK in M_EVENT_PACK");
dbg_print_msg (tmp_packet, packet_mtype);
filters_map_t::iterator tmp_iter = m_filters.find(packet_mtype);
if (tmp_iter != m_filters.end())
{
tmp_iter->second(packet_mtype.msg_type,
packet_mtype.msg_subtype,
tmp_packet);
}
}
} else {
dbg_print_msg (packet, packet_mtype);
filters_map_t::iterator tmp_iter = m_filters.find(packet_mtype);
if (tmp_iter != m_filters.end())
{
tmp_iter->second(packet_mtype.msg_type,
packet_mtype.msg_subtype,
packet);
}
}
packet.r_seek (tmp_old_pos);
}
示例5:
void CLevel::cl_Process_Event (u16 dest, u16 type, NET_Packet& P)
{
// Msg ("* event[%d] for [%d]",type,dest);
CObject* O = Objects.net_Find (dest);
if (0==O) {
#ifdef DEBUG
Msg("! WARNING: c_EVENT[%d] to [%d]: unknown dest",type,dest);
#endif // DEBUG
return;
}
CGameObject* GO = smart_cast<CGameObject*>(O);
if (!GO) {
#ifndef MASTER_GOLD
Msg("! ERROR: c_EVENT[%d] : non-game-object",dest);
#endif // #ifndef MASTER_GOLD
return;
}
if (type != GE_DESTROY_REJECT)
{
if (type == GE_DESTROY)
{
Game().OnDestroy(GO);
// if ( GO->H_Parent() )
// {
// = GameObject.cpp (210)
// Msg( "! ERROR (Level): GE_DESTROY arrived to object[%d][%s], that has parent[%d][%s], frame[%d]",
// GO->ID(), GO->cNameSect().c_str(),
// GO->H_Parent()->ID(), GO->H_Parent()->cName().c_str(), Device.dwFrame );
// }
}
GO->OnEvent (P,type);
}
else { // handle GE_DESTROY_REJECT here
u32 pos = P.r_tell();
u16 id = P.r_u16();
P.r_seek (pos);
bool ok = true;
CObject *D = Objects.net_Find (id);
if (0==D) {
#ifndef MASTER_GOLD
Msg ("! ERROR: c_EVENT[%d] : unknown dest",id);
#endif // #ifndef MASTER_GOLD
ok = false;
}
CGameObject *GD = smart_cast<CGameObject*>(D);
if (!GD) {
#ifndef MASTER_GOLD
Msg ("! ERROR: c_EVENT[%d] : non-game-object",id);
#endif // #ifndef MASTER_GOLD
ok = false;
}
GO->OnEvent (P,GE_OWNERSHIP_REJECT);
if (ok)
{
Game().OnDestroy(GD);
GD->OnEvent (P,GE_DESTROY);
};
}
};