Skip to content

Commit

Permalink
Slowed down the fire rate of the towers
Browse files Browse the repository at this point in the history
  • Loading branch information
ThivanW committed Oct 12, 2023
1 parent b4c66ad commit cd36c4e
Show file tree
Hide file tree
Showing 7 changed files with 117 additions and 86 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public class FireTowerCombatTask extends DefaultTask implements PriorityTask {
private GameTime timeSource;
private long endTime;
private final RaycastHit hit = new RaycastHit();
private boolean shoot = true;

public enum STATE {
IDLE, PREP_ATTACK, ATTACK, DEATH
Expand Down Expand Up @@ -115,17 +116,21 @@ public void updateTowerState() {
}
}
case ATTACK -> {
if (!isTargetVisible()) {
owner.getEntity().getEvents().trigger(IDLE);
towerState = STATE.IDLE;
} else {
owner.getEntity().getEvents().trigger(ATTACK);
Entity newProjectile = ProjectileFactory.createEffectProjectile(PhysicsLayer.NPC,
new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f, 2f), ProjectileEffects.BURN, false);
newProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.25),
(float) (owner.getEntity().getPosition().y));
ServiceLocator.getEntityService().register(newProjectile);
if (shoot) {
if (!isTargetVisible()) {
owner.getEntity().getEvents().trigger(IDLE);
towerState = STATE.IDLE;
} else {
owner.getEntity().getEvents().trigger(ATTACK);
Entity newProjectile = ProjectileFactory.createEffectProjectile(PhysicsLayer.NPC,
new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f, 2f), ProjectileEffects.BURN, false);
newProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.25),
(float) (owner.getEntity().getPosition().y));
ServiceLocator.getEntityService().register(newProjectile);
}
}
shoot = !shoot;

}
case DEATH -> {
if (owner.getEntity().getComponent(AnimationRenderComponent.class).isFinished()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ public class FireworksTowerCombatTask extends DefaultTask implements PriorityTas
private GameTime timeSource;
private long endTime;
private final RaycastHit hit = new RaycastHit();
private boolean shoot = true;

public enum STATE {
IDLE, ATTACK, DEATH
Expand Down Expand Up @@ -104,17 +105,20 @@ public void updateTowerState() {
}
case ATTACK -> {
// check if fired last time if not fire if so hold
if (isTargetVisible()) {
owner.getEntity().getEvents().trigger(ATTACK);
Entity newProjectile = ProjectileFactory.createSplitFireWorksFireball(PhysicsLayer.NPC,
new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f, 2f), 3);
newProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.25),
(float) (owner.getEntity().getPosition().y));
ServiceLocator.getEntityService().register(newProjectile);
} else {
owner.getEntity().getEvents().trigger(IDLE);
towerState=STATE.IDLE;
if (shoot) {
if (isTargetVisible()) {
owner.getEntity().getEvents().trigger(ATTACK);
Entity newProjectile = ProjectileFactory.createSplitFireWorksFireball(PhysicsLayer.NPC,
new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f, 2f), 3);
newProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.25),
(float) (owner.getEntity().getPosition().y));
ServiceLocator.getEntityService().register(newProjectile);
} else {
owner.getEntity().getEvents().trigger(IDLE);
towerState=STATE.IDLE;
}
}
shoot = !shoot;
}
case DEATH -> {
if (owner.getEntity().getComponent(AnimationRenderComponent.class).isFinished()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ public class PierceTowerCombatTask extends DefaultTask implements PriorityTask {
private GameTime timeSource;
private long endTime;
private final RaycastHit hit = new RaycastHit();
private boolean shoot = true;

public enum STATE {
IDLE, ATTACK, DEATH
Expand Down Expand Up @@ -103,18 +104,22 @@ public void updateTowerState() {
}
}
case ATTACK -> {
if (!isTargetVisible()) {
owner.getEntity().getEvents().trigger(IDLE);
towerState = STATE.IDLE;
} else {
owner.getEntity().getEvents().trigger(ALERT);
owner.getEntity().getEvents().trigger(ATTACK);
Entity newProjectile = ProjectileFactory.createPierceFireBall(PhysicsLayer.NPC,
new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f, 2f));
newProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.25),
(float) (owner.getEntity().getPosition().y));
ServiceLocator.getEntityService().register(newProjectile);
if (shoot) {
if (!isTargetVisible()) {
owner.getEntity().getEvents().trigger(IDLE);
towerState = STATE.IDLE;
} else {
owner.getEntity().getEvents().trigger(ALERT);
owner.getEntity().getEvents().trigger(ATTACK);
Entity newProjectile = ProjectileFactory.createPierceFireBall(PhysicsLayer.NPC,
new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f, 2f));
newProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.25),
(float) (owner.getEntity().getPosition().y));
ServiceLocator.getEntityService().register(newProjectile);
}
}

shoot = !shoot;
}
case DEATH -> {
if (owner.getEntity().getComponent(AnimationRenderComponent.class).isFinished()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ public class RicochetTowerCombatTask extends DefaultTask implements PriorityTask
private GameTime timeSource;
private long endTime;
private final RaycastHit hit = new RaycastHit();
private boolean shoot = true;

//enums for the state triggers
public enum STATE {
Expand Down Expand Up @@ -104,18 +105,21 @@ public void updateTowerState() {
}
}
case ATTACK -> {
if (!isTargetVisible()) {
owner.getEntity().getEvents().trigger(IDLE);
towerState = STATE.IDLE;
} else {
owner.getEntity().getEvents().trigger(ATTACK);
Entity newProjectile = ProjectileFactory.createRicochetFireball(PhysicsLayer.NPC,
// NEED TO DO USER TESTING TO FIGURE OUT THE BOUNCE COUNT
new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f, 2f), 3);
newProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.25),
(float) (owner.getEntity().getPosition().y));
ServiceLocator.getEntityService().register(newProjectile);
if (shoot) {
if (!isTargetVisible()) {
owner.getEntity().getEvents().trigger(IDLE);
towerState = STATE.IDLE;
} else {
owner.getEntity().getEvents().trigger(ATTACK);
Entity newProjectile = ProjectileFactory.createRicochetFireball(PhysicsLayer.NPC,
// NEED TO DO USER TESTING TO FIGURE OUT THE BOUNCE COUNT
new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f, 2f), 3);
newProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.25),
(float) (owner.getEntity().getPosition().y));
ServiceLocator.getEntityService().register(newProjectile);
}
}
shoot = !shoot;
}
case DEATH -> {
if (owner.getEntity().getComponent(AnimationRenderComponent.class).isFinished()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,11 @@ public class StunTowerCombatTask extends DefaultTask implements PriorityTask {
private GameTime timeSource;
private long endTime;
private final RaycastHit hit = new RaycastHit();
private boolean shoot = true;

//enums for the state triggers
public enum STATE {
IDLE, ATTACK, DIE
IDLE, WAIT, ATTACK, DIE
}
public STATE towerState = STATE.IDLE;

Expand Down Expand Up @@ -111,20 +112,25 @@ public void updateTowerState() {
}
}
case ATTACK -> {
if (!isTargetVisible()) {
owner.getEntity().getEvents().trigger(IDLE);
towerState = STATE.IDLE;
} else {
owner.getEntity().getEvents().trigger(ATTACK);
if (shoot) {
if (!isTargetVisible()) {
owner.getEntity().getEvents().trigger(IDLE);
towerState = STATE.IDLE;
} else {
owner.getEntity().getEvents().trigger(ATTACK);
// Entity newProjectile = ProjectileFactory.createFireBall(PhysicsLayer.NPC,
// new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f, 2f));
Entity newProjectile = ProjectileFactory.createEffectProjectile(PhysicsLayer.NPC,
new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f, 2f),
ProjectileEffects.STUN, false);
newProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.25),
(float) (owner.getEntity().getPosition().y));
ServiceLocator.getEntityService().register(newProjectile);
Entity newProjectile = ProjectileFactory.createEffectProjectile(PhysicsLayer.NPC,
new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f, 2f),
ProjectileEffects.STUN, false);
newProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.25),
(float) (owner.getEntity().getPosition().y));
ServiceLocator.getEntityService().register(newProjectile);
owner.getEntity().getEvents().trigger(IDLE);
towerState = STATE.IDLE;
}
}
shoot = !shoot;
}
case DIE -> {
if (owner.getEntity().getComponent(AnimationRenderComponent.class).isFinished()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ public class TowerCombatTask extends DefaultTask implements PriorityTask {
private long endTime;
private final RaycastHit hit = new RaycastHit();
private static final Logger logger = LoggerFactory.getLogger(ForestGameArea.class);
private boolean shoot = true;

private enum STATE {
IDLE, DEPLOY, FIRING, STOW, DEATH
Expand Down Expand Up @@ -141,38 +142,41 @@ public void updateTowerState() {
}
}
case FIRING -> {
// targets gone - stop firing
if (!isTargetVisible()) {
if (shoot) {
// targets gone - stop firing
if (!isTargetVisible()) {

owner.getEntity().getEvents().trigger(STOW);
towerState = STATE.STOW;
} else {
owner.getEntity().getEvents().trigger(FIRING);
// this might be changed to an event which gets triggered everytime the tower enters the firing state
owner.getEntity().getEvents().trigger(STOW);
towerState = STATE.STOW;
} else {
owner.getEntity().getEvents().trigger(FIRING);
// this might be changed to an event which gets triggered everytime the tower enters the firing state

Entity newProjectile = ProjectileFactory.createFireBall(PhysicsLayer.NPC, new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f, 2f));
newProjectile.setScale(1.1f, 0.8f);
newProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.5), (float) (owner.getEntity().getPosition().y));
ServiceLocator.getEntityService().register(newProjectile);

Entity newProjectile = ProjectileFactory.createFireBall(PhysicsLayer.NPC, new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f,2f));
newProjectile.setScale(1.1f, 0.8f);
newProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.5), (float) (owner.getEntity().getPosition().y));
ServiceLocator.getEntityService().register(newProjectile);

// * TEMPRORARYYYYYYYY PLS DON'T DELETE THIS
// PIERCE FIREBALL
// Entity pierceFireball = ProjectileFactory.createPierceFireBall(PhysicsLayer.NPC, new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f,2f));
// pierceFireball.setPosition((float) (owner.getEntity().getPosition().x + 0), (float) (owner.getEntity().getPosition().y + 0.4));
// ServiceLocator.getEntityService().register(pierceFireball);
// * TEMPRORARYYYYYYYY PLS DON'T DELETE THIS
// PIERCE FIREBALL
// Entity pierceFireball = ProjectileFactory.createPierceFireBall(PhysicsLayer.NPC, new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f,2f));
// pierceFireball.setPosition((float) (owner.getEntity().getPosition().x + 0), (float) (owner.getEntity().getPosition().y + 0.4));
// ServiceLocator.getEntityService().register(pierceFireball);

// RICOCHET FIREBALL
// Entity ricochetProjectile = ProjectileFactory.createRicochetFireball(PhysicsLayer.NPC, new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f,2f), 0);
// RICOCHET FIREBALL
// Entity ricochetProjectile = ProjectileFactory.createRicochetFireball(PhysicsLayer.NPC, new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f,2f), 0);

// ricochetProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0), (float) (owner.getEntity().getPosition().y + 0.4));
// ServiceLocator.getEntityService().register(ricochetProjectile);
// ricochetProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0), (float) (owner.getEntity().getPosition().y + 0.4));
// ServiceLocator.getEntityService().register(ricochetProjectile);

// SPLIT FIREWORKS FIREBALLL
// Entity splitFireWorksProjectile = ProjectileFactory.createSplitFireWorksFireball(PhysicsLayer.NPC, new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f,2f), 16);
// SPLIT FIREWORKS FIREBALLL
// Entity splitFireWorksProjectile = ProjectileFactory.createSplitFireWorksFireball(PhysicsLayer.NPC, new Vector2(100, owner.getEntity().getPosition().y), new Vector2(2f,2f), 16);

// splitFireWorksProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.75), (float) (owner.getEntity().getPosition().y + 0.4));
// ServiceLocator.getEntityService().register(splitFireWorksProjectile);
// splitFireWorksProjectile.setPosition((float) (owner.getEntity().getPosition().x + 0.75), (float) (owner.getEntity().getPosition().y + 0.4));
// ServiceLocator.getEntityService().register(splitFireWorksProjectile);
}
}
shoot = !shoot;
}
case STOW -> {
// currently stowing
Expand Down
Loading

0 comments on commit cd36c4e

Please sign in to comment.