This commit is contained in:
Jesper Lundin 2007-05-07 13:28:03 +00:00
parent 01639fd378
commit bdd9d6c746
8 changed files with 115 additions and 68 deletions

View file

@ -49,9 +49,6 @@ public class InGameState extends GameState{
player.addUnit(new Tank(0, 0, player));
player.addUnit(new Tank(1,0, player));
player.addUnit(new Tank(2,0, player));
player.addUnit(new Bomber(3, 0, player));
player.addUnit(new Bomber(6, 0, player));
player.addUnit(new Bomber(7, 0, player));
player.addUnit(new APU(4, 0, player));
player.addUnit(new APU(5, 0, player));
PlayerHandler.getInstance().addPlayer(player);
@ -59,9 +56,6 @@ public class InGameState extends GameState{
AiPlayer ai = new AiPlayer();
ai.addUnit(new Tank(1,39, ai));
ai.addUnit(new Tank(2,39, ai));
ai.addUnit(new Bomber(3, 39, ai));
ai.addUnit(new Bomber(6, 39, ai));
ai.addUnit(new Bomber(7, 39, ai));
ai.addUnit(new APU(4, 39, ai));
ai.addUnit(new APU(5, 39, ai));
PlayerHandler.getInstance().addPlayer(ai);

View file

@ -1,24 +1,42 @@
package ei.game.player;
import java.util.ArrayList;
import ei.game.scene.GameEntity;
import ei.game.scene.buildings.Building;
import ei.game.scene.buildings.CommandCenter;
import ei.game.scene.units.APU;
import ei.game.scene.units.Bomber;
import ei.game.scene.units.Tank;
/**
* The AiPlayer class.
* @author Jesper Lundin
*
*/
public class AiPlayer extends Player{
private CommandCenter cc;
private int timer;
private ArrayList<GameEntity> attackingUnits;
/**
* Constructor for the AiPlayer class. Creates a temporary
*
*/
public AiPlayer(){
super();
cc = new CommandCenter(30,30,this);
addUnit(cc);
attackingUnits = new ArrayList<GameEntity>();
}
@Override
public Building getCC() {
return cc;
}
/**
* Handles the actions for the computer controlled player.
*/
public void update() {
super.update();
if(getKredits() >= 800 && cc.getBuildQueueSize()==0) {
@ -33,25 +51,49 @@ public class AiPlayer extends Player{
cc.buildUnit(new Bomber(this));
}
}
if(unitCount()>=10) {
if((unitCount()>=10 || attackingUnits.size()>=2) && timer%100==0) {
for(int i=0; i < unitCount(); i++) {
if(!getUnit(i).isAttacking()){
getUnit(i).move(false, getUnit(i).getPos().getX()-2, getUnit(i).getPos().getY()-2);
if(!attackingUnits.contains(getUnit(i))) {
attackingUnits.add(getUnit(i));
if(!getUnit(i).isAttacking() && !getUnit(i).isMoving()){
attackingUnits.get(i).move(false, attackingUnits.get(i).getPos().getX()-2, attackingUnits.get(i).getPos().getY()-2);
}
}
}
}
}
else{
attackingUnits.clear();
}
timer++;
removeDead();
}
/**
* Removes the dead units from the temporary army.
*
*/
public void removeDead(){
for(int i=0; i<attackingUnits.size() ;i++){
if(attackingUnits.get(i).getLife() <= 0){
attackingUnits.remove(i);
}
}
}
@Override
/**
* Defeated if the command center is dead.
*/
public boolean defeated() {
if(cc.getLife() <= 0){
return true;
}
return false;
}
@Override
/**
* Game over man! Game over!
*/
public void endGame(int s) {
}

View file

@ -28,6 +28,8 @@ public abstract class GameEntity{
public abstract Vector2i getPos();
public abstract boolean isAttacking();
public abstract boolean isMoving();
/**

View file

@ -215,5 +215,8 @@ public abstract class Building extends GameEntity{
public boolean isAttacking() {
return false;
}
public boolean isMoving(){
return false;
}
}

View file

@ -172,6 +172,12 @@ public abstract class Unit extends GameEntity{
}
return true;
}
public boolean isMoving() {
if(path==null || path.isEmpty()) {
return false;
}
return true;
}
/**
* Moving a unit to the given pos
*

View file

@ -116,7 +116,7 @@ public abstract class Weapon {
if(vect.getY() < part.getLocation().getY()) {
part.getLocation().add(0f, -yVelocity, 0f);
}
if(Math.abs(part.getLocation().getX()-vect.getX()) < 10 && Math.abs(part.getLocation().getY()-vect.getY()) < 10) {
if(Math.abs(part.getLocation().getX()-vect.getX()) < 15 && Math.abs(part.getLocation().getY()-vect.getY()) < 15) {
part.regenerate = false;
if(!hit && !InGameState.getMap().isPosEmpty(target.getX(), target.getY())) {
InGameState.getMap().getPos(target.getX(), target.getY()).damaged(damage);