Skip to content
Snippets Groups Projects
game.js 20.74 KiB
function Game() {
    // Current Sprite Selection from User -- might not be needed
    let currUserSprite;

    // Four numbers that define the transform, i hat and j hat
    const i_x = 1;
    const i_y = 0.5;
    const j_x = -1;
    const j_y = 0.5;

    // Symmetric 2D array to store instances of TileClass
    const tile_arr_size = 12;
    let tileArr = new Array(tile_arr_size).fill(null).map(() => new Array(tile_arr_size).fill(null));
    let playerSprite;
    let playerSprite_curTgc; // the current tgc coordinates that the player is at
    let playerSprite_curTileType; // The tile type that the player is currently sitting on

    // Sprite size
    const w = 64;
    const h = 64;

    // what the current cursor calculation is based off
    let maxWinWidth = 1920;
    let maxWinHeight = 1080;

    // TODO: replace
    let tools = ["Fix Sidewalk", "Add Curb Ramp"];
    let currentToolIndex = 0; // keyPressed() has logic to make sure that index doens't go outisde of tools array bounds

    // Variables for Pose Classifier
    let video;
    let poseNet;
    let pose;
    let skeleton;

    let brain;
    let poseLabel = "";

    let state = 'waiting';
    let targetLabel;

    /*
        0 --> grass block (use for where houses go for now)
        1 --> road tile
        2 --> sidewalk tile
        3 --> sidewalk rotated 180 degrees
        4 --> broken sidewalk
        5 --> broken sidewalk rotated 180 degrees
        6 --> sidewalk corner topLeft (no curb ramp)
        7 --> sidewalk corner botLeft (no curb ramp)
        8 --> sidewalk corner botRight (no curb ramp)
        9 --> sidewalk corner topRight (no curb ramp)
    */

    // Hardcoding tile placement for the first level
    // x and y here are just the grid coordinates
    const startingTileIndex = {
        x: 3,
        y: 0
    };
    const endingTileIndex = {
        x: 3,
        y: 11
    };
    const levelOne = [
        [0, 0, 0, 2, 1, 1, 1, 1, 2, 0, 0, 0],
        [0, 0, 0, 2, 1, 1, 1, 1, 2, 0, 0, 0],
        [0, 0, 0, 2, 1, 1, 1, 1, 2, 0, 0, 0],
        [3, 3, 5, 6, 1, 1, 1, 1, 9, 3, 5, 3],
        [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],