コード例 #1
0
ファイル: CreatureAISelector.cpp プロジェクト: Wisznu/mangos
    MovementGenerator* selectMovementGenerator(Creature *creature)
    {
        MovementGeneratorRegistry &mv_registry(MovementGeneratorRepository::Instance());
        MANGOS_ASSERT( creature->GetCreatureInfo() != NULL );
        MovementGeneratorCreator const * mv_factory = mv_registry.GetRegistryItem(
            creature->GetOwnerGuid().IsPlayer() ? FOLLOW_MOTION_TYPE : creature->GetDefaultMovementType());

        /* if( mv_factory == NULL  )
        {
            int best_val = -1;
            std::vector<std::string> l;
            mv_registry.GetRegisteredItems(l);
            for( std::vector<std::string>::iterator iter = l.begin(); iter != l.end(); ++iter)
            {
            const MovementGeneratorCreator *factory = mv_registry.GetRegistryItem((*iter).c_str());
            const SelectableMovement *p = dynamic_cast<const SelectableMovement *>(factory);
            ASSERT( p != NULL );
            int val = p->Permit(creature);
            if( val > best_val )
            {
                best_val = val;
                mv_factory = p;
            }
            }
        }*/

        return ( mv_factory == NULL ? NULL : mv_factory->Create(creature) );

    }
コード例 #2
0
ファイル: CreatureAISelector.cpp プロジェクト: 55887MX/CCORE
    MovementGenerator* selectMovementGenerator(Creature *creature)
    {
        MovementGeneratorRegistry& mv_registry(*MovementGeneratorRepository::instance());
        ASSERT(creature->GetCreatureInfo() != NULL);
        const MovementGeneratorCreator *mv_factory = mv_registry.GetRegistryItem(creature->GetDefaultMovementType());

        /* if (mv_factory == NULL)
         {
         int best_val = -1;
         StringVector l;
         mv_registry.GetRegisteredItems(l);
         for (StringVector::iterator iter = l.begin(); iter != l.end(); ++iter)
         {
         const MovementGeneratorCreator *factory = mv_registry.GetRegistryItem((*iter).c_str());
         const SelectableMovement *p = dynamic_cast<const SelectableMovement *>(factory);
         ASSERT(p != NULL);
         int val = p->Permit(creature);
         if (val > best_val)
         {
         best_val = val;
         mv_factory = p;
         }
         }
         }*/

        return (mv_factory == NULL ? NULL : mv_factory->Create(creature));
    }