Rev 942 |
Go to most recent revision |
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 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
); }
}