UNPKG

powertron

Version:

An powerful library for making 2d games (BETA)

105 lines (99 loc) 3.58 kB
const { BrowserWindow, app, Menu } = require("electron") const fs = require("fs") const rr = require("rimraf") function rmFolder() { return new Promise((res, rej) => { if (fs.existsSync("./game")) { rr("./game", (err) => { if (err) { rej(err) } res() }) }else{ res() } }) } function themeToCSS(file) { return new Promise((resolve, reject) => { fs.readFile(file, "utf-8", function(err, data) { let res = "" if (err) { reject(err) } const json = JSON.parse(data) let vals = Object.values(json) let keys = Object.keys(json) for (let i = 0; i < keys.length; i++) { res += `${keys[i]} {` for (let atr = 0; atr < Object.keys(vals[i]).length; atr++) { res += `${Object.keys(vals[i])[atr]}:${Object.values(vals[i])[atr]};` } } res += "}" resolve(res) }) }) } Menu.setApplicationMenu(new Menu()) exports.fullscreen = true exports.title = "Game" exports.theme = "./theme.json" exports.script = "./script.js" exports.run = () => { app.whenReady().then(() => { const win = new BrowserWindow({ fullscreen: exports.fullscreen, webPreferences: { nodeIntegration: true, contextIsolation: false } }) rmFolder().then(() => { fs.mkdir("./game", function(err) { if (err) { throw err } let script = exports.script if (script.startsWith("./")) { script = script.substring(1) script = script.substring(1) } script = __dirname + "/" + script fs.appendFile("./game/index.html", `<!DOCTYPE html><html><head><title>${exports.title}</title></head><body><script src="./game.js"></script><script src="${script}"></script><link rel="stylesheet" href="./styles.css"/></body></html>`, function(err) { if (err) { throw err } themeToCSS(exports.theme).then((css) => { fs.appendFile("./game/styles.css", css, function(err) { if (err) { throw err } fs.readFile("./game.js", "utf-8", function(err, data) { if (err) { throw err } fs.appendFile("./game/game.js", data, function(err) { if (err) { throw err } win.loadFile("./game/index.html") }) }) }) }).catch((err) => { throw err }) }) }) }).catch((err) => { throw err }) }) app.on("window-all-closed", () => { if (process.platform !== "darwin") { app.quit() } }) }