public void onTick() {
		int previousDistance = -1;
		int previousI = -1;
		
		for (int i = 0; i < Screen.enemyList.size(); i++) {
			if (new Ellipse2D.Double((x * Frame.sizeMultiplier) + (Constants.tileSize / 2) - (Constants.towerDiameters[this.towerID] / 2), (y * Frame.sizeMultiplier) + (Constants.tileSize / 2) - (Constants.towerDiameters[this.towerID] / 2), Constants.towerDiameters[towerID], Constants.towerDiameters[towerID]).intersects(new Rectangle2D.Double((Screen.enemyList.get(i).x * Frame.sizeMultiplier), (Screen.enemyList.get(i).y * Frame.sizeMultiplier), Constants.tileSize, Constants.tileSize))) {
				if (previousDistance < Screen.enemyList.get(i).distanceFromStart) {
					previousDistance = Screen.enemyList.get(i).distanceFromStart;
					previousI = i;
				}
			}
		}
		
		if (previousI >= 0) {
			direction = (int) Math.round(Math.toDegrees(Math.atan2(Screen.enemyList.get(previousI).y - y, Screen.enemyList.get(previousI).x - x)));

			if (firingCooldown <= 0) {
				Screen.projectileList.add(new Projectile(towerID, direction, ((x * Frame.sizeMultiplier) - (Constants.projectileSize / 2) + (Constants.tileSize / 2) + (Math.cos(Math.toRadians(direction)) * (Constants.towerBarrelLengths[towerID] - Constants.projectileSize))) / Frame.sizeMultiplier, ((y * Frame.sizeMultiplier) - (Constants.projectileSize / 2) + (Constants.tileSize / 2) + (Math.sin(Math.toRadians(direction)) * (Constants.towerBarrelLengths[towerID] - Constants.projectileSize))) / Frame.sizeMultiplier));
				firingCooldown = Constants.towerCooldown[towerID];
			}
		}
		
		while (direction < 0 || direction >= 360) {
			if (direction < 0) {
				direction += 360;
			} else {
				direction -= 360;
			}
		}
		
		firingCooldown--;
	}