Select Git revision
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