From cc25f2c2e003c954094e5282510975033438f164 Mon Sep 17 00:00:00 2001 From: Daniel Scalzi <d_scalzi@yahoo.com> Date: Wed, 17 May 2017 17:44:46 -0400 Subject: [PATCH] Beginning work on launcher. --- app/assets/css/styles.css | 52 ++++++++++++++++++++++++++++++++-- app/assets/js/launchprocess.js | 30 ++++++++++++-------- app/assets/js/script.js | 14 +++++++-- app/index.html | 38 ++++++++++++------------- 4 files changed, 97 insertions(+), 37 deletions(-) diff --git a/app/assets/css/styles.css b/app/assets/css/styles.css index a0869f6a..8bf06065 100644 --- a/app/assets/css/styles.css +++ b/app/assets/css/styles.css @@ -13,7 +13,7 @@ /* Logger font, found on https://fonts.google.com/specimen/Inconsolata?selection.family=Inconsolata */ @font-face { font-family: inconsolata; - src: url('../fonts/Inconsolata-Bold.ttf'); + src: url('../fonts/Inconsolata-Regular.ttf'); } /******************************************************************************* @@ -28,11 +28,21 @@ body, html, div { padding: 0px; } +html, body { + height: 100%; +} + html { background: url('../images/BrownWithWignette.jpg') no-repeat center center fixed; background-size: cover; } +#main_content { + height: auto; + height: calc(100% - 90px); + display: flex; +} + button { background-color: #a02d2a; color: #ffffff; @@ -47,6 +57,11 @@ button:hover { box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24), 0 17px 50px 0 rgba(0,0,0,0.19); } +::selection { + background-color: #a02d2a; + color: #ffffff; +} + /******************************************************************************* * * * Header * @@ -224,7 +239,38 @@ button:hover { #content_container { border: 3px solid #a02d2a; - height: 98%; + height: calc(98% - 41.33px); width: 98%; - min-height: 325px; + display: flex; +} + +#launcher-log { + font-family: 'inconsolata'; + font-size: 12px; + color: #ffffff; + background-color: #1a1b1c; + border: none; + outline: none; + overflow-y: scroll; + display: block; + align-items: stretch; + width: 100%; + resize: none; + padding: 5px 10px; + text-shadow: 0.01px 0.01px 0.01px #ffffff; + line-height: 1.2em; +} + +#launcher-log::selection { + background: rgba(160, 45, 42, .9); + color: #ffffff; +} + +#launcher-log::-webkit-scrollbar { + background-color: #a02d2a; +} + +#launcher-log::-webkit-scrollbar-thumb:window-inactive, +#launcher-log::-webkit-scrollbar-thumb { + background: black } \ No newline at end of file diff --git a/app/assets/js/launchprocess.js b/app/assets/js/launchprocess.js index b55d6054..a201d312 100644 --- a/app/assets/js/launchprocess.js +++ b/app/assets/js/launchprocess.js @@ -3,10 +3,10 @@ const uuidV4 = require('uuid/v4') const path = require('path') const child_process = require('child_process') const ag = require('./assetguard.js') +const AdmZip = require('adm-zip') const fs = require('fs') const mkpath = require('mkdirp'); -/* TODO - convert native extraction to use adm-zip. Currently not functional due to removal of unzip module (it was bad) */ launchMinecraft = function(versionData, basePath){ const authPromise = mojang.auth('EMAIL', 'PASS', uuidV4(), { name: 'Minecraft', @@ -16,6 +16,15 @@ launchMinecraft = function(versionData, basePath){ const args = finalizeArguments(versionData, data, basePath) //TODO make this dynamic const child = child_process.spawn('C:\\Program Files\\Java\\jre1.8.0_131\\bin\\javaw.exe', args) + child.stdout.on('data', (data) => { + console.log('minecraft:', data.toString('utf8')) + }) + child.stderr.on('data', (data) => { + console.log('minecraft:', data.toString('utf8')) + }) + child.on('close', (code, signal) => { + console.log('exited with code', code) + }) }) } @@ -99,12 +108,11 @@ classpathArg = function(versionData, basePath){ const to = path.join(libPath, artifact['path']) - fs.createReadStream(to).pipe(unzip.Parse()).on('entry', function(entry){ - const fileName = entry.path - const type = entry.type - const size = entry.size + let zip = new AdmZip(to) + let zipEntries = zip.getEntries() - console.log(fileName) + for(let i=0; i<zipEntries.length; i++){ + const fileName = zipEntries[i].entryName let shouldExclude = false @@ -114,14 +122,12 @@ classpathArg = function(versionData, basePath){ } }) - if(shouldExclude){ - entry.autodrain() - } - else { + if(!shouldExclude){ mkpath.sync(path.join(nativePath, fileName, '..')) - entry.pipe(fs.createWriteStream(path.join(nativePath, fileName))) + fs.writeFile(path.join(nativePath, fileName), zipEntries[i].getData()) } - }) + + } cpArgs.push(to) } diff --git a/app/assets/js/script.js b/app/assets/js/script.js index df978dfc..290f67e6 100644 --- a/app/assets/js/script.js +++ b/app/assets/js/script.js @@ -12,13 +12,23 @@ $(document).on('ready', function(){ $(this).parent().toggleClass("success") } }) + process.stdout.on('data', (data) => { + $('#launcher-log').append(data.toString('utf8')) + //console.log('minecraft:', data.toString('utf8')) + }) + process.stderr.on('data', (data) => { + $('#launcher-log').append(data.toString('utf8')) + //console.log('minecraft:', data.toString('utf8')) + }) + console.log('test') + console.debug('test') }) /* Open web links in the user's default browser. */ $(document).on('click', 'a[href^="http"]', function(event) { event.preventDefault(); - //testdownloads() - shell.openExternal(this.href) + testdownloads() + //shell.openExternal(this.href) }); testdownloads = async function(){ diff --git a/app/index.html b/app/index.html index d4023d20..6de835a0 100644 --- a/app/index.html +++ b/app/index.html @@ -59,26 +59,24 @@ <label onclick="" class="toggle-btn success"><input type="radio" name="main_group"/>news</label><label onclick="" class="toggle-btn"><input type="radio" name="main_group"/>map</label><label onclick="" class="toggle-btn"><input type="radio" name="main_group"/>mods</label><label onclick="" class="toggle-btn"><input type="radio" name="main_group"/>faq</label><label onclick="" class="toggle-btn"><input type="radio" name="main_group"/>log</label><label onclick="" class="toggle-btn"><input type="radio" name="main_group"/>settings</label> </div> <div id="content_container"> - + <textarea id="launcher-log">[05/17/2017 04:59:13] [INFO] - Loading.. +[05/17/2017 04:59:13] [SEVERE] - This is a test exception +java.lang.Exception: This is a test exception + at com.westeroscraft.LauncherExecutor.start(LauncherExecutor.java:40) + at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863) + at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326) + at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295) + at java.security.AccessController.doPrivileged(Native Method) + at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294) + at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) + at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) + at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) + at java.lang.Thread.run(Unknown Source) +[05/17/2017 04:59:28] [INFO] - Hastebin result: +Response code: 200. +Hastebin URL: https://hastebin.com/kefezabiwa</textarea> </div> </div> </div> - - <!-- <div class="container"> - <div class="row"> - <div class="col-md-2 col-sm-2"> - <div class="row"> - <div class="col-md-3 col-sm-3"> - <img class="player_icon" src="https://minotar.net/helm/pufferboss.png"> - </div> - <div class="col-md-9 col-sm-9"> - <p class="input_text">Email</p> - <input class="input" id="EMAIL"> - <p class="input_text">Password</p> - <input type="password" id="PASSWORD" class="input" /> - </div> - </div> - </div> - </div> - </div> -</body> --> +</body> +</html> \ No newline at end of file