diff --git a/.gitignore b/.gitignore index ff74596..67685f6 100644 --- a/.gitignore +++ b/.gitignore @@ -57,3 +57,4 @@ Server/.idea/workspace.xml Discord-Bot/.idea/workspace.xml Client/.idea/workspace.xml +LeagueUI/ \ No newline at end of file diff --git a/Client/Install installer Dependency.bat b/Client/Install installer Dependency.bat index 49dd790..3552975 100644 --- a/Client/Install installer Dependency.bat +++ b/Client/Install installer Dependency.bat @@ -5,6 +5,8 @@ npm install electron --save-dev npm install electron-builder --save-dev +npm install electron-packager --save-dev + npm install electron-squirrel-startup --save-dev PAUSE \ No newline at end of file diff --git a/Client/Javascript/Login.js b/Client/Javascript/Login.js index 80d235d..f964fc5 100644 --- a/Client/Javascript/Login.js +++ b/Client/Javascript/Login.js @@ -10,7 +10,7 @@ function Login(appLogic) { CreateElement({type: 'div', text: 'Nickname', class: 'Login_Label'}), this.nicknameInput = CreateElement({type: 'input', class: 'Login_NameInput input-text'}), CreateElement({type: 'div', text: 'Host', class: 'Login_Label'}), - this.hostInput = CreateElement({type: 'input', class: 'Login_HostInput input-text', text: '104.168.222.21'}), + this.hostInput = CreateElement({type: 'input', class: 'Login_HostInput input-text', text: '24.27.15.238'}), CreateElement({type: 'div', text: 'Port', class: 'Login_Label'}), this.portInput = CreateElement({type: 'input', class: 'Login_PortInput input-text', text: '7777'}), this.loginButton = CreateElement({type: 'button', text: 'Login', class: 'Login_Button waves-effect waves-light btn-large' @@ -19,7 +19,7 @@ function Login(appLogic) { var isWindows = process.platform === 'win32'; var isMac = process.platform === 'darwin'; if (isWindows) { - this.leaguePathInput.placeholder = 'C:\/League-of-Legends-4-20\/'; + this.leaguePathInput.placeholder = 'C:\/LeagueSandbox\/League_Sandbox_Client'; } if (isMac) { this.leaguePathInput.placeholder = '\/League of Legends.app'; @@ -37,6 +37,9 @@ function Login(appLogic) { if (localStorage.getItem("name") != undefined && localStorage.getItem("name") != "") { this.nicknameInput.value = localStorage.getItem("name"); } + if (this.leaguePathInput.value === '') { + this.leaguePathInput.value = 'C:\/LeagueSandbox\/League_Sandbox_Client'; + } } Login.prototype.loginButtonClicked = function() { diff --git a/Client/package.json b/Client/package.json index 919a131..b8d9aad 100644 --- a/Client/package.json +++ b/Client/package.json @@ -37,7 +37,7 @@ "dependencies": {}, "devDependencies": { "devtron": "^1.1.0", - "electron": "^1.4.13", + "electron": "^1.4.15", "electron-builder": "^10.12.0", "electron-squirrel-startup": "^1.0.0", "xo": "^0.16.0" diff --git a/Game-Server-Repositories/MSBuild.exe b/Game-Server-Repositories/MSBuild.exe index 0bee2ba..2408953 100644 Binary files a/Game-Server-Repositories/MSBuild.exe and b/Game-Server-Repositories/MSBuild.exe differ diff --git a/Server/ServerLogic.js b/Server/ServerLogic.js index 2daa938..af32dc7 100644 --- a/Server/ServerLogic.js +++ b/Server/ServerLogic.js @@ -1,5 +1,6 @@ var NetworkManager = require('./NetworkManager'); var LobbyManager = require('./LobbyManager'); +var rmdir = require('rimraf'); var Utility = require('./Utility/Utility'); var CreateFunction = Utility.CreateFunction; @@ -83,7 +84,7 @@ ServerLogic.prototype.updateGameServer = function (repository, branch, gameJSON, const exec = require('child_process').spawn; this.totalLaunchedGameServers++; -89-0 + //Create tempororary folder name var d = new Date(); var fileName = d.getFullYear() + '' + d.getMonth() + '' + d.getDate() + '' + d.getHours() + '' + @@ -119,40 +120,68 @@ ServerLogic.prototype.startGameServer = function (repository, branch, gameJSON, console.log("Opening game: " + '../Game-Server-Repositories/' + serverName + '/GameServerApp.exe'); messageCallback("Opening game: " + '../Game-Server-Repositories/' + serverName + '/GameServerApp.exe'); - const game = exec('GameServerApp.exe', ['--port', port, '--config-json', JSON.stringify(gameJSON)], - {cwd: '../Game-Server-Repositories/' + serverName}); + try { + const game = exec('GameServerApp.exe', ['--port', port, '--config-json', JSON.stringify(gameJSON)], + {cwd: '../Game-Server-Repositories/' + serverName}); - var waitingForBoot = true; - game.stdout.on('data', (data) => { - messageCallback(`stdout: ${data}`); + var waitingForBoot = true; + game.stdout.on('data', (data) => { + messageCallback(`stdout: ${data}`); - console.log(`stdout: ${data}`); - if (waitingForBoot) { - if (data.indexOf("Game is ready.") !== -1) { - console.log("Game is ready, doing callback"); - waitingForBoot = false; - callback(); + console.log(`stdout: ${data}`); + if (waitingForBoot) { + if (data.indexOf("Game is ready.") !== -1) { + console.log("Game is ready, doing callback"); + waitingForBoot = false; + callback(); + } } - } - - }); - - game.stderr.on('data', (data) => { - messageCallback(`stdout: ${data}`); - console.log(`stdout: ${data}`); - }); - game.on('close', (code) => { - messageCallback(`child process exited with code ${code}`); - console.log(`child process exited with code ${code}`); + }); + + game.stderr.on('data', (data) => { + messageCallback(`stdout: ${data}`); + console.log(`stdout: ${data}`); + }); + + game.on('close', (code) => { + messageCallback(`child process exited with code ${code}`); + console.log(`child process exited with code ${code}`); + + try { + rmdir('../Game-Server-Repositories/'+serverName, function(error){ + if (error == null) { + console.log('Successfully deleted ' + '../Game-Server-Repositories/'+serverName); + } else { + console.log('Error deleting '+'../Game-Server-Repositories/'+serverName + ', ' + error); + } + }); + } catch (e) { + console.log('Could not delete folder: ' + serverName + ', ' + e); + } + }); - //var rmdir = require('rimraf'); - //rmdir('../Game-Server-Repositories/'+serverName, function(error){ - // console.log('Error deleting '+'../Game-Server-Repositories/'+serverName); - //}); - //Delete old server - //rmdir example /s - }); + setTimeout(() => { + try { + game.kill(); + } catch (e) { + console.log('Could not kill process: ' + e); + } + }, 1000 * 60 * 60 * 2); + } catch (e) { + messageCallback(`Could not start server: ` + e); + try { + rmdir('../Game-Server-Repositories/'+serverName, function(error){ + if (error == null) { + console.log('Successfully deleted ' + '../Game-Server-Repositories/'+serverName); + } else { + console.log('Error deleting '+'../Game-Server-Repositories/'+serverName + ', ' + error); + } + }); + } catch (e) { + console.log('Could not delete folder: ' + serverName + ', ' + e); + } + } })); }; diff --git a/Server/package.json b/Server/package.json index 1cf0f5e..3cb467d 100644 --- a/Server/package.json +++ b/Server/package.json @@ -5,6 +5,7 @@ "main": "ServerLogic.js", "dependencies": { "get-port": "^2.1.0", + "rimraf": "^2.6.2", "ws": "^1.1.1" }, "devDependencies": { diff --git a/Webpage/index.html b/Webpage/index.html new file mode 100644 index 0000000..f181a32 --- /dev/null +++ b/Webpage/index.html @@ -0,0 +1,15 @@ + +Download Testbox for Windows +
+League Path will probably look like: C:\league-of-legends-420\League-of-Legends-4-20\RADS\solutions\lol_game_client_sln\releases\0.0.1.68\deploy +
+Host: 24.27.15.238 (leaguesandbox.matthewfrench.io doesn't resolve properly on the League Client) +
+Port: 7777 +
+Download the League 420 client from the League Sandbox wiki. +

+This project is for development and testing the different League Sandbox branches with friends. +
+Designed and created by Gan. If it's janky, it's cause I made it quickly. + \ No newline at end of file