let ctx, canvas;
let bird;
let pipes = [];
let frameCount = 0;
let nextPipe = Math.floor(Math.random() * 100) + 150;
let nextFrame = false;

document.body.onload = function() {
    setup();
    draw();
}

document.body.onkeydown = processKeyDown;

function setup() {
    canvas = document.getElementById("canvas");
    ctx = canvas.getContext("2d");
    bird = new Bird(50, canvas.height / 2);
    pipes.push(new Pipe(canvas.width, canvas.height));
}

function draw() {
    frameCount += 1;
    ctx.fillStyle = "black";
    ctx.fillRect(0, 0, canvas.width, canvas.height);

    bird.draw(ctx);

    for(let p of pipes) {
        p.draw(ctx);
    }

    update();
    window.requestAnimationFrame(draw);
}

function update() {
    bird.update();
    constrainToScreen(bird);

    for(let p of pipes) {
        p.update();
    }

    if(frameCount % nextPipe == 0) {
        if(nextFrame == false) {
            nextFrame = true;
        } else {
            nextPipe = Math.floor(Math.random() * 50) + 75;
            pipes.push(new Pipe(canvas.width, canvas.height));
            nextFrame = false;
        }
    }
}

function constrainToScreen(obj) {
    if(obj.y <= 0) {
        obj.y = 0;
    }

    if(obj.y >= canvas.height) {
        obj.y = canvas.height;
    }
}

function processKeyDown(event) {
    if(event.keyCode == 32) {
        bird.fly();
    }
}