Spaces:
Sleeping
Sleeping
import * as PIXI from 'pixi.js' | |
import { g_ctx } from './lecontext.js' // global context | |
import * as CONFIG from './leconfig.js' | |
// -- | |
// Set sizes and limits for HTML in main UI | |
// -- | |
export function initMainHTMLWindow() { | |
document.getElementById("layer0pane").style.maxWidth = ""+CONFIG.htmlLayerPaneW+"px"; | |
document.getElementById("layer0pane").style.maxHeight = ""+CONFIG.htmlLayerPaneH+"px"; | |
document.getElementById("layer1pane").style.maxWidth = ""+CONFIG.htmlLayerPaneW+"px"; | |
document.getElementById("layer1pane").style.maxHeight = ""+CONFIG.htmlLayerPaneH+"px"; | |
document.getElementById("layer2pane").style.maxWidth = ""+CONFIG.htmlLayerPaneW+"px"; | |
document.getElementById("layer2pane").style.maxHeight = ""+CONFIG.htmlLayerPaneH+"px"; | |
document.getElementById("layer3pane").style.maxWidth = ""+CONFIG.htmlLayerPaneW+"px"; | |
document.getElementById("layer3pane").style.maxHeight = ""+CONFIG.htmlLayerPaneH+"px"; | |
document.getElementById("tilesetpane").style.maxWidth = ""+CONFIG.htmlTilesetPaneW+"px"; | |
document.getElementById("tilesetpane").style.maxHeight = ""+CONFIG.htmlTilesetPaneH+"px"; | |
document.getElementById("compositepane").style.maxWidth = ""+CONFIG.htmlCompositePaneW+"px"; | |
document.getElementById("compositepane").style.maxHeight = ""+CONFIG.htmlCompositePaneH+"px"; | |
// hide map tab | |
let mappane = document.getElementById("map"); | |
mappane.style.display = "none"; | |
} | |
// -- | |
// Initialize handlers for file loading | |
// -- | |
// -- | |
// Initialize handlers loading a PNG file into the composite window | |
// -- | |
export function initCompositePNGLoader() { | |
const fileInput = document.getElementById('compositepng'); | |
fileInput.onchange = (evt) => { | |
if (!window.FileReader) return; // Browser is not compatible | |
if (g_ctx.debug_flag) { | |
console.log("compositepng ", fileInput.files[0].name); | |
} | |
let bgname = fileInput.files[0].name; | |
const texture = PIXI.Texture.from("./tilesets/"+bgname); | |
const bg = new PIXI.Sprite(texture); | |
bg.zIndex = 0; | |
g_ctx.composite.container.addChild(bg); | |
} | |
} | |
// -- | |
// initailized handler to load a spriteSheet into current working tile | |
// -- | |
export function initSpriteSheetLoader() { | |
const fileInput = document.getElementById('spritesheet'); | |
fileInput.onchange = async (evt) => { | |
if (!window.FileReader) return; // Browser is not compatible | |
if (g_ctx.debug_flag) { | |
console.log("spritesheet ", fileInput.files[0].name); | |
} | |
let ssname = fileInput.files[0].name; | |
let sheet = await PIXI.Assets.load("./"+ssname); | |
console.log(sheet); | |
g_ctx.tileset.addTileSheet(ssname, sheet); | |
g_ctx.selected_tiles = []; | |
} | |
} | |
// -- | |
// initailized handler to load a new tileset | |
// -- | |
export function initTilesetLoader(callme) { | |
const fileInput = document.getElementById('tilesetfile'); | |
fileInput.onchange = async (evt) => { | |
if (!window.FileReader) return; // Browser is not compatible | |
if (g_ctx.debug_flag) { | |
console.log("tilesetfile ", fileInput.files[0].name); | |
} | |
g_ctx.tilesetpath = "./tilesets/"+fileInput.files[0].name; | |
callme(); | |
} | |
} | |
// -- | |
// initailized handler to load a level from a file | |
// -- | |
function doimport (str) { | |
if (globalThis.URL.createObjectURL) { | |
const blob = new Blob([str], { type: 'text/javascript' }) | |
const url = URL.createObjectURL(blob) | |
const module = import(url) | |
URL.revokeObjectURL(url) // GC objectURLs | |
return module | |
} | |
const url = "data:text/javascript;base64," + btoa(moduleData) | |
return import(url) | |
} | |
export function initLevelLoader(callme) { | |
let filecontent = ""; | |
const fileInput = document.getElementById('levelfile'); | |
fileInput.onchange = (evt) => { | |
if (!window.FileReader) return; // Browser is not compatible | |
var reader = new FileReader(); | |
reader.onload = function (evt) { | |
if (evt.target.readyState != 2) return; | |
if (evt.target.error) { | |
alert('Error while reading file'); | |
return; | |
} | |
filecontent = evt.target.result; | |
doimport(filecontent).then(mod => callme(mod)); | |
}; | |
reader.readAsText(evt.target.files[0]); | |
} | |
} |