<!doctype html>
<html lang="en">

<head>
    <title>Paper Flight</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" type="text/css" href="/paperflight/styles.css">
</head>

<body style="padding:0; margin:0; overflow:hidden;">
    <canvas id="canvas"></canvas>
    <script src="/highscore.js"></script>
    <script>
        var width = 800
        var height = 600
        var fps = 60
    </script>
    <script src="/paperflight/util.js"></script>
    <script src="/paperflight/update.js"></script>
    <script src="/paperflight/draw.js"></script>
    <script src="/paperflight/items.js"></script>
    <script src="/paperflight/levels.js"></script>
    <script>
        var username = undefined

        var score, plane, gameInterval, currLevelIndex,
            currLevel, t, collected, startLevel, switchState,
            gameIsOver

        var DEFAULT_VX = 3
        var DEFAULT_VY = 0.5
        var UP_VX = 1
        var UP_VY = 0.1
        var DOWN_VX = 5
        var DOWN_VY = 2

        window.onload = function () {
            canvas = document.getElementById("canvas");
            canvas.width = width
            canvas.height = height
            ctx = canvas.getContext("2d");
            document.addEventListener("keydown", keyDown);
            document.addEventListener("keyup", keyUp);
            document.addEventListener("click", mouseClick);
            init();
            draw()
        }
        function init() {
            if (gameInterval) {
                clearInterval(gameInterval)
            }
            gameIsOver = false
            score = 0
            t = 0
            plane = {
                x: 30,
                y: 100,
                vx: DEFAULT_VX,
                vy: DEFAULT_VY,
                width: 30,
                height: 10,
                dir: 1
            }
            setLevel(1)
            gameInterval = window.setInterval(function () {
                update();
                draw()
            }, 1000 / fps)
        }
        function setLevel(to) {
            plane.x = 30
            plane.y = 100
            plane.dir= 1
            currLevelIndex = to
            collected = 0
            if (to in levels) {
                currLevel = levels[currLevelIndex]
                currLevel.items = currLevel.items.slice()
                currLevel.items.forEach(item => {
                    if ("collected" in item) {
                        item.collected = false
                    }
                })
                switchState = 0
                startLevel = false
            } else {
                currLevel = createLevel("YOU WIN!", 0, -100, -100)
            }
        }
        function atExit() {
            return isPlaneInCircle(currLevel.exit) && collected >= currLevel.coinsNeeded
        }
        function gameOver() {
            gameIsOver = true
        }
        function keyDown(e) {
            startLevel = true
            switch (e.key) {
                case "ArrowLeft": // LEFT
                    plane.dir = -1
                    break;
                case "ArrowRight": // RIGHT
                    plane.dir = 1
                    break;
                case "ArrowUp":
                    plane.vx = UP_VX
                    plane.vy = UP_VY
                    break;
                case "ArrowDown":
                    plane.vx = DOWN_VX
                    plane.vy = DOWN_VY
                    break;
                case "R":
                case "r":
                    init()
                    break;

            }
        }
        function keyUp(e) {
            switch (e.key) {
                case "ArrowUp":
                case "ArrowDown":
                    plane.vx = DEFAULT_VX
                    plane.vy = DEFAULT_VY
                    break;
            }
        }
        function mouseClick(e) {
            console.log(e.x, e.y)
        }
    </script>
</body>

</html>