Select Git revision
main.js 2.02 KiB
import Canvas from "../../hampsterengine/src/canvas.js";
import Engine from "../../hampsterengine/src/engine.js";
import SoundBox from "./sb-player-small";
// import {mus_DEMOSONG} from "./songs/DEMOSONGDONOTCOMMIT";
// Rooms
import {rm_mainMenu} from "./rooms/mainMenu";
import {rm_game} from "./rooms/game";
import {rm_DEBUG_button} from "./rooms/debug_button";
import {rm_DEBUG_mouse} from "./rooms/debug_mouse";
import {rm_DEBUG_music} from "./rooms/debug_music";
import {rm_DEBUG_INCURSION} from "./rooms/debug_incursion";
// Music
const canvas = new Canvas('canvas');
const engine = new Engine(canvas);
const assets = engine.assetStore;
// assets.addSoundBoxAudio('mus_DEMO', mus_DEMOSONG, new SoundBox());
canvas.width = 640;
canvas.height = 480;
canvas.pixelRatio = 2;
canvas.ctx.setTransform(canvas.pixelRatio, 0, 0, canvas.pixelRatio, 0, 0);
canvas.ctx.imageSmoothingEnabled = false;
let lastClickPos = {
x: 0, y: 0
}
window.lastClickPos = lastClickPos;
engine.registerRoom(rm_mainMenu, 'mainMenu');
engine.registerRoom(rm_game, 'game');
//Debug rooms. Comment out to not include in build (esbuild will not import them if they arent used)
engine.registerRoom(rm_DEBUG_button, 'debug_button');
engine.registerRoom(rm_DEBUG_mouse, 'debug_mouse');
engine.registerRoom(rm_DEBUG_music, 'debug_music');
engine.registerRoom(rm_DEBUG_INCURSION, 'debug_incursion')
function main() {
requestAnimationFrame(main);
engine.frames++;
canvas.fill(engine.room.bgColor ?? 'black');
engine.step();
engine.draw();
engine.drawGui();
engine.drawCursor();
}
console.debug(engine.rooms);
if (document.location.hash) {
console.log('Requesting room', document.location.hash.substring(1));
engine.loadDelay = 0;
engine.room = engine.getRoomIndex(document.location.hash.substring(1));
} else {
engine.room = engine.getRoomIndex('mainMenu');
}
// Ensure assets are loaded.
function load() {
if (engine.loading) {
engine.loadLoop();