powertron
Version:
An powerful library for making 2d games (BETA)
105 lines (99 loc) • 3.58 kB
JavaScript
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()
}
})
}