@Override
    public void tick(float dt) {
        timeSinceLastShot += dt;
        if(!shots.isEmpty()) {
            ListIterator it = shots.listIterator();
            while(it.hasNext()) {
                Projectile shot = (Projectile)it.next();
                if(shot.isDestroyed()) {
                    it.remove();
                }
            }
        }
        this.position.x += this.velocity.x * dt;
        if(position.x + (mTextures[cur].getWidth() * scale.x) > Game.windowWidth) {
            float newx = Game.windowWidth - (mTextures[cur].getWidth() * scale.x);
            float diff = position.x - newx;
            projectileStart.x -= diff;
            this.position.x = newx;
        }
        else if(position.x < 0.0f) {
            projectileStart.x -= position.x;
            position.x = 0.0f;
        }
        this.projectileStart.x += this.velocity.x * dt;
        this.position.y += this.velocity.y * dt;
    }