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); }; } };
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); }; } };