summaryrefslogtreecommitdiff
path: root/src/renderer/gameserver/server.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/renderer/gameserver/server.ts')
-rw-r--r--src/renderer/gameserver/server.ts139
1 files changed, 130 insertions, 9 deletions
diff --git a/src/renderer/gameserver/server.ts b/src/renderer/gameserver/server.ts
index ca67553..e7a1078 100644
--- a/src/renderer/gameserver/server.ts
+++ b/src/renderer/gameserver/server.ts
@@ -1,5 +1,5 @@
import GameServerProfile from './profile';
-import { shell } from 'electron';
+import { shell, ipcRenderer } from 'electron';
import { switchPage } from '../CustomEvents';
@@ -9,7 +9,7 @@ export default class GameServer {
public menuName:string,
public name:string,
public shortDescription:string,// the server in 1-2 sentences
- public newsFeed:string,
+ public newsPageUrl:string,
public backgrounds:{isVideo:boolean,file:string}[],
public icon:string,
public socialLinks:socialLink[]
@@ -50,10 +50,10 @@ export default class GameServer {
});
const news = document.createElement('div');
- news.innerHTML = '<i class="far fa-newspaper fa-fw"></i>News';
- if(this.newsFeed && this.newsFeed!==null){
+ news.innerHTML = '<i class="far fa-newspaper fa-fw"></i>News <i class="fas fa-external-link-alt" data-fa-transform="shrink-2"></i>';
+ if(this.newsPageUrl && this.newsPageUrl!==null){
news.addEventListener('click', ()=>{
- switchPage("SERVER",this.name,"NEWS");
+ shell.openExternal(this.newsPageUrl);
});
} else {
news.hidden = true;
@@ -61,6 +61,14 @@ export default class GameServer {
container.appendChild(news);
+ const screenshots = document.createElement('div');
+ screenshots.innerHTML = '<i class="fas fa-camera fa-fw"></i>Screenshots';
+ container.appendChild(screenshots);
+
+ screenshots.addEventListener('click', ()=>{
+ switchPage("SERVER", this.name, "SCREENSHOTS");
+ });
+
const preferences = document.createElement('div');
preferences.innerHTML = '<i class="fas fa-sliders-h fa-fw"></i>Preferences';
preferences.addEventListener('click', ()=>{
@@ -75,14 +83,18 @@ export default class GameServer {
events.addEventListener("site-changed", (event:CustomEvent)=>{
sidebarItem.classList.remove("selected");
info.classList.remove("selected");
- news.classList.remove("selected");
+ //news.classList.remove("selected");
+ screenshots.classList.remove("selected");
preferences.classList.remove("selected");
if(event.detail.sitetype === "SERVER" && event.detail.page === this.name){
sidebarItem.classList.add("selected");
- if(event.detail.subPage === "NEWS") {
- news.classList.add("selected");
- } else if(event.detail.subPage === "PREF") {
+ // if(event.detail.subPage === "NEWS") {
+ // news.classList.add("selected");
+ // } else
+ if(event.detail.subPage === "PREF") {
preferences.classList.add("selected");
+ } else if(event.detail.subPage === "SCREENSHOTS") {
+ screenshots.classList.add("selected");
} else {
info.classList.add("selected");
}
@@ -97,12 +109,17 @@ export default class GameServer {
const page = document.createElement('div');
if (typeof(type) === undefined || type == null){
page.appendChild(this.getInfoPage());
+ } else if (type == "SCREENSHOTS"){
+ page.appendChild(this.getScreenshotsPage());
+ } else if (type == "PREF"){
+ page.appendChild(this.getPreferencesPage());
} else {
const content = document.createElement('div');
content.classList.add("unknownServerPage");
content.innerText = `Unknown page for${this.name}`;
page.appendChild(content);
}
+ this.updateLoginTextElement();
return page;
}
@@ -131,6 +148,70 @@ export default class GameServer {
return content;
}
+
+ private getPreferencesPage():HTMLElement{
+ const content = document.createElement('div');
+ content.classList.add("PreferencesPage");
+
+ const title = document.createElement('h2');
+ title.innerText = `Preferences for ${this.name}`;
+ content.appendChild(title);
+
+ const loginSection = document.createElement('div');
+ loginSection.classList.add("LoginSection");
+ content.appendChild(loginSection);
+
+ const loginUsername = document.createElement('input') as HTMLInputElement;
+ loginUsername.value = localStorage.getItem("2_username_"+this.profile.address);
+
+ const loginPin = document.createElement('input') as HTMLInputElement;
+ loginPin.type = "password";
+ loginPin.value = localStorage.getItem("2_pin_"+this.profile.address);
+
+ const saveBtn = document.createElement('button') as HTMLButtonElement;
+ saveBtn.innerText = "save";
+
+ saveBtn.addEventListener('click', ()=>{
+ localStorage.setItem("2_username_"+this.profile.address, loginUsername.value);
+ localStorage.setItem("2_pin_"+this.profile.address, loginPin.value);
+ this.updateLoginTextElement();
+ });
+
+
+ loginSection.appendChild(loginUsername);
+ loginSection.appendChild(loginPin);
+ loginSection.appendChild(saveBtn);
+
+ return content;
+ }
+
+ private getScreenshotsPage():HTMLElement{
+ const screenshotContainer = document.createElement('div');
+ screenshotContainer.classList.add("screenshotsContainer");
+ screenshotContainer.id="screenshots";
+
+ ipcRenderer.send('getScreenshots', this.profile.address);
+
+ return screenshotContainer;
+ }
+
+ updateLoginTextElement():void{
+ const account = localStorage.getItem("2_username_"+this.profile.address);
+ const pin = localStorage.getItem("2_pin_"+this.profile.address);
+ const element = document.getElementById('LoginText');
+ if(account && pin){
+ element.innerHTML = `Logged in as <b>${account}</b>`;
+ }else{
+ element.innerHTML = "Automatic login not set up";
+ }
+ }
+
+ play(){
+ const args:any = JSON.parse(JSON.stringify(this.profile));
+ args.username = localStorage.getItem("2_username_"+this.profile.address);
+ args.password = localStorage.getItem("2_pin_"+this.profile.address);
+ ipcRenderer.send('play', args);
+ }
}
export class socialLink {
@@ -155,3 +236,43 @@ export class socialLink {
shell.openExternal(this.url.indexOf("://")!==-1?this.url:`https://${this.url}`);
}
}
+
+ipcRenderer.on('getScreenshots', (event:any, data:{dir:string, screenshots:string[]}) => {
+ console.log(data)
+ const screenshots = document.getElementById('screenshots');
+ if(screenshots){
+ // Display screenshots if that tab is open
+ if(data.screenshots.length!==0){
+ data.screenshots.forEach((fileName:string)=>{
+ const screenshot = document.createElement("div");
+ screenshot.classList.add("screenshot");
+ screenshots.appendChild(screenshot);
+ const img = document.createElement("img");
+ img.src = data.dir+fileName;
+ screenshot.appendChild(img);
+
+ // const text = document.createElement("span");
+ // text.innerText = fileName;
+ // screenshot.appendChild(text);
+ screenshot.addEventListener('dragstart', (event) => {
+ event.preventDefault()
+ ipcRenderer.send('dragFileOut', data.dir+fileName)
+ })
+
+ });
+ } else {
+ const nothingHere = document.createElement("p");
+ nothingHere.classList.add("nothingHere");
+ nothingHere.innerText = "There is nothing here, yet. Make some screenshots in Game and come back here. The default key for snaping screenshots is 'P'."
+
+ screenshots.appendChild(nothingHere);
+ }
+
+ const openFolderButton = document.createElement('button');
+ openFolderButton.innerText = "Open folder to see all";
+ openFolderButton.addEventListener('click', ()=>{
+ shell.showItemInFolder(data.dir);
+ });
+ screenshots.appendChild(openFolderButton);
+ }
+})