BOOL Obj_ItemManager::Remove(ObjID_t ObjID) { __ENTER_FUNCTION Obj_Item* pObj_Item = GetObj_Item(ObjID); Assert( pObj_Item ) ; uint index = (uint)(pObj_Item->GetObj_ItemID()) ; Assert( index<m_Count ) ; Assert( m_Count > 0 ) ; Assert( m_pObj_ItemID[index]==ObjID ) ; m_pObj_ItemID[index] = m_pObj_ItemID[m_Count-1] ; pObj_Item->SetObj_ItemID( INVALID_ID ) ; Obj_Item* pNewObj_Item = GetObj_Item(m_pObj_ItemID[index]); Assert( pNewObj_Item ) ; pNewObj_Item->SetObj_ItemID( index ) ; m_Count -- ; Assert( m_Count>=0 ) ; return TRUE ; __LEAVE_FUNCTION return FALSE ; }
VOID Obj_ItemManager::RecycleObj_Item(ObjID_t ObjID) { __ENTER_FUNCTION Obj_Item* pObj_Item = GetObj_Item(ObjID) ; Assert( pObj_Item ) ; pObj_Item->SetActiveFlag( FALSE ); pObj_Item->CleanUp(); GetScene()->DeleteObject( pObj_Item ); __LEAVE_FUNCTION }
BOOL Obj_ItemManager::RemoveAllObj_Item() { INT iCount = m_Count; for(int i = 0;i<iCount;i++) { Obj_Item* pObj_Item = GetObj_Item(m_pObj_ItemID[0]); if(pObj_Item) { pObj_Item->Recycle(); } } return TRUE; }
return TRUE; __LEAVE_FUNCTION return FALSE; } Packet *Obj_Item::CreateNewObjPacket( VOID ) { __ENTER_FUNCTION if ( getScene() != NULL ) { _ITEM* pItem = GetObj_Item(); Assert(pItem); Assert(!pItem->IsNullType()); GCNewObjItem *pPacket = (GCNewObjItem*)(getScene()->m_nPacket_NewObj_Item); pPacket->CleanUp(); pPacket->setObjType(GetType()); pPacket->setObjID(GetID()); pPacket->setProtectTime(GetPickOwnerTime()); pPacket->setItemIndex(pItem->m_ItemIndex); pPacket->setItemCount(pItem->GetItemCount()); for (INT i=0; i<GetOwnerCount(); ++i) { pPacket->setOwner(GetOwner(i)); } pPacket->setWorldPos(*(getWorldPos())); pPacket->setDropObjID(GetDropObjID());