public void tick(Enemy enemy) {
        super.tick(enemy);
        attackData.resetEnemiesTowerHasShoot(); // reset enemies it has shot this frame.
        if (attackData.canShootAtThisFrame()) {

            if (enemy.isActive() && enemy.isAlive()) { // can only handle active and alive enemies
                if (canShoot() && isInRange(enemy) && isCorrectTarget(enemy)) {
                    shoot(enemy);

                    if (enemy.isAlive()) { // ie enemy still is alive
                        tower.addToCurrentTargets(enemy);
                        tower.addToCurrentPlaceablesInRangeOfThisTower(enemy);
                    } else {
                        tower.removeFromCurrentTargets(enemy);
                    }
                }
            }
        }
    }