import { ipcRenderer, shell } from 'electron'; import GameServer from './gameserver/server'; import { switchPage } from './customEvents'; import CheckNAcceptTOS from './gameserver/TOSCheck'; import { acceptLastTOS } from './gameserver/TOSCheck'; let GameServerList:GameServer[] = null; let SelectedGameserver:GameServer = null; const playBtn:HTMLButtonElement = document.getElementById('play') as (HTMLButtonElement); const TOSDialog:HTMLDialogElement = document.getElementById('TOSDialog') as (HTMLDialogElement); playBtn.addEventListener('click', async () => { if( await CheckNAcceptTOS(SelectedGameserver)){ SelectedGameserver.play(); } else { //Open Please accept TOS window TOSDialog.showModal(); } }); const TOSCancel:HTMLButtonElement = document.getElementById('TOSCancel') as (HTMLButtonElement); TOSCancel.addEventListener('click', function() { TOSDialog.close(); }); const TOSOpen:HTMLButtonElement = document.getElementById('TOSOpen') as (HTMLButtonElement); TOSOpen.addEventListener('click', function(e) { e.preventDefault(); shell.openExternal(SelectedGameserver.TOSLink); }); const TOSAccept:HTMLButtonElement = document.getElementById('TOSAccept') as (HTMLButtonElement); TOSAccept.addEventListener('click', function() { acceptLastTOS(SelectedGameserver); SelectedGameserver.play(); TOSDialog.close(); }); const sidebarReference = document.getElementById('sidebar'); let clickableMenueEntries:HTMLElement[]=[]; function updateView(){ // This is for updating the ui to new data if(GameServerList){ // Clear every thing out while (sidebarReference.firstChild) { sidebarReference.removeChild(sidebarReference.firstChild); } GameServerList.forEach((server)=>{ sidebarReference.appendChild(server.getMenuEntry()); }); //Switch page according localstorage: if(GameServerList.length != 0){ const selectedServer = localStorage.getItem("selected_server"); if(selectedServer && selectedServer !==null ){ if(GameServerList.filter((server)=>server.name==selectedServer).length == 0){ localStorage.removeItem("selected_server"); switchPage("SERVER", GameServerList[0].name, 'INFO'); }else{ switchPage("SERVER", selectedServer, 'INFO'); } }else{ //TODO ask if is on special page like global settings first switchPage("SERVER", GameServerList[0].name, 'INFO'); } } } } const serverPage = document.getElementById('serverPage'); const switchPageEvent = document.createElement('span'); switchPageEvent.classList.add("switch-page-event"); switchPageEvent.addEventListener("site-changed", (event:CustomEvent)=>{ if(event.detail.sitetype === "SERVER"){ SelectedGameserver = GameServerList.filter((server)=>server.name==event.detail.page)[0]; localStorage.setItem("selected_server", SelectedGameserver.name); while (serverPage.firstChild) { serverPage.removeChild(serverPage.firstChild); } let page = SelectedGameserver.pageController.getPage(event.detail.subPage); serverPage.appendChild(page); // page.classList.add('animated'); // page.classList.add('fadeIn'); }else{ SelectedGameserver == null; } if(typeof(SelectedGameserver) === "undefined" || SelectedGameserver == null){ // No gameserver selected playBtn.hidden = true; }else{ // A gameserver is selected playBtn.innerText=`Play ${SelectedGameserver.menuName}`; playBtn.hidden = false; } setBackground(); }); document.getElementById("topbar").appendChild(switchPageEvent); let peviousSelectedGameserver:any=null; const contentBackground = document.getElementById('contentBackground'); function setBackground(){ if(peviousSelectedGameserver !== SelectedGameserver){ while (contentBackground.firstChild) { contentBackground.removeChild(contentBackground.firstChild); } if(typeof(SelectedGameserver) === "undefined" || SelectedGameserver == null){ contentBackground.hidden=true; contentBackground.classList.add('hidden'); }else{ if(SelectedGameserver.backgrounds[0] && !SelectedGameserver.backgrounds[0].isVideo){ const background1 = document.createElement('img'); background1.src = `./media/server/${SelectedGameserver.backgrounds[0].file}`; contentBackground.appendChild(background1); background1.classList.add('animated'); background1.classList.add('fadeIn'); } contentBackground.appendChild(document.createElement('div')) contentBackground.hidden=false; contentBackground.classList.remove('hidden'); } } peviousSelectedGameserver = SelectedGameserver; } ipcRenderer.on('status-update', (event:any, status:any) => { // Everything that isnt server view related is in index.ts playBtn.disabled = status.playing; }) import { GameServers } from './gameserver/data'; GameServerList = GameServers; updateView();