Subversion Repositories AndroidProjects

Rev

Rev 1292 | Rev 1323 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package com.gebauz.burutaru.game.entities.enemies;

import java.util.Vector;

import com.gebauz.burutaru.game.GameLogic;
import com.gebauz.burutaru.game.entities.Entity;

/** Implementation of an enemy type. */
public abstract class Enemy extends Entity
{

        // Constants========================================================================================

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


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

        // Methods==========================================================================================
       
        public Enemy(GameLogic gameLogic)
        {
                super(gameLogic);

        }

        @Override
        public void initAsync()
        {

        }

        @Override
        /** Call this after the derived class has set up everything (sprites, shapes, etc.)!. */
        public void init()
        {              
                for (int i = 0; i < mEnemies.size(); i++)
                {
                        mEnemies.get(i).init();
                }
        }

        @Override
        public void exit()
        {
                for (int i = 0; i < mEnemies.size(); i++)
                {
                        mEnemies.get(i).exit();
                }
        }

        @Override
        public void update(float deltaTime)
        {
                for (int i = 0; i < mEnemies.size(); i++)
                {
                        EnemyInstance e = mEnemies.get(i);
                       
                        // check for spawn event
                        float lt = getLevelTimer();
                       
                        if ((lt <= e.spawnAt) && ((lt + deltaTime) > e.spawnAt))
                                e.spawn();
                       
                        if (e.isAlive())
                                e.update(deltaTime);
                }
        }

        @Override
        public void render()
        {
                for (int i = 0; i < mEnemies.size(); i++)
                {
                        EnemyInstance e = mEnemies.get(i);
                       
                        if (e.isAlive())
                                e.render();
                }
        }
       
        public abstract EnemyInstance newInstance(String name);
       
        // Getters/Setters==================================================================================
       
        public final void addInstance(EnemyInstance instance)
        {
                mEnemies.add(instance);
        }
       
        public final EnemyInstance getInstance(int i)
        {
                return mEnemies.get(i);
        }
       
        public final int getNumInstances()
        {
                return mEnemies.size();
        }
       
}