Ejemplo n.º 1
0
BOOL CharacterManager::DelCharacter( ObjID_t ObjID )
{
__ENTER_FUNCTION

    Obj_Character* pCharacter = (Obj_Character*)(GetScene()->GetObjManager()->GetObj(ObjID)) ;
    Assert( pCharacter ) ;
    
    UINT index = (UINT)(pCharacter->GetCharacterID()) ;
    Assert( index<m_Count ) ;

    Assert( m_Count > 0 ) ;
    Assert( m_pObjIDs[index]==ObjID ) ;

    m_pObjIDs[index] = m_pObjIDs[m_Count-1] ;
    pCharacter->SetCharacterID( INVALID_ID ) ;

    Obj_Character* pNewCharacter = (Obj_Character*)(GetScene()->GetObjManager()->GetObj(m_pObjIDs[index])) ;
    Assert( pNewCharacter ) ;

    pNewCharacter->SetCharacterID( index ) ;

    m_Count -- ;
    Assert( m_Count>=0 ) ;


    return TRUE ;

__LEAVE_FUNCTION

    return FALSE ;
}