Ejemplo n.º 1
0
// all interface of actions
ORESULT AI_Character::Obj_Move(const WORLD_POS* pTar)
{
    Obj_Character* pCharacter = GetCharacter();
    if (!pCharacter)
    {
        Assert(NULL && "AI_Character::MoveTo...pCharacter = NULL...");
        return OR_ERROR;
    }
    if (TRUE == pCharacter->IsLimitMove() )
    {
        return OR_LIMIT_MOVE;
    }
    if (pCharacter->IsDie())
    {
        return OR_DIE;
    }

    int numNode = 0;
    const WORLD_POS* pCur = pCharacter->getWorldPos();
    WORLD_POS posNode[MAX_CHAR_PATH_NODE_NUMBER];
    WORLD_POS posCur = *pCur;
    pCharacter->getScene()->GetMap()->VerifyPos( const_cast<WORLD_POS*>(pTar) );
    pCharacter->getScene()->GetMap()->GetPathFinder()->FindPath(&posCur,
                                const_cast<WORLD_POS*>(pTar), posNode, numNode, pCharacter->GetDriverLevel());    

    if( numNode == 0 )
        return OR_ERROR;

    return _state->Obj_Move(this, -1, numNode, posNode );
}