diff --git a/.gitignore b/.gitignore index 40b878d..96fb351 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ -node_modules/ \ No newline at end of file +node_modules/ +assets/skins/download/* +assets/skins/edit/* \ No newline at end of file diff --git a/assets/data.json b/assets/data.json new file mode 100644 index 0000000..5bf01c9 --- /dev/null +++ b/assets/data.json @@ -0,0 +1 @@ +{"theme":"light","user":"arne.v.iterson@hotmail.nl","password":"","session":"","skinDefault":"http://assets.mojang.com/SkinTemplates/steve.png"} \ No newline at end of file diff --git a/assets/overlays/headband.png b/assets/overlays/headband.png new file mode 100644 index 0000000..3a4257f Binary files /dev/null and b/assets/overlays/headband.png differ diff --git a/assets/overlays/hoodie_classic.png b/assets/overlays/hoodie_classic.png new file mode 100644 index 0000000..58a089c Binary files /dev/null and b/assets/overlays/hoodie_classic.png differ diff --git a/assets/overlays/hoodie_slim.png b/assets/overlays/hoodie_slim.png new file mode 100644 index 0000000..46b00a4 Binary files /dev/null and b/assets/overlays/hoodie_slim.png differ diff --git a/assets/overlays/tv.png b/assets/overlays/tv.png new file mode 100644 index 0000000..32a6c3c Binary files /dev/null and b/assets/overlays/tv.png differ diff --git a/css/index.css b/css/index.css index c8895bf..76a377c 100644 --- a/css/index.css +++ b/css/index.css @@ -57,8 +57,8 @@ body div.content .message.warning { } body div.content .message.success { - border: 1px solid green; - background: rgba(0, 255, 0, 0.5); + border: 1px solid limegreen; + background: rgba(50, 205, 50, 0.5); } body div.content div.left { @@ -73,6 +73,11 @@ body div.content div.right { grid-area: right; } +body div.content div.right div#list canvas { + cursor: pointer; + padding: 0 2px 0 2px; +} + body div.content img.skin { width: 60%; padding: 0 1em 1em 1em; diff --git a/css/index.css.map b/css/index.css.map index 4e40bf1..c1978db 100644 --- a/css/index.css.map +++ b/css/index.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "AAAA,AAAA,IAAI,CAAC;EACD,WAAW,EAAE,4BAA4B;EACzC,UAAU,EAAE,MAAM;CA+ErB;;AAjFD,AAIQ,IAJJ,CAGA,MAAM,CACF,EAAE,CAAC;EACC,aAAa,EAAE,CAAC;CACnB;;AANT,AAOQ,IAPJ,CAGA,MAAM,CAIF,EAAE,CAAC;EACC,MAAM,EAAE,CAAC;CACZ;;AATT,AAWI,IAXA,CAWA,GAAG,AAAA,QAAQ,CAAC;EACR,OAAO,EAAE,IAAI;EACb,qBAAqB,EAAE,OAAO;EAC9B,mBAAmB,EACf,+BAEJ;EACA,KAAK,EAAE,IAAI;CA6Cd;;AA/DL,AAoBY,IApBR,CAWA,GAAG,AAAA,QAAQ,CAQP,IAAI,CACA,KAAK,CAAC;EACF,SAAS,EAAE,KAAK;CACnB;;AAtBb,AAwBQ,IAxBJ,CAWA,GAAG,AAAA,QAAQ,CAaP,KAAK,EAxBb,IAAI,CAWA,GAAG,AAAA,QAAQ,CAaA,MAAM,CAAC;EACV,MAAM,EAAE,KAAK;EACb,OAAO,EAAE,MAAM;CAClB;;AA3BT,AA4BQ,IA5BJ,CAWA,GAAG,AAAA,QAAQ,CAiBP,MAAM,CAAC;EACH,KAAK,EAAE,GAAG;CACb;;AA9BT,AA+BQ,IA/BJ,CAWA,GAAG,AAAA,QAAQ,CAoBP,QAAQ,CAAC;EACL,SAAS,EAAE,OAAO;EAClB,KAAK,EAAE,iBAAiB;EACxB,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,QAAQ;EAChB,OAAO,EAAE,iBAAiB;EAC1B,SAAS,EAAE,KAAK;EAChB,KAAK,EAAE,KAAK;CAaf;;AAnDT,AAuCY,IAvCR,CAWA,GAAG,AAAA,QAAQ,CAoBP,QAAQ,AAQH,KAAK,CAAC;EACH,MAAM,EAAE,cAAc;EACtB,UAAU,EAAE,oBAAoB;CACnC;;AA1Cb,AA2CY,IA3CR,CAWA,GAAG,AAAA,QAAQ,CAoBP,QAAQ,AAYH,QAAQ,CAAC;EACN,MAAM,EAAE,aAAa;EACrB,UAAU,EAAE,oBAAoB;CACnC;;AA9Cb,AA+CY,IA/CR,CAWA,GAAG,AAAA,QAAQ,CAoBP,QAAQ,AAgBH,QAAQ,CAAC;EACN,MAAM,EAAE,eAAe;EACvB,UAAU,EAAE,oBAAoB;CACnC;;AAlDb,AAoDQ,IApDJ,CAWA,GAAG,AAAA,QAAQ,CAyCP,GAAG,AAAA,KAAK,CAAC;EACL,SAAS,EAAE,IAAI;CAClB;;AAtDT,AAuDQ,IAvDJ,CAWA,GAAG,AAAA,QAAQ,CA4CP,GAAG,AAAA,MAAM,CAAC;EACN,SAAS,EAAE,KAAK;CACnB;;AAzDT,AA0DQ,IA1DJ,CAWA,GAAG,AAAA,QAAQ,CA+CP,GAAG,AAAA,KAAK,CAAC;EACL,KAAK,EAAE,GAAG;EACV,OAAO,EAAE,aAAa;EACtB,eAAe,EAAE,SAAS;CAC7B;;AA9DT,AAgEI,IAhEA,AAgEC,KAAK,CAAC;EACH,KAAK,EAAE,OAAO;EACd,gBAAgB,EAAE,IAAI;CACzB;;AAnEL,AAoEI,IApEA,AAoEC,MAAM,CAAC;EACJ,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,IAAI;CACnB;;AAvEL,AAwEI,IAxEA,CAwEA,MAAM,CAAC;EACH,SAAS,EAAE,KAAK;EAChB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;EACZ,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,CAAC;EACT,IAAI,EAAE,CAAC;EACP,UAAU,EAAE,MAAM;CACrB", + "mappings": "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", "sources": [ "index.scss" ], diff --git a/css/index.scss b/css/index.scss index f55913c..081b233 100644 --- a/css/index.scss +++ b/css/index.scss @@ -46,8 +46,8 @@ body { background: rgba(255, 0, 0, 0.5); } &.success { - border: 1px solid green; - background: rgba(0, 255, 0, 0.5); + border: 1px solid limegreen; + background: rgba(50, 205, 50, 0.5); } } div.left { @@ -55,6 +55,12 @@ body { } div.right { grid-area: right; + div#list { + canvas { + cursor: pointer; + padding: 0 2px 0 2px; + } + } } img.skin { width: 60%; diff --git a/data/data.json b/data/data.json deleted file mode 100644 index c511306..0000000 --- a/data/data.json +++ /dev/null @@ -1 +0,0 @@ -{"theme":"dark","user":"arne.v.iterson@hotmail.nl","password":"","skinDefault":"http://assets.mojang.com/SkinTemplates/steve.png"} \ No newline at end of file diff --git a/data/skins/in.png b/data/skins/in.png deleted file mode 100644 index 9659fe9..0000000 --- a/data/skins/in.png +++ /dev/null @@ -1 +0,0 @@ -Unable to open this file -- only text documents are supported \ No newline at end of file diff --git a/html/main.hbs b/html/main.hbs index da4d5fc..9dc33aa 100644 --- a/html/main.hbs +++ b/html/main.hbs @@ -30,6 +30,7 @@


+
diff --git a/html/skin_current.hbs b/html/skin_current.hbs index eca8fa3..1baeb39 100644 --- a/html/skin_current.hbs +++ b/html/skin_current.hbs @@ -14,7 +14,7 @@

Current Skin

-
+

@@ -24,7 +24,9 @@
+ +
diff --git a/html/skin_edit.hbs b/html/skin_edit.hbs new file mode 100644 index 0000000..40f843a --- /dev/null +++ b/html/skin_edit.hbs @@ -0,0 +1,40 @@ + + + + + + + {{ title }} + + + + +
+

{{ header }}

+

Edit Skin

+
+ +
+

+ +
+ +
+ +
+ +
+ + + +
+
+ + + + + + + \ No newline at end of file diff --git a/html/skin_gallery.hbs b/html/skin_gallery.hbs new file mode 100644 index 0000000..cf416b6 --- /dev/null +++ b/html/skin_gallery.hbs @@ -0,0 +1,43 @@ + + + + + + + {{ title }} + + + + +
+

{{ header }}

+

Saved skins

+
+ + + + + + + + + \ No newline at end of file diff --git a/html/skin_random.hbs b/html/skin_random.hbs index 4f613d6..5740900 100644 --- a/html/skin_random.hbs +++ b/html/skin_random.hbs @@ -27,6 +27,7 @@ +
diff --git a/html/skin_upload.hbs b/html/skin_upload.hbs index 12ea3b4..7718e1c 100644 --- a/html/skin_upload.hbs +++ b/html/skin_upload.hbs @@ -14,7 +14,7 @@

Upload Skin

-
+

diff --git a/main.js b/main.js index 0568b4f..cfd472d 100644 --- a/main.js +++ b/main.js @@ -5,7 +5,11 @@ const path = require("path"); if (process.env.NODE_ENV === "dev") { require("electron-reload")(__dirname, { - electron: path.join(__dirname, "node_modules", ".bin", "electron") + electron: path.join(__dirname, "node_modules", ".bin", "electron"), + ignored: [ + /node_modules|[/\\]\./, + /assets\/skins|[/\\]\./ + ] }); } @@ -30,7 +34,7 @@ function createWindow () { } // Load previous credentials and settings -var authData = JSON.parse(fs.readFileSync("./data/data.json")); +var authData = JSON.parse(fs.readFileSync("./assets/data.json")); // Define handlebars with loaded settings require("electron-handlebars")({ @@ -43,14 +47,14 @@ require("electron-handlebars")({ // Respond to renderer requests ipcMain.on("getAuth", (event) => { - authData = JSON.parse(fs.readFileSync("./data/data.json")); + authData = JSON.parse(fs.readFileSync("./assets/data.json")); event.returnValue = authData; }); ipcMain.on("setAuth", (event, data) => { - authData = JSON.parse(fs.readFileSync("./data/data.json")); + authData = JSON.parse(fs.readFileSync("./assets/data.json")); if (data != authData) { - fs.writeFileSync("./data/data.json", JSON.stringify(data)); + fs.writeFileSync("./assets/data.json", JSON.stringify(data)); } event.returnValue = true; }); diff --git a/package-lock.json b/package-lock.json index a837e52..6ba080c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1944,6 +1944,11 @@ "escape-string-regexp": "^2.0.0" } }, + "merge-images": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-images/-/merge-images-2.0.0.tgz", + "integrity": "sha512-bpI4j54n/Zl6ZTgxaR3xWou/lqI53RAAt8peXijW37BKqoON83LQ7XCZqtFiwzBfEXIws1isYyR06584yffAyA==" + }, "mime": { "version": "2.4.5", "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.5.tgz", diff --git a/package.json b/package.json index 8e07d10..1f3d696 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "electron-handlebars": "^2.0.0", "electron-reload": "^1.5.0", "eslint": "^7.0.0", + "merge-images": "^2.0.0", "pngjs": "^5.0.0", "skinview3d": "^2.0.0-alpha.1", "three": "^0.116.1" diff --git a/src/main.js b/src/main.js index 907f05a..8586270 100644 --- a/src/main.js +++ b/src/main.js @@ -1,14 +1,10 @@ /* eslint-disable no-unused-vars */ const { ipcRenderer, remote } = require("electron"); -const axios = require("axios").default; const path = require("path"); const session = ipcRenderer.sendSync("getSession"); if (!session.accessToken) { - console.log("Session does not exist, return to auth"); remote.getCurrentWindow().loadURL(path.join(`file://${__dirname}/auth.hbs`)); -} else { - console.log("Session does exist, continue"); } const msg = document.querySelectorAll("div.content > p.message")[0]; @@ -16,22 +12,22 @@ msg.classList.add("success"); msg.innerHTML = `Logged in as ${session.selectedProfile.name}`; document.querySelectorAll("div.content > div.right > button#current")[0].addEventListener("click", (e) => { - console.log("Clicked current button"); remote.getCurrentWindow().loadURL(path.join(`file://${__dirname}/skin_current.hbs`)); }); document.querySelectorAll("div.content > div.right > button#upload")[0].addEventListener("click", (e) => { - console.log("Clicked upload button"); remote.getCurrentWindow().loadURL(path.join(`file://${__dirname}/skin_upload.hbs`)); }); document.querySelectorAll("div.content > div.right > button#random")[0].addEventListener("click", (e) => { - console.log("Clicked random button"); remote.getCurrentWindow().loadURL(path.join(`file://${__dirname}/skin_random.hbs`)); }); +document.querySelectorAll("div.content > div.right > button#gallery")[0].addEventListener("click", (e) => { + remote.getCurrentWindow().loadURL(path.join(`file://${__dirname}/skin_gallery.hbs`)); +}); + document.querySelectorAll("div.content > div.right > button#logout")[0].addEventListener("click", (e) => { - console.log("Clicked logout button"); if (ipcRenderer.sendSync("setSession", {})) { var authData = ipcRenderer.sendSync("getAuth"); authData.password = ""; diff --git a/src/skin.js b/src/skin.js index 1c5ad99..83e82b3 100644 --- a/src/skin.js +++ b/src/skin.js @@ -6,7 +6,7 @@ const { } = require("electron"); const axios = require("axios").default; const path = require("path"); - +const fs = require("fs"); const skinview3d = require("skinview3d/dist/skinview3d.min.js"); const session = ipcRenderer.sendSync("getSession"); @@ -24,54 +24,89 @@ var parser = new DOMParser(); var randomUrls = []; // Switch button and views -var btn = document.querySelectorAll("div.content > div.left > button#switch")[0]; +var button = { + switch: document.querySelectorAll("div.left > button#switch"), + edit: document.querySelectorAll("div.right > button#edit"), + random: document.querySelectorAll("div.right > button#random"), + save: document.querySelectorAll("div.right > button#save"), + download: document.querySelectorAll("div.right > button#download"), + main: document.querySelectorAll("div.right > button#main"), + set: document.querySelectorAll("div.right > button#set") +}; +var message = document.querySelectorAll("div.content > p.message")[0]; +var list = document.querySelectorAll("div.right > div#list")[0]; var view = { - flat: document.querySelectorAll("div.content > div.left > img.skin#flat")[0], - mesh: document.querySelectorAll("div.content > div.left > div#mesh")[0] + flat: document.querySelectorAll("div.left > img.skin#flat")[0], + mesh: document.querySelectorAll("div.left > div#mesh")[0] }; +var skin = new skinview3d.SkinViewer({ + domElement: view.mesh, + width: 300, + height: 250 +}); + +var control = skinview3d.createOrbitControls(skin); +control.enableRotate = true; +control.enableZoom = false; +control.enablePan = false; + function setView(url, controls = true) { - btn.style.display = "initial"; + button.switch[0].style.display = "initial"; + view.flat.src = url; - - view.mesh.innerHTML = ""; - - // Set mesh view - let skinViewer = new skinview3d.SkinViewer({ - domElement: view.mesh, - width: 300, - height: 250, - skinUrl: url - }); - - let control = skinview3d.createOrbitControls(skinViewer); + skin.skinUrl = url; control.enableRotate = controls; - control.enableZoom = false; - control.enablePan = false; } +// Switch button action +button.switch[0].addEventListener("click", (e) => { + if (view.flat.style.display == "inline") { + view.flat.style.display = "none"; + view.mesh.style.display = "inline"; + button.switch[0].innerHTML = "Switch to 2D"; + } else { + view.flat.style.display = "inline"; + view.mesh.style.display = "none"; + button.switch[0].innerHTML = "Switch to 3D"; + } +}); + + switch (action) { + case "current": axios({ method: "GET", url: "https://sessionserver.mojang.com/session/minecraft/profile/" + session.selectedProfile.id }).then((data) => { setView(JSON.parse(atob(data.data.properties[0].value)).textures.SKIN.url); + + button.edit[0].addEventListener("click", (e) => { + remote.getCurrentWindow().loadURL(path.join(`file://${__dirname}/skin_edit.hbs`)); + }); }); break; + case "upload": - document.querySelectorAll("div.content > div.right > button").forEach(element => { - element.addEventListener("click", (e) => { - document.querySelectorAll("div.content > div.right > button").forEach(button => { - if (button.id != "main") { - button.style.display = "none"; - } + console.log(window); + + var buttons = document.querySelectorAll("div.right > button"); + buttons.forEach(element => { + if (element.id != "main") { + element.addEventListener("click", (e) => { + buttons.forEach(btn => { + if (btn.id != "main") { + btn.style.display = "none"; + } + }); + document.querySelectorAll(`div.right > form#${element.id}`)[0].style.display = "block"; }); - document.querySelectorAll(`div.content > div.right > form#${element.id}`)[0].style.display = "block"; - }); + } }); break; + case "random": axios({ method: "GET", @@ -101,45 +136,107 @@ case "random": random(); - document.querySelectorAll("div.content > div.right > button#random")[0].addEventListener("click", (e) => { + button.random[0].addEventListener("click", (e) => { random(); }); }); break; + +case "edit": + axios({ + method: "GET", + url: "https://sessionserver.mojang.com/session/minecraft/profile/" + session.selectedProfile.id + }).then((data) => { + const url = JSON.parse(atob(data.data.properties[0].value)).textures.SKIN.url; + setView(url); + + axios({ + method: "get", + url: url, + responseType: "stream", + adapter: require("axios/lib/adapters/http") + }).then((res) => { + res.data.pipe(fs.createWriteStream(path.join(__dirname + "/../assets/skins/edit/in.png"))); + }); + }); + break; + +case "gallery": + fs.readdir(path.join(__dirname + "/../assets/skins/download/"), (err, files) => { + files.forEach(file => { + var ctx = document.createElement("canvas"); + ctx.width = 32; + ctx.height = 32; + var canvas = ctx.getContext("2d"); + + canvas["imageSmoothingEnabled"] = false; /* standard */ + canvas["mozImageSmoothingEnabled"] = false; /* Firefox */ + canvas["oImageSmoothingEnabled"] = false; /* Opera */ + canvas["webkitImageSmoothingEnabled"] = false; /* Safari */ + canvas["msImageSmoothingEnabled"] = false; /* IE */ + + var img = new Image(); + img.onload = function() { + canvas.drawImage(img, 8, 8, 8, 8, 0, 0, 32, 32); + }; + img.src = "data:image/png;base64," + fs.readFileSync(path.join(__dirname + "/../assets/skins/download/" + file), {encoding: "base64"}); + + ctx.addEventListener("click", (e) => { + setView(img.src); + }); + + list.appendChild(ctx); + }); + }); + break; +} + +// Set button action +if (button.set.length > 0) { + button.set[0].addEventListener("click", (e) => { + remote.getCurrentWindow().loadURL(path.join(`file://${__dirname}/skin_upload.hbs?url=test`)); + }); +} + +// Save button action +if (button.save.length > 0) { + button.save[0].addEventListener("click", (e) => { + axios({ + method: "get", + url: view.flat.src, + responseType: "stream", + adapter: require("axios/lib/adapters/http") + }).then((res) => { + var p = res.request.path.split("/")[2]; + if (p.split(".").length < 2) { + p = p + ".png"; + } + res.data.pipe(fs.createWriteStream(path.join(__dirname + `/../assets/skins/download/${p}`))); + message.classList.add("success"); + message.innerHTML = "Saved successfully"; + }); + }); } // Download button action -document.querySelectorAll("div.content > div.right > button#download")[0].addEventListener("click", (e) => { - ipcRenderer.send("download", { - url: view.flat.src, - properties: { - saveAs: true - } - }); +if (button.download.length > 0) { + button.download[0].addEventListener("click", (e) => { + ipcRenderer.send("download", { + url: view.flat.src, + properties: { + saveAs: true + } + }); - ipcRenderer.on("downloadResult", (event, arg) => { - var msg = document.querySelectorAll("div.content > p.message")[0]; - console.log(msg); - msg.classList.add("success"); - msg.innerHTML = "Downloaded successfully"; + ipcRenderer.on("downloadResult", (event, arg) => { + message.classList.add("success"); + message.innerHTML = "Downloaded successfully"; + }); }); -}); - -// Switch button action -btn.addEventListener("click", (e) => { - if (view.flat.style.display == "inline") { - view.flat.style.display = "none"; - view.mesh.style.display = "inline"; - btn.innerHTML = "Switch to 2D"; - } else { - view.flat.style.display = "inline"; - view.mesh.style.display = "none"; - btn.innerHTML = "Switch to 3D"; - } -}); +} // Back button action -document.querySelectorAll("div.content > div.right > button#main")[0].addEventListener("click", (e) => { +button.main[0].addEventListener("click", (e) => { remote.getCurrentWindow().loadURL(path.join(`file://${__dirname}/main.hbs`)); }); \ No newline at end of file