Exemplo n.º 1
0
 void update(double dt) {
     entityManagerRef->visitEntitiesWithTypeMask(componentMask, [&](Entity<EntityManagerTypes...> &entity){
         auto &aiComponent = entity.template getComponent<EnemyAIComponent>();
         
         if (aiComponent.playerId == -1) {
             int playerMask = 0;
             playerMask |= 1 << getTypeId<PlayerDetailsComponent>();
             playerMask |= 1 << getTypeId<TransformComponent>();
             auto entities = entityManagerRef->getEntityIDsWithTypeMask(playerMask);
             aiComponent.playerId = entities[0];
         }
         
         switch (aiComponent.aiType) {
             case EnemyAIComponent::AIType::DUMB:
                 updateDumbAI(dt, entity);
                 break;
             case EnemyAIComponent::AIType::FLEE:
                 updateDumbAI(dt, entity);
                 break;
             case EnemyAIComponent::AIType::FOLLOW_FIRE:
                 updateDumbAI(dt, entity);
                 break;
                 
             default:
                 break;
         }
     });
 }