Added Speed Booster

This commit is contained in:
Mike Schwörer 2015-09-20 14:30:03 +02:00
parent 14ee843974
commit 6508d95fab
2 changed files with 51 additions and 7 deletions

View File

@ -121,6 +121,8 @@ public class Cannon extends Entity {
if (hit_team == team && health < 1) { if (hit_team == team && health < 1) {
addHealth(HEALTH_REGEN_PER_HIT, hit_team); addHealth(HEALTH_REGEN_PER_HIT, hit_team);
} else if (hit_team == team && health == 1) {
barrel.addBooster();
} else if (hit_team != team) { } else if (hit_team != team) {
addHealth(-HEALTH_REGEN_PER_HIT, hit_team); addHealth(-HEALTH_REGEN_PER_HIT, hit_team);
} }

View File

@ -14,10 +14,12 @@ import de.samdev.cannonshooter.ZLayers;
import de.samdev.cannonshooter.util.MathUtils; import de.samdev.cannonshooter.util.MathUtils;
public class CannonBarrel extends Entity { public class CannonBarrel extends Entity {
private static final float CHARGE_SPEED = 0.00066f; private static final float CHARGE_SPEED = 0.00078f;
private static final float UNCHARGE_SPEED = 0.001f; private static final float UNCHARGE_SPEED = 0.001f;
private static final float ROTATION_SPEED = 0.175f; private static final float ROTATION_SPEED = 0.175f;
private static final float RECOIL_PERC = 0.035f; private static final float RECOIL_PERC = 0.035f;
private static final int MAX_BOOSTER_COUNT = 8;
private static final float BOOST_PERCENTAGE = 0.5f;
private boolean dragging = false; private boolean dragging = false;
@ -30,10 +32,14 @@ public class CannonBarrel extends Entity {
private Cannon cannon; private Cannon cannon;
private float[] booster = new float[MAX_BOOSTER_COUNT];
public CannonBarrel(Cannon owner) { public CannonBarrel(Cannon owner) {
super(Textures.cannon_barrel[0], 4, 2); super(Textures.cannon_barrel[0], 4, 2);
cannon = owner; cannon = owner;
clearBooster();
setPosition(owner.getPositionX(), owner.getPositionY()); setPosition(owner.getPositionX(), owner.getPositionY());
setZLayer(ZLayers.LAYER_CANNON_BARREL); setZLayer(ZLayers.LAYER_CANNON_BARREL);
@ -50,11 +56,11 @@ public class CannonBarrel extends Entity {
@Override @Override
public void beforeUpdate(float delta) { public void beforeUpdate(float delta) {
if (dragging) updateDragging(); updateDragging();
updateRotation(delta); updateRotation(delta);
updateCharge(delta); updateCharge(delta);
updateBullet(); updateBullet();
updateBooster(delta);
} }
private void updateBullet() { private void updateBullet() {
@ -72,7 +78,7 @@ public class CannonBarrel extends Entity {
if (cannon.health == 0 || cannon.health == 1) { if (cannon.health == 0 || cannon.health == 1) {
if (loaded) if (loaded)
{ {
charge += CHARGE_SPEED * delta * cannon.team.speedMultiplier; charge += CHARGE_SPEED * getBoost() * delta * cannon.team.speedMultiplier;
if (charge > 1) { if (charge > 1) {
charge = 0; charge = 0;
@ -108,6 +114,8 @@ public class CannonBarrel extends Entity {
} }
private void updateDragging() { private void updateDragging() {
if (! dragging) return;
if (! Gdx.input.isTouched()) { if (! Gdx.input.isTouched()) {
dragging = false; dragging = false;
return; return;
@ -117,6 +125,12 @@ public class CannonBarrel extends Entity {
targetRotation = mouse.angle(); targetRotation = mouse.angle();
} }
private void updateBooster(float delta) {
for (int i = 0; i < MAX_BOOSTER_COUNT; i++) {
if (booster[i] > 0) booster[i] -= delta;
}
}
@Override @Override
public float getTextureRotation() { public float getTextureRotation() {
@ -132,6 +146,34 @@ public class CannonBarrel extends Entity {
bullet = null; bullet = null;
loaded = false; loaded = false;
clearBooster();
}
public void clearBooster() {
for (int i = 0; i < MAX_BOOSTER_COUNT; i++) {
booster[i] = -1;
}
}
public boolean addBooster() {
for (int i = 0; i < MAX_BOOSTER_COUNT; i++) {
if (booster[i] < 0) {
booster[i] = 1 / (CHARGE_SPEED * cannon.team.speedMultiplier); // So a single cannon can always hold up a 0.5x multiplier
return true;
}
}
return false;
}
public float getBoost() {
float boost = 1f;
for (int i = 0; i < MAX_BOOSTER_COUNT; i++) {
if (booster[i] > 0) boost += BOOST_PERCENTAGE;
}
return boost;
} }
@Override @Override