Skip to content
Snippets Groups Projects
Select Git revision
  • 67b9e98a6d9cf8ef3830629085a7e4810b3ea39e
  • master default protected
2 results

game.js

Blame
  • game.js 5.88 KiB
    
    import { WIDTH, HEIGHT, GAME_TITLE } from "./config.js";
    import { Canvas } from "./canvas.js";
    import { TextRenderer } from "./text.js";
    import { Room, Object } from "./objects.js";
    import { isKeyUp, whichKeyDown } from "./keyboard.js";
    import { getParameter } from "./utils.js";
    
    let assets = {
        images: {
            splash: "../img/splash1.webp",
            font: "../img/hampsterfont.webp",
            selector: "../img/selector.webp",
        },
    }
    
    let running = 1;
    
    let currentFrame = 0;
    let targetFrames = 60;
    
    let lastFrameTime = performance.now();
    
    let debug = getParameter("debug") || 0;
    
    let rooms = [];
    let debugStatuses = [];
    let canvas = new Canvas("c", WIDTH, HEIGHT);
    let text;
    
    let pressedLastFrame = [];
    canvas.fill("#222034");
    
    let splash = new Image();
    splash.src = assets.images.splash;
    splash.onload = () => {
        canvas.drawImage(splash, canvas.width / 2 - splash.width / 2, canvas.height / 2 - splash.height / 2);
        let font = new Image();
        font.src = assets.images.font;
        font.onload = () => {
            console.log("font loaded")
            text = new TextRenderer(canvas, font);
            window.onerror = (e) => {
                running = 0;
                text.throwPanic(e);
            }
        }
    }
    
    // Entity class is here becuase otherwise every entity would need the canvas passed into it
    class Entity extends Object {
        constructor(x=0, y=0, spritesheet=null, sprite=null) {
            super();
            this.x = x;
            this.y = y;
            this.sprite = sprite;
            this.spritesheet = spritesheet;
        }
    
        draw() {
            canvas.drawImage(this.sprite, this.x, this.y);
        }
    }
    
    // Create all the game rooms
    let roomIndex = 0;
    let currentRoom = rooms[roomIndex];
    
    let searchForRoom = (name) => {
        // returns the room's index in the rooms array