Jofthomas's picture
Jofthomas HF staff
bulk2
90cbf22
raw
history blame
4.39 kB
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]);
}
}