Subversion Repositories AndroidProjects

Rev

Rev 990 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.gebauz.burutaru.game.entities;

import java.util.Vector;

import com.gebauz.bauzoid.math.Matrix4;
import com.gebauz.bauzoid.math.Vector2;
import com.gebauz.bauzoid.math.collision.Shape;
import com.gebauz.burutaru.game.GameLogic;

public abstract class EnemyList<E extends Enemy> extends Entity
{
        // Constants========================================================================================

        // Embedded Types===================================================================================

        // Fields===========================================================================================
       
        protected Vector<E> mEnemies = new Vector<E>();

        // Methods==========================================================================================
       
        public EnemyList(GameLogic gameLogic)
        {
                super(gameLogic);
        }
       
        @Override
        public void update(float deltaTime)
        {
                int i = 0;
                while (i < mEnemies.size())
                {
                        Enemy enemy = mEnemies.get(i);
                        enemy.update(deltaTime);
                       
                        if (!enemy.isAlive())
                        {
                                mEnemies.remove(i);
                                continue;
                        }
                       
                        ++i;
                }
        }

        @Override
        public void render()
        {
                int i = 0;
                while (i < mEnemies.size())
                {
                        Enemy enemy = mEnemies.get(i);
                        if (enemy.isAlive())
                                enemy.render();
                        ++i;
                }
        }
       
        public boolean checkForHit(Shape shape, Matrix4 transform)
        {
                boolean hitFound = false;
               
                int i = 0;
                while (i < mEnemies.size())
                {
                        Enemy enemy = mEnemies.get(i);
                        if (enemy.checkHit(shape, transform))
                        {
                                hitFound = true;
                        }
                        ++i;
                }
               
                return hitFound;
        }
       
        public void fillCollidableList(Vector<ICollidable> list)
        {
                for (int i = 0; i < mEnemies.size(); i++)
                {
                        list.add(mEnemies.get(i));
                }
        }
       
        public void fillEnemyList(Vector<Enemy> list)
        {
                for (int i = 0; i < mEnemies.size(); i++)
                {
                        list.add(mEnemies.get(i));
                }
        }
       
        /*public boolean getNearestEnemy(float x, float y, Vector2 result, float previousDistanceSqr)
        {
                boolean found = false;
                float distanceSqr = previousDistanceSqr;
               
                for (int i = 0; i < mEnemies.size(); i++)
                {
                        Enemy enemy = mEnemies.get(i);
                        if (enemy.isAlive())
                        {
                                float diffX = enemy.getX() - x;
                                float diffY = enemy.getY() - y;
                                float currentDistanceSqr = diffX*diffX + diffY*diffY;
                               
                                if ((distanceSqr < 0) || (currentDistanceSqr < distanceSqr))
                                {
                                        found = true;
                                        distanceSqr = currentDistanceSqr;
                                       
                                        result.x = enemy.getX();
                                        result.y = enemy.getY();
                                }
                        }
                }
               
                return found;
        }*/

       
        // Getters/Setters==================================================================================
       
        public final int getNumEnemies() { return mEnemies.size(); }
        public final E getEnemy(int i) { return mEnemies.get(i); }

}