diff --git a/app/assets/css/launcher.css b/app/assets/css/launcher.css index 38c25e5..b4d36a6 100644 --- a/app/assets/css/launcher.css +++ b/app/assets/css/launcher.css @@ -1180,6 +1180,12 @@ p { * Landing View (Bottom Styles) | Left Content * * */ +/* Maintains maximum width on the status bar. */ +#server_status_wrapper { + display: inline-flex; + width: 75px; +} + /* Span which displays the player count of the selected server. */ #player_count { color: #949494; @@ -1249,6 +1255,21 @@ p { text-shadow: 0px 0px 0px #bebcbb; font-size: 20px; padding: 0px; + transition: 0.25s ease; + outline: none; +} +#launch_button:hover, +#launch_button:focus { + text-shadow: 0px 0px 20px #fff, 0px 0px 20px #fff; +} +#launch_button:active { + color: #c7c7c7; + text-shadow: 0px 0px 20px #c7c7c7, 0px 0px 20px #c7c7c7; +} +#launch_button:disabled { + color: #c7c7c7; + cursor: default; + pointer-events: none; } /* Launch details main container, hidden until launch processing begins. */ @@ -1336,6 +1357,7 @@ p { /* Overlay container, placed over the main div. */ #overlayContainer { position: absolute; + z-index: 500; top: 22px; display: flex; align-items: center; diff --git a/app/assets/js/scripts/landing.js b/app/assets/js/scripts/landing.js index 16e9bf3..a968d42 100644 --- a/app/assets/js/scripts/landing.js +++ b/app/assets/js/scripts/landing.js @@ -72,6 +72,15 @@ function setDownloadPercentage(value, max, percent = ((value/max)*100)){ setLaunchPercentage(value, max, percent) } +/** + * Enable or disable the launch button. + * + * @param {boolean} val True to enable, false to disable. + */ +function setLaunchEnabled(val){ + document.getElementById('launch_button').disabled = !val +} + // Bind launch button document.getElementById('launch_button').addEventListener('click', function(e){ console.log('Launching game..') @@ -95,7 +104,13 @@ document.getElementById('launch_button').addEventListener('click', function(e){ }) // Bind selected server -server_selection_button.innerHTML = '\u2022 ' + AssetGuard.getServerById(ConfigManager.getGameDirectory(), ConfigManager.getSelectedServer()).name +function updateSelectedServer(serverName){ + if(serverName == null){ + serverName = 'No Server Selected' + } + server_selection_button.innerHTML = '\u2022 ' + serverName +} +updateSelectedServer(AssetGuard.getServerById(ConfigManager.getGameDirectory(), ConfigManager.getSelectedServer()).name) server_selection_button.addEventListener('click', (e) => { e.target.blur() toggleOverlay(true, 'serverSelectContent') @@ -157,9 +172,9 @@ const refreshMojangStatuses = async function(){ document.getElementById('mojang_status_icon').style.color = Mojang.statusToHex(status) } -const refreshServerStatus = async function(){ +const refreshServerStatus = async function(fade = false){ console.log('Refreshing Server Status') - const serv = AssetGuard.resolveSelectedServer(ConfigManager.getGameDirectory()) + const serv = AssetGuard.getServerById(ConfigManager.getGameDirectory(), ConfigManager.getSelectedServer()) let pLabel = 'SERVER' let pVal = 'OFFLINE' @@ -176,16 +191,25 @@ const refreshServerStatus = async function(){ console.warn('Unable to refresh server status, assuming offline.') console.debug(err) } - document.getElementById('landingPlayerLabel').innerHTML = pLabel - document.getElementById('player_count').innerHTML = pVal + if(fade){ + $('#server_status_wrapper').fadeOut(250, () => { + document.getElementById('landingPlayerLabel').innerHTML = pLabel + document.getElementById('player_count').innerHTML = pVal + $('#server_status_wrapper').fadeIn(500) + }) + } else { + document.getElementById('landingPlayerLabel').innerHTML = pLabel + document.getElementById('player_count').innerHTML = pVal + } + } refreshMojangStatuses() refreshServerStatus() // Set refresh rate to once every 5 minutes. -let mojangStatusListener = setInterval(refreshMojangStatuses, 300000) -let serverStatusListener = setInterval(refreshServerStatus, 300000) +let mojangStatusListener = setInterval(() => refreshMojangStatuses(true), 300000) +let serverStatusListener = setInterval(() => refreshServerStatus(true), 300000) /* System (Java) Scan */ diff --git a/app/assets/js/scripts/login.js b/app/assets/js/scripts/login.js index 0b1d5fd..2465ed9 100644 --- a/app/assets/js/scripts/login.js +++ b/app/assets/js/scripts/login.js @@ -14,6 +14,7 @@ const loginPassword = document.getElementById('loginPassword') const checkmarkContainer = document.getElementById('checkmarkContainer') const loginRememberOption = document.getElementById('loginRememberOption') const loginButton = document.getElementById('loginButton') +const loginForm = document.getElementById('loginForm') // Control variables. let lu = false, lp = false @@ -214,6 +215,9 @@ function resolveError(err){ } } +// Disable default form behavior. +loginForm.onsubmit = () => { return false } + // Bind login button behavior. loginButton.addEventListener('click', () => { // Disable form. diff --git a/app/assets/js/scripts/overlay.js b/app/assets/js/scripts/overlay.js index b9e453e..0b3e0cf 100644 --- a/app/assets/js/scripts/overlay.js +++ b/app/assets/js/scripts/overlay.js @@ -91,7 +91,48 @@ function setDismissHandler(handler){ /* Server Select View */ +document.getElementById('serverSelectConfirm').addEventListener('click', () => { + const listings = document.getElementsByClassName('serverListing') + for(let i=0; i 0){ + ConfigManager.setSelectedServer(listings[0].getAttribute('servid')) + updateSelectedServer() + toggleOverlay(false) + } +}) + // Bind server select cancel button. document.getElementById('serverSelectCancel').addEventListener('click', () => { toggleOverlay(false) -}) \ No newline at end of file +}) + +function setServerListingHandlers(){ + const listings = Array.from(document.getElementsByClassName('serverListing')) + listings.map((val) => { + val.onclick = e => { + if(val.hasAttribute('selected')){ + return + } + const cListings = document.getElementsByClassName('serverListing') + for(let i=0; i
- PLAYERS - 18/100 +
+ SERVER + OFFLINE +
MOJANG STATUS diff --git a/app/login.ejs b/app/login.ejs index f90f491..68e7097 100644 --- a/app/login.ejs +++ b/app/login.ejs @@ -1,6 +1,6 @@