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
); }
}