Skip to content
Snippets Groups Projects
Select Git revision
  • c05ffd290ff2c789d81ca97458c573b802ca547b
  • main default protected
2 results

main.js

Blame
  • 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();