Skip to content

Commit

Permalink
Updated the tesla tower to be direction aware.
Browse files Browse the repository at this point in the history
  • Loading branch information
PetrusvdWalt authored and Blaarkies committed Jun 22, 2018
1 parent 5282399 commit dd01b24
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -86,14 +86,14 @@ private void fireTeslaTowers() throws Exception {
//Oldest building first.
playerTeslaTowers.sort(Comparator.comparing(Building::getConstructionTimeLeft));

for(Building possibleFiringTelsaTower : playerTeslaTowers ){
for(Building possibleFiringTeslaTower : playerTeslaTowers ){

TowerDefensePlayer currentPlayer = towerDefenseGameMap.getPlayer(possibleFiringTelsaTower.getPlayerType());
TowerDefensePlayer currentPlayer = towerDefenseGameMap.getPlayer(possibleFiringTeslaTower.getPlayerType());
int playerEnergy = currentPlayer.getEnergy();

if(playerEnergy >= possibleFiringTelsaTower.getEnergyPerShot()){
currentPlayer.removeEnergy(possibleFiringTelsaTower.getEnergyPerShot());
towerDefenseGameMap.fireTeslaTower(possibleFiringTelsaTower);
if(playerEnergy >= possibleFiringTeslaTower.getEnergyPerShot()){
currentPlayer.removeEnergy(possibleFiringTeslaTower.getEnergyPerShot());
towerDefenseGameMap.fireTeslaTower(possibleFiringTeslaTower);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,28 +150,37 @@ public void fireTeslaTower(Building teslaBuilding) {
missileOwner.takesHitByPlayer(teslaBuilding.getWeaponDamage(),missileOwner);
}

//Direction in the left hand as well.
for (int x = teslaBuilding.getX() + 1; x <= teslaBuilding.getMaxRange() + teslaBuilding.getX(); x++) {
final int nextTargetpoint = x;
Building targetToHit;
if(direction.equals(Direction.RIGHT)){
for (int x = teslaBuilding.getX() + 1; x <= teslaBuilding.getMaxRange() + teslaBuilding.getX(); x++) {
possiblyFireTeslaTower(x,possibleTargets,teslaBuilding,missileOwner);
}
}else{
for (int x = teslaBuilding.getX() - 1; x >= teslaBuilding.getX() - teslaBuilding.getMaxRange(); x--) {
possiblyFireTeslaTower(x,possibleTargets,teslaBuilding,missileOwner);
}
}
}

private void possiblyFireTeslaTower(int x, ArrayList<Building> possibleTargets, Building teslaBuilding, TowerDefensePlayer missileOwner){
final int nextTargetpoint = x;
Building targetToHit;

ArrayList<Building> targetsInX = new ArrayList<>();
ArrayList<Building> targetsInX = new ArrayList<>();

possibleTargets.stream()
.filter(target -> target.getX() == nextTargetpoint)
.forEach(target -> {
targetsInX.add(target);
});
possibleTargets.stream()
.filter(target -> target.getX() == nextTargetpoint)
.forEach(target -> {
targetsInX.add(target);
});

targetsInX.sort(Comparator.comparing(Building::getY));
targetsInX.sort(Comparator.comparing(Building::getY));

if (targetsInX.size() > 0) {
targetToHit = targetsInX.get(0);
if (targetsInX.size() > 0) {
targetToHit = targetsInX.get(0);

if (targetToHit != null) {
targetToHit.damageSelfDirectly(teslaBuilding.getWeaponDamage(), missileOwner);
possibleTargets.remove(targetToHit);
}
if (targetToHit != null) {
targetToHit.damageSelfDirectly(teslaBuilding.getWeaponDamage(), missileOwner);
possibleTargets.remove(targetToHit);
}
}
}
Expand Down

0 comments on commit dd01b24

Please sign in to comment.