mirror of
https://github.com/OpenFusionProject/Client.git
synced 2026-02-08 17:20:04 +00:00
Compare commits
25 Commits
3c0b07e61a
...
1.4.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d4dc403e90 | ||
|
|
ab5de9488d | ||
|
|
dabb8bf484 | ||
|
|
043bf219e7 | ||
|
|
7131026b2f | ||
| 7dd018e336 | |||
|
|
e19098a13e | ||
|
|
48e2052748 | ||
|
|
7b3de1fe52 | ||
|
|
675a5fce50 | ||
|
|
2bf916ea58 | ||
|
|
d554b6b968 | ||
|
|
5da0da1981 | ||
|
|
101de9d68b | ||
|
|
d0f947c4a5 | ||
|
|
4726a50be7 | ||
|
|
3d9107a7f1 | ||
|
|
c1db7bc047 | ||
|
|
51f7eaf33d | ||
|
|
7bc438d76a | ||
|
|
f9c041edc9 | ||
|
|
fd92f2de5e | ||
|
|
51a876cf2b | ||
|
|
e2b704a701 | ||
|
|
9a083d7a04 |
33
.prettierignore
Normal file
33
.prettierignore
Normal file
@@ -0,0 +1,33 @@
|
||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.js
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
.env.local
|
||||
.env.development.local
|
||||
.env.test.local
|
||||
.env.production.local
|
||||
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
locales/
|
||||
*.pak
|
||||
*.bin
|
||||
*.php
|
||||
rankurl.txt
|
||||
icudtl.dat
|
||||
version
|
||||
resources/app/files/rankurl.txt
|
||||
node_modules/
|
||||
dist/
|
||||
UnityBugReporter.exe
|
||||
*.min.*
|
||||
12
.prettierrc
Normal file
12
.prettierrc
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"trailingComma": "es5",
|
||||
"useTabs": false,
|
||||
"tabWidth": 4,
|
||||
"singleQuote": false,
|
||||
"semi": true,
|
||||
"bracketSameLine": false,
|
||||
"bracketSpacing": true,
|
||||
"jsxSingleQuote": false,
|
||||
"quoteProps": "as-needed",
|
||||
"endOfLine": "lf"
|
||||
}
|
||||
9
.vscode/extensions.json
vendored
Normal file
9
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
// See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
|
||||
// Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
|
||||
|
||||
// List of extensions which should be recommended for users of this workspace.
|
||||
"recommendations": ["esbenp.prettier-vscode"],
|
||||
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
|
||||
"unwantedRecommendations": []
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020-2022 OpenFusion Contributors
|
||||
Copyright (c) 2020-2023 OpenFusion Contributors
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
52
README.md
52
README.md
@@ -1,2 +1,52 @@
|
||||
# OpenFusionClient
|
||||
Electron app for joining OpenFusion servers
|
||||
|
||||
[](https://github.com/OpenFusionProject/OpenFusionClient/releases/latest) [](https://discord.gg/DYavckB)[](https://github.com/OpenFusionProject/OpenFusionClient/blob/master/LICENSE.md)
|
||||
|
||||
An Electron app that allows you to easily join FusionFall servers.
|
||||
|
||||
It automatically installs FF's custom build of Unity Web Player, manages text files such as `assetInfo.php`/`loginInfo.php`, and embeds the game, all in a few clicks!
|
||||
|
||||
For an overview of how the game client worked originally, please see [this section in the OpenFusion README](https://github.com/OpenFusionProject/OpenFusion#architecture).
|
||||
|
||||
## Disclaimer
|
||||
|
||||
This repository does not contain any code from the actual FusionFall game client. **Think of it more as a launcher:** it abstracts away having to use a NPAPI plugin capable web browser, along with having to host a HTTP server for it to connect to.
|
||||
|
||||
In addition, if you are interested in contributing: do note that **this project likely cannot utilize more modern Javascript techniques**. In order to use NPAPI plugins, a very old version of Electron was needed (0.31.0). This limits the project to only a portion of ES5 in non-strict mode, and a reduced subset of Node/Electron APIs.
|
||||
|
||||
## Usage
|
||||
|
||||
Provided that you have npm installed, clone the repository, then run install like so:
|
||||
|
||||
```
|
||||
git clone https://github.com/OpenFusionProject/OpenFusionClient.git
|
||||
npm install
|
||||
```
|
||||
|
||||
After that has completed you can then test OpenFusionClient:
|
||||
|
||||
```
|
||||
npm run start
|
||||
```
|
||||
|
||||
If you would like to package it as a standalone win32 application:
|
||||
|
||||
```
|
||||
npm run pack
|
||||
```
|
||||
|
||||
You can then compress the application directory into a zip file and installer for distribution:
|
||||
|
||||
```
|
||||
npm run dist
|
||||
```
|
||||
|
||||
Before opening a PR or running pack/dist, please do a code formatting pass:
|
||||
|
||||
```
|
||||
npm run prettier
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT unless specified otherwise
|
||||
|
||||
12
assets/bootstrap/css/bootstrap.min.css
vendored
12
assets/bootstrap/css/bootstrap.min.css
vendored
File diff suppressed because one or more lines are too long
30
assets/css/bootstrap.min.css
vendored
Normal file
30
assets/css/bootstrap.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -47,31 +47,36 @@ img {
|
||||
}
|
||||
|
||||
body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
clear: both;
|
||||
user-select: none;
|
||||
background-color: #000;
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
|
||||
'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji',
|
||||
'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
||||
"Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji",
|
||||
"Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
}
|
||||
|
||||
#of-versionnumber {
|
||||
#of-versionnumberdiv {
|
||||
position: fixed;
|
||||
bottom: 4px;
|
||||
right: 8px;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-image: url('../../assets/img/btn-primary-bg.png');
|
||||
background-image: url("../../assets/img/btn-primary-bg.png");
|
||||
background-repeat: repeat;
|
||||
}
|
||||
|
||||
.btn-success {
|
||||
background-image: url('../../assets/img/btn-success-bg.png');
|
||||
background-image: url("../../assets/img/btn-success-bg.png");
|
||||
background-repeat: repeat;
|
||||
}
|
||||
|
||||
.btn-danger {
|
||||
background-image: url('../../assets/img/btn-danger-bg.png');
|
||||
background-image: url("../../assets/img/btn-danger-bg.png");
|
||||
background-repeat: repeat;
|
||||
}
|
||||
|
||||
@@ -129,3 +134,12 @@ button > i {
|
||||
#server-table .server-listing-entry {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#client {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
background: #000;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
BIN
assets/fonts/KFOlCnqEu92Fr1MmWUlvAw.ttf
Normal file
BIN
assets/fonts/KFOlCnqEu92Fr1MmWUlvAw.ttf
Normal file
Binary file not shown.
BIN
assets/fonts/KFOmCnqEu92Fr1Me5Q.ttf
Normal file
BIN
assets/fonts/KFOmCnqEu92Fr1Me5Q.ttf
Normal file
Binary file not shown.
|
Before Width: | Height: | Size: 9.6 KiB After Width: | Height: | Size: 9.6 KiB |
|
Before Width: | Height: | Size: 176 B After Width: | Height: | Size: 176 B |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
@@ -1,3 +1,3 @@
|
||||
$(document).ready(function(){
|
||||
$('[data-bs-tooltip]').tooltip();
|
||||
});
|
||||
$(document).ready(function () {
|
||||
$("[data-bs-tooltip]").tooltip();
|
||||
});
|
||||
|
||||
@@ -7,13 +7,13 @@ var christmasBegin = new Date(today.getFullYear(), 11, 23);
|
||||
var christmasEnd = new Date(today.getFullYear(), 12, 8);
|
||||
var sf;
|
||||
|
||||
if((today >= christmasBegin && today <= christmasEnd)) {
|
||||
console.log("Christmas Activated.");
|
||||
sf = new Snowflakes({zIndex: -100});
|
||||
if (today >= christmasBegin && today <= christmasEnd) {
|
||||
console.log("Christmas Activated.");
|
||||
sf = new Snowflakes({ zIndex: -100 });
|
||||
}
|
||||
|
||||
function stopEasterEggs(){
|
||||
if (sf != null) {
|
||||
sf.destroy();
|
||||
}
|
||||
function stopEasterEggs() {
|
||||
if (sf != null) {
|
||||
sf.destroy();
|
||||
}
|
||||
}
|
||||
89
assets/js/game-client.js
Normal file
89
assets/js/game-client.js
Normal file
@@ -0,0 +1,89 @@
|
||||
var ipc = require("ipc");
|
||||
var gameRunning = false;
|
||||
|
||||
// Unity invoked methods begin //
|
||||
|
||||
// Uncomment and enter credentials to skip login screen
|
||||
function authDoCallback(param) {
|
||||
/*var unity = document.getElementById('unityEmbed');
|
||||
unity.SendMessage("GlobalManager", "SetTEGid", "player");
|
||||
unity.SendMessage("GlobalManager", "SetAuthid", "0");
|
||||
unity.SendMessage("GlobalManager", "DoAuth", 0);*/
|
||||
}
|
||||
|
||||
function MarkProgress(param) {}
|
||||
|
||||
function redirect(html) {
|
||||
ipc.send("exit", 0);
|
||||
}
|
||||
function HomePage(param) {
|
||||
ipc.send("exit", 0);
|
||||
}
|
||||
function PageOut(param) {
|
||||
ipc.send("exit", 0);
|
||||
}
|
||||
function updateSocialOptions(param) {
|
||||
ipc.send("exit", 0);
|
||||
}
|
||||
function PayPage(param) {
|
||||
ipc.send("exit", 0);
|
||||
}
|
||||
|
||||
// Unity invoked methods end //
|
||||
|
||||
function onResize() {
|
||||
if (gameRunning == true) {
|
||||
var unity = document.getElementById("unityEmbed");
|
||||
unity.style.width = window.innerWidth + "px";
|
||||
unity.style.height = window.innerHeight + "px";
|
||||
}
|
||||
}
|
||||
|
||||
function launchGame() {
|
||||
gameRunning = true;
|
||||
|
||||
var sel = document.getElementById("of-serverselector");
|
||||
sel.remove();
|
||||
|
||||
document.body.style.overflow = "hidden";
|
||||
|
||||
var object = document.createElement("object");
|
||||
object.setAttribute(
|
||||
"classid",
|
||||
"clsid:444785F1-DE89-4295-863A-D46C3A781394"
|
||||
);
|
||||
object.setAttribute(
|
||||
"codebase",
|
||||
"undefined/UnityWebPlayer.cab#version=2,0,0,0"
|
||||
);
|
||||
object.setAttribute("id", "unityObject");
|
||||
object.setAttribute("width", "1264");
|
||||
object.setAttribute("height", "661");
|
||||
|
||||
var embed = document.createElement("embed");
|
||||
embed.setAttribute("type", "application/vnd.ffuwp");
|
||||
embed.setAttribute(
|
||||
"pluginspage",
|
||||
"http://www.unity3d.com/unity-web-player-2.x"
|
||||
);
|
||||
embed.setAttribute("id", "unityEmbed");
|
||||
embed.setAttribute("width", "1280");
|
||||
embed.setAttribute("height", "680");
|
||||
embed.setAttribute("src", window.assetUrl + "main.unity3d");
|
||||
embed.setAttribute("bordercolor", "000000");
|
||||
embed.setAttribute("backgroundcolor", "000000");
|
||||
embed.setAttribute("disableContextMenu", true);
|
||||
embed.setAttribute("textcolor", "ccffff");
|
||||
embed.setAttribute("logoimage", "assets/img/unity-dexlabs.png");
|
||||
embed.setAttribute("progressbarimage", "assets/img/unity-loadingbar.png");
|
||||
embed.setAttribute(
|
||||
"progressframeimage",
|
||||
"assets/img/unity-loadingframe.png"
|
||||
);
|
||||
|
||||
var div = document.getElementById("client");
|
||||
object.appendChild(embed);
|
||||
div.appendChild(object);
|
||||
document.title = "OpenFusion";
|
||||
onResize();
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
var ipc = require("ipc");
|
||||
var gameRunning = false;
|
||||
|
||||
// Unity invoked methods begin //
|
||||
|
||||
// Uncomment and enter credentials to skip login screen
|
||||
function authDoCallback(param) {
|
||||
/*var unity = document.getElementById('Unity_embed');
|
||||
unity.SendMessage("GlobalManager", "SetTEGid", "player");
|
||||
unity.SendMessage("GlobalManager", "SetAuthid", "0");
|
||||
unity.SendMessage("GlobalManager", "DoAuth", 0);*/
|
||||
}
|
||||
|
||||
function MarkProgress(param) {}
|
||||
|
||||
function redirect(html) {
|
||||
ipc.send("exit", 0);
|
||||
}
|
||||
function HomePage(param) {
|
||||
ipc.send("exit", 0);
|
||||
}
|
||||
function PageOut(param) {
|
||||
ipc.send("exit", 0);
|
||||
}
|
||||
function updateSocialOptions(param) {
|
||||
ipc.send("exit", 0);
|
||||
}
|
||||
function PayPage(param) {
|
||||
ipc.send("exit", 0);
|
||||
}
|
||||
|
||||
// Unity invoked methods end //
|
||||
|
||||
function onResize() {
|
||||
if (gameRunning == true) {
|
||||
var unity = document.getElementById('Unity_embed');
|
||||
unity.style.width = window.innerWidth + 'px';
|
||||
unity.style.height = window.innerHeight + 'px';
|
||||
}
|
||||
}
|
||||
|
||||
function launchGame() {
|
||||
gameRunning = true;
|
||||
|
||||
var sel = document.getElementById("of-serverselector");
|
||||
sel.remove();
|
||||
|
||||
document.body.style.overflow = "hidden";
|
||||
|
||||
var object = document.createElement('object');
|
||||
object.setAttribute('classid', "clsid:444785F1-DE89-4295-863A-D46C3A781394");
|
||||
object.setAttribute('codebase', "undefined/UnityWebPlayer.cab#version=2,0,0,0");
|
||||
object.setAttribute('id', "Unity_object");
|
||||
object.setAttribute('width', "1264");
|
||||
object.setAttribute('height', "661");
|
||||
|
||||
var embed = document.createElement('embed');
|
||||
embed.setAttribute('type', "application/vnd.unity");
|
||||
embed.setAttribute('pluginspage', "http://www.unity3d.com/unity-web-player-2.x");
|
||||
embed.setAttribute('id', "Unity_embed");
|
||||
embed.setAttribute('width', "1280");
|
||||
embed.setAttribute('height', "680");
|
||||
embed.setAttribute('src', window.asseturl+"main.unity3d");
|
||||
embed.setAttribute('disablecontdparaextmenu', "true");
|
||||
embed.setAttribute('bordercolor', "000000");
|
||||
embed.setAttribute('backgroundcolor', "000000");
|
||||
embed.setAttribute('disableContextMenu', true);
|
||||
embed.setAttribute('textcolor', "ccffff");
|
||||
embed.setAttribute('logoimage', "assets/img/unity_dexlabs.png");
|
||||
embed.setAttribute('progressbarimage', "assets/img/unity_loadingbar.png");
|
||||
embed.setAttribute('progressframeimage', "assets/img/unity_loadingframe.png");
|
||||
embed.setAttribute('autoupdateurlsignature', "42180ee5edc4e3d4dd706bcc17cedd8d6ec7b7ac463071fd34ab97fe181f1a78df31db5feb4526677e4f69ef53acaff44471591e68b87f041c80fd54765f0d5725b08aa28f5acf7716ffb2a04e971269f35925c7e38d57dd78f6a206530caaa3da7e32f07f19810efc0ebf29a4eae976a925ad9cc5beb4dd51564c67dc489033");
|
||||
embed.setAttribute('autoupdateurl', "http://wp-cartoonnetwork.unity3d.com/ff/big/beta-20111013/autodownload_webplugin_beta");
|
||||
|
||||
var div = document.getElementById('client');
|
||||
object.appendChild(embed);
|
||||
div.appendChild(object);
|
||||
document.title = "OpenFusion";
|
||||
onResize();
|
||||
}
|
||||
368
assets/js/server-selector.js
Normal file
368
assets/js/server-selector.js
Normal file
@@ -0,0 +1,368 @@
|
||||
var remote = require("remote");
|
||||
var remotefs = remote.require("fs-extra");
|
||||
var dns = remote.require("dns");
|
||||
|
||||
var userDir = remote.require("app").getPath("userData");
|
||||
var versionArray;
|
||||
var serverArray;
|
||||
var config;
|
||||
|
||||
function enableServerListButtons() {
|
||||
$("#of-connect-button").removeClass("disabled");
|
||||
$("#of-connect-button").prop("disabled", false);
|
||||
$("#of-editserver-button").removeClass("disabled");
|
||||
$("#of-editserver-button").prop("disabled", false);
|
||||
$("#of-deleteserver-button").removeClass("disabled");
|
||||
$("#of-deleteserver-button").prop("disabled", false);
|
||||
}
|
||||
|
||||
function disableServerListButtons() {
|
||||
$("#of-connect-button").addClass("disabled");
|
||||
$("#of-connect-button").prop("disabled", true);
|
||||
$("#of-editserver-button").addClass("disabled");
|
||||
$("#of-editserver-button").prop("disabled", true);
|
||||
$("#of-deleteserver-button").addClass("disabled");
|
||||
$("#of-deleteserver-button").prop("disabled", true);
|
||||
}
|
||||
|
||||
function getAppVersion() {
|
||||
appVersion = remote.require("app").getVersion();
|
||||
|
||||
// simplify version, ex. 1.4.0 -> 1.4,
|
||||
// but only if a revision number isn't present
|
||||
if (appVersion.endsWith(".0")) {
|
||||
return appVersion.substr(0, appVersion.length - 2);
|
||||
} else {
|
||||
return appVersion;
|
||||
}
|
||||
}
|
||||
|
||||
function setAppVersionText() {
|
||||
$("#of-aboutversionnumber").text("Version " + getAppVersion());
|
||||
$("#of-versionnumber").text("v" + getAppVersion());
|
||||
}
|
||||
|
||||
function addServer() {
|
||||
var jsonToModify = JSON.parse(
|
||||
remotefs.readFileSync(userDir + "\\servers.json")
|
||||
);
|
||||
|
||||
var server = {};
|
||||
server["uuid"] = uuidv4();
|
||||
server["description"] =
|
||||
$("#addserver-descinput").val().length == 0
|
||||
? "My OpenFusion Server"
|
||||
: $("#addserver-descinput").val();
|
||||
server["ip"] =
|
||||
$("#addserver-ipinput").val().length == 0
|
||||
? "127.0.0.1:23000"
|
||||
: $("#addserver-ipinput").val();
|
||||
server["version"] = $("#addserver-versionselect option:selected").text();
|
||||
//server['endpoint'] =
|
||||
|
||||
jsonToModify["servers"].push(server);
|
||||
|
||||
remotefs.writeFileSync(
|
||||
userDir + "\\servers.json",
|
||||
JSON.stringify(jsonToModify, null, 4)
|
||||
);
|
||||
loadServerList();
|
||||
}
|
||||
|
||||
function editServer() {
|
||||
var jsonToModify = JSON.parse(
|
||||
remotefs.readFileSync(userDir + "\\servers.json")
|
||||
);
|
||||
$.each(jsonToModify["servers"], function (key, value) {
|
||||
if (value["uuid"] == getSelectedServer()) {
|
||||
value["description"] =
|
||||
$("#editserver-descinput").val().length == 0
|
||||
? value["description"]
|
||||
: $("#editserver-descinput").val();
|
||||
value["ip"] =
|
||||
$("#editserver-ipinput").val().length == 0
|
||||
? value["ip"]
|
||||
: $("#editserver-ipinput").val();
|
||||
value["version"] = $(
|
||||
"#editserver-versionselect option:selected"
|
||||
).text();
|
||||
}
|
||||
});
|
||||
|
||||
remotefs.writeFileSync(
|
||||
userDir + "\\servers.json",
|
||||
JSON.stringify(jsonToModify, null, 4)
|
||||
);
|
||||
loadServerList();
|
||||
}
|
||||
|
||||
function deleteServer() {
|
||||
var jsonToModify = JSON.parse(
|
||||
remotefs.readFileSync(userDir + "\\servers.json")
|
||||
);
|
||||
var result = jsonToModify["servers"].filter(function (obj) {
|
||||
return obj.uuid === getSelectedServer();
|
||||
})[0];
|
||||
|
||||
var resultindex = jsonToModify["servers"].indexOf(result);
|
||||
|
||||
jsonToModify["servers"].splice(resultindex, 1);
|
||||
|
||||
remotefs.writeFileSync(
|
||||
userDir + "\\servers.json",
|
||||
JSON.stringify(jsonToModify, null, 4)
|
||||
);
|
||||
loadServerList();
|
||||
}
|
||||
|
||||
function restoreDefaultServers() {
|
||||
remotefs.copySync(
|
||||
__dirname + "\\defaults\\servers.json",
|
||||
userDir + "\\servers.json"
|
||||
);
|
||||
loadServerList();
|
||||
}
|
||||
|
||||
function loadGameVersions() {
|
||||
var versionJson = JSON.parse(
|
||||
remotefs.readFileSync(userDir + "\\versions.json")
|
||||
);
|
||||
versionArray = versionJson["versions"];
|
||||
$.each(versionArray, function (key, value) {
|
||||
$(new Option(value.name, "val")).appendTo("#addserver-versionselect");
|
||||
$(new Option(value.name, "val")).appendTo("#editserver-versionselect");
|
||||
});
|
||||
}
|
||||
|
||||
function loadConfig() {
|
||||
// load config object globally
|
||||
config = JSON.parse(remotefs.readFileSync(userDir + "\\config.json"));
|
||||
}
|
||||
|
||||
function loadServerList() {
|
||||
var serverJson = JSON.parse(
|
||||
remotefs.readFileSync(userDir + "\\servers.json")
|
||||
);
|
||||
serverArray = serverJson["servers"];
|
||||
|
||||
$(".server-listing-entry").remove(); // Clear out old stuff, if any
|
||||
disableServerListButtons(); // Disable buttons until another server is selected
|
||||
|
||||
if (serverArray.length > 0) {
|
||||
// Servers were found in the JSON
|
||||
$("#server-listing-placeholder").attr("hidden", true);
|
||||
$.each(serverArray, function (key, value) {
|
||||
// Create the row, and populate the cells
|
||||
var row = document.createElement("tr");
|
||||
row.className = "server-listing-entry";
|
||||
row.setAttribute("id", value.uuid);
|
||||
var cellName = document.createElement("td");
|
||||
cellName.textContent = value.description;
|
||||
var cellVersion = document.createElement("td");
|
||||
cellVersion.textContent = value.version;
|
||||
cellVersion.className = "text-monospace";
|
||||
|
||||
row.appendChild(cellName);
|
||||
row.appendChild(cellVersion);
|
||||
$("#server-tablebody").append(row);
|
||||
});
|
||||
} else {
|
||||
// No servers are added, make sure placeholder is visible
|
||||
$("#server-listing-placeholder").attr("hidden", false);
|
||||
}
|
||||
}
|
||||
|
||||
function performCacheSwap(newVersion) {
|
||||
var cacheRoot = userDir + "\\..\\..\\LocalLow\\Unity\\Web Player\\Cache";
|
||||
var currentCache = cacheRoot + "\\Fusionfall";
|
||||
var newCache = cacheRoot + "\\" + newVersion;
|
||||
var record = userDir + "\\.lastver";
|
||||
|
||||
// if cache renaming would result in a no-op (ex. launching the same version
|
||||
// two times), then skip it. this avoids permissions errors with multiple clients
|
||||
// (file/folder is already open in another process)
|
||||
var skip = false;
|
||||
|
||||
if (remotefs.existsSync(currentCache)) {
|
||||
// cache already exists, find out what version it belongs to
|
||||
if (remotefs.existsSync(record)) {
|
||||
lastVersion = remotefs.readFileSync(record);
|
||||
if (lastVersion != newVersion) {
|
||||
remotefs.renameSync(
|
||||
currentCache,
|
||||
cacheRoot + "\\" + lastVersion
|
||||
);
|
||||
} else {
|
||||
console.log(
|
||||
"Cached version unchanged, renaming will be skipped"
|
||||
);
|
||||
skip = true;
|
||||
}
|
||||
console.log("Current cache is " + lastVersion);
|
||||
} else {
|
||||
console.log(
|
||||
"Couldn't find last version record; cache may get overwritten"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (remotefs.existsSync(newCache) || !skip) {
|
||||
// rename saved cache to FusionFall
|
||||
remotefs.renameSync(newCache, currentCache);
|
||||
console.log("Current cache swapped to " + newVersion);
|
||||
}
|
||||
|
||||
// make note of what version we are launching for next launch
|
||||
remotefs.writeFileSync(record, newVersion);
|
||||
}
|
||||
|
||||
// For writing loginInfo.php, assetInfo.php, etc.
|
||||
function setGameInfo(serverUUID) {
|
||||
var result = serverArray.filter(function (obj) {
|
||||
return obj.uuid === serverUUID;
|
||||
})[0];
|
||||
var gameVersion = versionArray.filter(function (obj) {
|
||||
return obj.name === result.version;
|
||||
})[0];
|
||||
|
||||
// if cache swapping property exists AND is `true`, run cache swapping logic
|
||||
if (config["cache-swapping"]) {
|
||||
try {
|
||||
performCacheSwap(gameVersion.name);
|
||||
} catch (ex) {
|
||||
console.log(
|
||||
"Error when swapping cache, it may get overwritten:\n" + ex
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
window.assetUrl = gameVersion.url; // game-client.js needs to access this
|
||||
|
||||
remotefs.writeFileSync(__dirname + "\\assetInfo.php", assetUrl);
|
||||
if (result.hasOwnProperty("endpoint")) {
|
||||
var httpEndpoint = result.endpoint.replace("https://", "http://");
|
||||
remotefs.writeFileSync(
|
||||
__dirname + "\\rankurl.txt",
|
||||
httpEndpoint + "getranks"
|
||||
);
|
||||
// Write these out too
|
||||
remotefs.writeFileSync(
|
||||
__dirname + "\\sponsor.php",
|
||||
httpEndpoint + "upsell/sponsor.png"
|
||||
);
|
||||
remotefs.writeFileSync(
|
||||
__dirname + "\\images.php",
|
||||
httpEndpoint + "upsell/"
|
||||
);
|
||||
} else {
|
||||
// Remove/default the endpoint related stuff, this server won't be using it
|
||||
if (remotefs.existsSync(__dirname + "\\rankurl.txt")) {
|
||||
remotefs.unlinkSync(__dirname + "\\rankurl.txt");
|
||||
remotefs.writeFileSync(
|
||||
__dirname + "\\sponsor.php",
|
||||
"assets/img/welcome.png"
|
||||
);
|
||||
remotefs.writeFileSync(__dirname + "\\images.php", "assets/img/");
|
||||
}
|
||||
}
|
||||
|
||||
// Server address parsing
|
||||
var address;
|
||||
var port;
|
||||
var sepPos = result.ip.indexOf(":");
|
||||
if (sepPos > -1) {
|
||||
address = result.ip.substr(0, sepPos);
|
||||
port = result.ip.substr(sepPos + 1);
|
||||
} else {
|
||||
address = result.ip;
|
||||
port = 23000; // default
|
||||
}
|
||||
|
||||
// DNS resolution. there is no synchronous version for some stupid reason
|
||||
if (!address.match(/^[0-9.]+$/))
|
||||
dns.lookup(address, family=4, function (err, resolvedAddress) {
|
||||
if (!err) {
|
||||
console.log("Resolved " + address + " to " + resolvedAddress);
|
||||
address = resolvedAddress;
|
||||
} else {
|
||||
console.log("Err: " + err.code);
|
||||
}
|
||||
prepConnection(address, port);
|
||||
});
|
||||
else {
|
||||
console.log(address + " is an IP; skipping DNS lookup");
|
||||
prepConnection(address, port);
|
||||
}
|
||||
}
|
||||
|
||||
function prepConnection(address, port) {
|
||||
var full = address + ":" + port;
|
||||
console.log("Will connect to " + full);
|
||||
remotefs.writeFileSync(__dirname + "\\loginInfo.php", full);
|
||||
launchGame();
|
||||
}
|
||||
|
||||
// Returns the UUID of the server with the selected background color.
|
||||
// Yes, there are probably better ways to go about this, but it works well enough.
|
||||
function getSelectedServer() {
|
||||
return $("#server-tablebody > tr.bg-primary").prop("id");
|
||||
}
|
||||
|
||||
function connectToServer() {
|
||||
// Get ID of the selected server, which corresponds to its UUID in the json
|
||||
console.log("Connecting to server with UUID of " + getSelectedServer());
|
||||
|
||||
// Prevent the user from clicking anywhere else during the transition
|
||||
$("body,html").css("pointer-events", "none");
|
||||
stopEasterEggs();
|
||||
$("#of-serverselector").fadeOut("slow", function () {
|
||||
setTimeout(function () {
|
||||
$("body,html").css("pointer-events", "");
|
||||
setGameInfo(getSelectedServer());
|
||||
}, 200);
|
||||
});
|
||||
}
|
||||
|
||||
// If applicable, deselect currently selected server.
|
||||
function deselectServer() {
|
||||
disableServerListButtons();
|
||||
$(".server-listing-entry").removeClass("bg-primary");
|
||||
}
|
||||
|
||||
$("#server-table").on("click", ".server-listing-entry", function (event) {
|
||||
enableServerListButtons();
|
||||
$(this).addClass("bg-primary").siblings().removeClass("bg-primary");
|
||||
});
|
||||
|
||||
// QoL feature: if you double click on a server it will connect
|
||||
$("#server-table").on("dblclick", ".server-listing-entry", function (event) {
|
||||
$(this).addClass("bg-primary").siblings().removeClass("bg-primary");
|
||||
connectToServer();
|
||||
});
|
||||
|
||||
$("#of-editservermodal").on("show.bs.modal", function (e) {
|
||||
var jsonToModify = JSON.parse(
|
||||
remotefs.readFileSync(userDir + "\\servers.json")
|
||||
);
|
||||
$.each(jsonToModify["servers"], function (key, value) {
|
||||
if (value["uuid"] == getSelectedServer()) {
|
||||
$("#editserver-descinput")[0].value = value["description"];
|
||||
$("#editserver-ipinput")[0].value = value["ip"];
|
||||
|
||||
var versionIndex = -1;
|
||||
$.each($("#editserver-versionselect")[0], function (key, val) {
|
||||
if (val.text === value["version"]) {
|
||||
versionIndex = key;
|
||||
}
|
||||
});
|
||||
$("#editserver-versionselect")[0].selectedIndex = versionIndex;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$("#of-deleteservermodal").on("show.bs.modal", function (e) {
|
||||
var result = serverArray.filter(function (obj) {
|
||||
return obj.uuid === getSelectedServer();
|
||||
})[0];
|
||||
$("#deleteserver-servername").html(result.description);
|
||||
});
|
||||
@@ -1,269 +0,0 @@
|
||||
var remote = require("remote");
|
||||
var remotefs = remote.require('fs-extra');
|
||||
var dns = remote.require('dns');
|
||||
|
||||
var userdir = remote.require('app').getPath('userData');
|
||||
var versionarray;
|
||||
var serverarray;
|
||||
var config;
|
||||
|
||||
function enableServerListButtons() {
|
||||
$('#of-connect-button').removeClass('disabled');
|
||||
$('#of-connect-button').prop('disabled', false);
|
||||
$('#of-editserver-button').removeClass('disabled');
|
||||
$('#of-editserver-button').prop('disabled', false);
|
||||
$('#of-deleteserver-button').removeClass('disabled');
|
||||
$('#of-deleteserver-button').prop('disabled', false);
|
||||
}
|
||||
|
||||
function disableServerListButtons() {
|
||||
$('#of-connect-button').addClass('disabled');
|
||||
$('#of-connect-button').prop('disabled', true);
|
||||
$('#of-editserver-button').addClass('disabled');
|
||||
$('#of-editserver-button').prop('disabled', true);
|
||||
$('#of-deleteserver-button').addClass('disabled');
|
||||
$('#of-deleteserver-button').prop('disabled', true);
|
||||
}
|
||||
|
||||
function addServer() {
|
||||
var jsontomodify = JSON.parse(remotefs.readFileSync(userdir+"\\servers.json"));
|
||||
|
||||
var server = {};
|
||||
server['uuid'] = uuidv4();
|
||||
server['description'] = $("#addserver-descinput").val().length == 0 ? "My OpenFusion Server" : $("#addserver-descinput").val();
|
||||
server['ip'] = $("#addserver-ipinput").val().length == 0 ? "127.0.0.1:23000" : $("#addserver-ipinput").val();
|
||||
server['version'] = $("#addserver-versionselect option:selected").text();
|
||||
//server['endpoint'] =
|
||||
|
||||
jsontomodify['servers'].push(server);
|
||||
|
||||
remotefs.writeFileSync(userdir+"\\servers.json", JSON.stringify(jsontomodify, null, 4));
|
||||
loadServerList();
|
||||
}
|
||||
|
||||
function editServer() {
|
||||
var jsontomodify = JSON.parse(remotefs.readFileSync(userdir+"\\servers.json"));
|
||||
$.each(jsontomodify["servers"], function( key, value ) {
|
||||
if(value["uuid"] == getSelectedServer()) {
|
||||
value['description'] = $("#editserver-descinput").val().length == 0 ? value['description'] : $("#editserver-descinput").val();
|
||||
value['ip'] = $("#editserver-ipinput").val().length == 0 ? value['ip'] : $("#editserver-ipinput").val();
|
||||
value['version'] = $("#editserver-versionselect option:selected").text();
|
||||
}
|
||||
});
|
||||
|
||||
remotefs.writeFileSync(userdir+"\\servers.json", JSON.stringify(jsontomodify, null, 4));
|
||||
loadServerList();
|
||||
}
|
||||
|
||||
function deleteServer() {
|
||||
var jsontomodify = JSON.parse(remotefs.readFileSync(userdir+"\\servers.json"));
|
||||
var result = jsontomodify['servers'].filter(function(obj) {return (obj.uuid === getSelectedServer())})[0];
|
||||
|
||||
var resultindex = jsontomodify['servers'].indexOf(result);
|
||||
|
||||
jsontomodify['servers'].splice(resultindex, 1);
|
||||
|
||||
remotefs.writeFileSync(userdir+"\\servers.json", JSON.stringify(jsontomodify, null, 4));
|
||||
loadServerList();
|
||||
}
|
||||
|
||||
function restoreDefaultServers() {
|
||||
remotefs.copySync(__dirname+"\\defaults\\servers.json", userdir+"\\servers.json");
|
||||
loadServerList();
|
||||
}
|
||||
|
||||
function loadGameVersions() {
|
||||
var versionjson = JSON.parse(remotefs.readFileSync(userdir+"\\versions.json"));
|
||||
versionarray = versionjson['versions'];
|
||||
$.each(versionarray, function( key, value ) {
|
||||
$(new Option(value.name, 'val')).appendTo('#addserver-versionselect');
|
||||
$(new Option(value.name, 'val')).appendTo('#editserver-versionselect');
|
||||
});
|
||||
}
|
||||
|
||||
function loadConfig() {
|
||||
// load config object globally
|
||||
config = JSON.parse(remotefs.readFileSync(userdir+"\\config.json"));
|
||||
}
|
||||
|
||||
function loadServerList() {
|
||||
var serverjson = JSON.parse(remotefs.readFileSync(userdir+"\\servers.json"));
|
||||
serverarray = serverjson['servers'];
|
||||
|
||||
$(".server-listing-entry").remove(); // Clear out old stuff, if any
|
||||
disableServerListButtons(); // Disable buttons until another server is selected
|
||||
|
||||
if (serverarray.length > 0) {
|
||||
// Servers were found in the JSON
|
||||
$("#server-listing-placeholder").attr("hidden",true);
|
||||
$.each(serverarray, function( key, value ) {
|
||||
// Create the row, and populate the cells
|
||||
var row = document.createElement('tr');
|
||||
row.className = 'server-listing-entry';
|
||||
row.setAttribute('id', value.uuid);
|
||||
var cellName = document.createElement('td');
|
||||
cellName.textContent = value.description;
|
||||
var cellVersion = document.createElement('td');
|
||||
cellVersion.textContent = value.version;
|
||||
cellVersion.className = 'text-monospace';
|
||||
|
||||
row.appendChild(cellName);
|
||||
row.appendChild(cellVersion);
|
||||
$("#server-tablebody").append(row);
|
||||
});
|
||||
} else {
|
||||
// No servers are added, make sure placeholder is visible
|
||||
$("#server-listing-placeholder").attr("hidden",false);
|
||||
}
|
||||
}
|
||||
|
||||
// For writing loginInfo.php, assetInfo.php, etc.
|
||||
function setGameInfo(serverUUID) {
|
||||
var result = serverarray.filter(function(obj) {return (obj.uuid === serverUUID);})[0];
|
||||
var gameversion = versionarray.filter(function(obj) {return (obj.name === result.version);})[0];
|
||||
|
||||
if(config['cache-swapping']) { // if cache swapping property exists AND is `true`, run cache swapping logic
|
||||
// Cache folder renaming
|
||||
var cachedir = userdir + '\\..\\..\\LocalLow\\Unity\\Web Player\\Cache';
|
||||
var curversion = cachedir + '\\Fusionfall';
|
||||
var newversion = cachedir + '\\' + gameversion.name;
|
||||
var record = userdir + '\\.lastver';
|
||||
|
||||
if (remotefs.existsSync(curversion)) {
|
||||
// cache already exists
|
||||
// find out what version it belongs to
|
||||
if (remotefs.existsSync(record)) {
|
||||
var lastversion = remotefs.readFileSync(record);
|
||||
remotefs.renameSync(curversion, cachedir + '\\' + lastversion);
|
||||
console.log('Cached version ' + lastversion);
|
||||
} else {
|
||||
console.log(
|
||||
"Couldn't find last version record; cache may get overwritten"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (remotefs.existsSync(newversion)) {
|
||||
// rename saved cache to FusionFall
|
||||
remotefs.renameSync(newversion, curversion);
|
||||
console.log('Loaded cached ' + gameversion.name);
|
||||
}
|
||||
|
||||
// make note of what version we are launching for next launch
|
||||
remotefs.writeFileSync(record, gameversion.name);
|
||||
}
|
||||
|
||||
window.asseturl = gameversion.url; // gameclient.js needs to access this
|
||||
|
||||
remotefs.writeFileSync(__dirname+"\\assetInfo.php", asseturl);
|
||||
if (result.hasOwnProperty('endpoint')) {
|
||||
var httpendpoint = result.endpoint.replace("https://", "http://");
|
||||
remotefs.writeFileSync(__dirname+"\\rankurl.txt", httpendpoint+"getranks");
|
||||
// Write these out too
|
||||
remotefs.writeFileSync(__dirname+"\\sponsor.php", httpendpoint+"upsell/sponsor.png");
|
||||
remotefs.writeFileSync(__dirname+"\\images.php", httpendpoint+"upsell/");
|
||||
} else {
|
||||
// Remove/default the endpoint related stuff, this server won't be using it
|
||||
if (remotefs.existsSync(__dirname+"\\rankurl.txt")) {
|
||||
remotefs.unlinkSync(__dirname+"\\rankurl.txt");
|
||||
remotefs.writeFileSync(__dirname+"\\sponsor.php", "assets/img/welcome.png");
|
||||
remotefs.writeFileSync(__dirname+"\\images.php", "assets/img/");
|
||||
}
|
||||
}
|
||||
|
||||
// Server address parsing
|
||||
var address;
|
||||
var port;
|
||||
var sepPos = result.ip.indexOf(":");
|
||||
if (sepPos > -1) {
|
||||
address = result.ip.substr(0, sepPos);
|
||||
port = result.ip.substr(sepPos + 1);
|
||||
} else {
|
||||
address = result.ip;
|
||||
port = 23000 // default
|
||||
}
|
||||
|
||||
// DNS resolution. there is no synchronous version for some stupid reason
|
||||
if(!address.match(/^[0-9.]+$/)) dns.resolve4(address, function(err, res) {
|
||||
if(!err) {
|
||||
console.log("Resolved " + address + " to " + res[0]);
|
||||
address = res[0];
|
||||
} else {
|
||||
console.log("Err: " + err.code);
|
||||
}
|
||||
prepConnection(address, port);
|
||||
});
|
||||
else {
|
||||
console.log(address + " is an IP; skipping DNS lookup");
|
||||
prepConnection(address, port);
|
||||
}
|
||||
}
|
||||
|
||||
function prepConnection(address, port) {
|
||||
var full = address + ":" + port;
|
||||
console.log("Will connect to " + full);
|
||||
remotefs.writeFileSync(__dirname+"\\loginInfo.php", full);
|
||||
launchGame();
|
||||
}
|
||||
|
||||
// Returns the UUID of the server with the selected background color.
|
||||
// Yes, there are probably better ways to go about this, but it works well enough.
|
||||
function getSelectedServer() {
|
||||
return $("#server-tablebody > tr.bg-primary").prop("id");
|
||||
}
|
||||
|
||||
function connectToServer() {
|
||||
// Get ID of the selected server, which corresponds to its UUID in the json
|
||||
console.log("Connecting to server with UUID of " + getSelectedServer());
|
||||
|
||||
// Prevent the user from clicking anywhere else during the transition
|
||||
$('body,html').css('pointer-events','none');
|
||||
stopEasterEggs();
|
||||
$('#of-serverselector').fadeOut('slow', function() {
|
||||
setTimeout(function(){
|
||||
$('body,html').css('pointer-events','');
|
||||
setGameInfo(getSelectedServer());
|
||||
}, 200);
|
||||
});
|
||||
}
|
||||
|
||||
// If applicable, deselect currently selected server.
|
||||
function deselectServer() {
|
||||
disableServerListButtons();
|
||||
$(".server-listing-entry").removeClass('bg-primary');
|
||||
}
|
||||
|
||||
$('#server-table').on('click', '.server-listing-entry', function(event) {
|
||||
enableServerListButtons();
|
||||
$(this).addClass('bg-primary').siblings().removeClass('bg-primary');
|
||||
});
|
||||
|
||||
// QoL feature: if you double click on a server it will connect
|
||||
$('#server-table').on('dblclick', '.server-listing-entry', function(event) {
|
||||
$(this).addClass('bg-primary').siblings().removeClass('bg-primary');
|
||||
connectToServer();
|
||||
});
|
||||
|
||||
$('#of-editservermodal').on('show.bs.modal', function (e) {
|
||||
|
||||
var jsontomodify = JSON.parse(remotefs.readFileSync(userdir+"\\servers.json"));
|
||||
$.each(jsontomodify["servers"], function( key, value ) {
|
||||
if(value["uuid"] == getSelectedServer()) {
|
||||
$("#editserver-descinput")[0].value = value['description'];
|
||||
$("#editserver-ipinput")[0].value = value['ip'];
|
||||
|
||||
var versionIndex = -1;
|
||||
$.each($("#editserver-versionselect")[0], function( key, val ) {
|
||||
if(val.text === value['version']) {
|
||||
versionIndex = key;
|
||||
}
|
||||
});
|
||||
$("#editserver-versionselect")[0].selectedIndex = versionIndex;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
$('#of-deleteservermodal').on('show.bs.modal', function (e) {
|
||||
var result = serverarray.filter(function(obj) {return (obj.uuid === getSelectedServer());})[0];
|
||||
$("#deleteserver-servername").html(result.description);
|
||||
});
|
||||
8
build/OpenFusionClient.exe.manifest
Normal file
8
build/OpenFusionClient.exe.manifest
Normal file
@@ -0,0 +1,8 @@
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
|
||||
<asmv3:application>
|
||||
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">
|
||||
<activeCodePage>UTF-8</activeCodePage>
|
||||
<dpiAware>true</dpiAware>
|
||||
</asmv3:windowsSettings>
|
||||
</asmv3:application>
|
||||
</assembly>
|
||||
@@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<plist>
|
||||
<dict>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2.5.5b4</string>
|
||||
<key>UnityBuildNumber</key>
|
||||
<string>50</string>
|
||||
</dict>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<plist>
|
||||
<dict>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2.5.5b4</string>
|
||||
<key>UnityBuildNumber</key>
|
||||
<string>50</string>
|
||||
</dict>
|
||||
</plist>
|
||||
Binary file not shown.
@@ -1,9 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<plist>
|
||||
<dict>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>3.5.2f2</string>
|
||||
<key>UnityBuildNumber</key>
|
||||
<string>4c6ee796dacc</string>
|
||||
</dict>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<plist>
|
||||
<dict>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2.5.5b4</string>
|
||||
<key>UnityBuildNumber</key>
|
||||
<string>50</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,13 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<plist>
|
||||
<dict>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2.5.5b4</string>
|
||||
<key>UnityBuildNumber</key>
|
||||
<string>50</string>
|
||||
<key>monoVersion</key>
|
||||
<string>fusion-2.x.x</string>
|
||||
<key>monoMinimumRevision</key>
|
||||
<string>2.0.0f6</string>
|
||||
</dict>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<plist>
|
||||
<dict>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2.5.5b4</string>
|
||||
<key>UnityBuildNumber</key>
|
||||
<string>50</string>
|
||||
<key>monoVersion</key>
|
||||
<string>fusion-2.x.x</string>
|
||||
<key>monoMinimumRevision</key>
|
||||
<string>2.0.0f6</string>
|
||||
</dict>
|
||||
</plist>
|
||||
28
build/after-pack.js
Normal file
28
build/after-pack.js
Normal file
@@ -0,0 +1,28 @@
|
||||
const fs = require('fs');
|
||||
const defaultDir = './dist/win-ia32-unpacked/resources/default_app'
|
||||
const exeFile = './dist/win-ia32-unpacked/OpenFusionClient.exe'
|
||||
|
||||
exports.default = function() {
|
||||
// remove leftover files from default electron app
|
||||
fs.rm(defaultDir, { recursive: true }, (err) => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
});
|
||||
// patch executable for large address awareness
|
||||
fs.open(exeFile, "r+", (err, fd) => {
|
||||
if(!err) {
|
||||
fs.write(
|
||||
fd, new Uint8Array([0x22]), 0, 1, 0x166,
|
||||
(err) => {
|
||||
if(err) {
|
||||
throw err;
|
||||
}
|
||||
fs.closeSync(fd);
|
||||
}
|
||||
);
|
||||
} else {
|
||||
throw err;
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
const fs = require('fs');
|
||||
const dir = './dist/win-ia32-unpacked/resources/default_app'
|
||||
|
||||
exports.default = async function(context) {
|
||||
fs.rmdir(dir, { recursive: true }, (err) => {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
});
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,5 +0,0 @@
|
||||
PUSHD %~dp0
|
||||
.\UnityWebPlayer.exe /quiet /S
|
||||
robocopy WebPlayer "%USERPROFILE%\AppData\LocalLow\Unity\WebPlayer" /s /e
|
||||
del "%USERPROFILE%\AppData\LocalLow\Unity\WebPlayer\UnityBugReporter.exe"
|
||||
POPD
|
||||
@@ -2,4 +2,4 @@
|
||||
"autoupdate-check": true,
|
||||
"cache-swapping": true,
|
||||
"last-version-initialized": "1.4"
|
||||
}
|
||||
}
|
||||
|
||||
563
index.html
563
index.html
@@ -1,139 +1,472 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta
|
||||
http-equiv="Content-Type"
|
||||
contentType="text/html; charset=UTF-8"
|
||||
/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>OpenFusion: Server Selector</title>
|
||||
<link rel="stylesheet" href="assets/css/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="assets/fonts/fontawesome-all.min.css" />
|
||||
<link rel="stylesheet" href="assets/css/openfusion.css" />
|
||||
<link rel="stylesheet" href="assets/css/styles.css" />
|
||||
</head>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||
<title>OpenFusion: Server Selector</title>
|
||||
<link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="assets/fonts/fontawesome-all.min.css">
|
||||
<link rel="stylesheet" href="assets/css/openfusion.css">
|
||||
<link rel="stylesheet" href="assets/css/styles.css">
|
||||
</head>
|
||||
|
||||
<body style="background: rgb(0,0,0);width: 100%;height: 100%;margin: 0;padding: 0;clear:both;" onresize="onResize()">
|
||||
<section id="of-serverselector">
|
||||
<div class="container" id="serverselector-container">
|
||||
<div class="row text-center mt-3" id="of-logoheader">
|
||||
<div class="col"><img class="img-fluid" id="of-logo" src="assets/img/of-3.png" width="256">
|
||||
<p id="of-intro-text">Welcome to OpenFusion.<br>Select a server from the list below to get started.</p>
|
||||
<body onresize="onResize()">
|
||||
<section id="of-serverselector">
|
||||
<div class="container" id="serverselector-container">
|
||||
<div class="row text-center mt-3" id="of-logoheader">
|
||||
<div class="col">
|
||||
<img
|
||||
class="img-fluid"
|
||||
id="of-logo"
|
||||
src="assets/img/of-3.png"
|
||||
width="256"
|
||||
/>
|
||||
<p id="of-intro-text">
|
||||
Welcome to OpenFusion.<br />Select a server from the
|
||||
list below to get started.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row d-sm-flex d-xl-flex justify-content-center justify-content-sm-center justify-content-xl-center" id="of-serverlist">
|
||||
<div class="col-8 mb-2">
|
||||
<div class="table-responsive text-center border rounded border-primary" id="server-table">
|
||||
<table class="table table-striped table-hover mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Description</th>
|
||||
<th>Game Version</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="server-tablebody">
|
||||
<tr id="server-listing-placeholder">
|
||||
<td colspan="2">No servers added yet... perhaps you should find one?</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div
|
||||
class="row d-sm-flex d-xl-flex justify-content-center justify-content-sm-center justify-content-xl-center"
|
||||
id="of-serverlist"
|
||||
>
|
||||
<div class="col-8 mb-2">
|
||||
<div
|
||||
class="table-responsive text-center border rounded border-primary"
|
||||
id="server-table"
|
||||
>
|
||||
<table class="table table-striped table-hover mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Description</th>
|
||||
<th>Game Version</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody id="server-tablebody">
|
||||
<tr id="server-listing-placeholder">
|
||||
<td colspan="2">
|
||||
No servers added yet... perhaps you
|
||||
should find one?
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="row row-cols-2 d-xl-flex justify-content-center justify-content-xl-center"
|
||||
id="of-serverbuttons"
|
||||
style="padding-bottom: 16px"
|
||||
>
|
||||
<div
|
||||
class="col-4 text-left d-inline-flex justify-content-xl-start"
|
||||
>
|
||||
<button
|
||||
class="btn btn-success mr-1"
|
||||
data-toggle="modal"
|
||||
data-bs-tooltip=""
|
||||
data-placement="bottom"
|
||||
id="of-addserver-button"
|
||||
type="button"
|
||||
title="Add Server"
|
||||
data-target="#of-addservermodal"
|
||||
onclick="deselectServer()"
|
||||
>
|
||||
<i class="fas fa-plus"></i>
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-primary mr-1 disabled"
|
||||
data-toggle="modal"
|
||||
data-bs-tooltip=""
|
||||
data-placement="bottom"
|
||||
id="of-editserver-button"
|
||||
type="button"
|
||||
title="Edit Server"
|
||||
data-target="#of-editservermodal"
|
||||
disabled=""
|
||||
>
|
||||
<i class="fas fa-edit"></i>
|
||||
</button>
|
||||
<button
|
||||
class="btn btn-danger mr-1 disabled"
|
||||
data-toggle="modal"
|
||||
data-bs-tooltip=""
|
||||
data-placement="bottom"
|
||||
id="of-deleteserver-button"
|
||||
type="button"
|
||||
title="Delete Server"
|
||||
data-target="#of-deleteservermodal"
|
||||
disabled=""
|
||||
>
|
||||
<i class="fas fa-trash-alt"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-4 d-inline-flex justify-content-end">
|
||||
<button
|
||||
class="btn btn-primary disabled"
|
||||
id="of-connect-button"
|
||||
type="button"
|
||||
onclick="connectToServer()"
|
||||
disabled=""
|
||||
>
|
||||
Connect <i
|
||||
class="fas fa-angle-double-right"
|
||||
></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row row-cols-2 d-xl-flex justify-content-center justify-content-xl-center" id="of-serverbuttons" style="padding-bottom: 16px;">
|
||||
<div class="col-4 text-left d-inline-flex justify-content-xl-start">
|
||||
<button class="btn btn-success mr-1" data-toggle="modal" data-bs-tooltip="" data-placement="bottom" id="of-addserver-button" type="button" title="Add Server" data-target="#of-addservermodal" onclick="deselectServer()"><i class="fas fa-plus"></i></button>
|
||||
<button class="btn btn-primary mr-1 disabled" data-toggle="modal" data-bs-tooltip="" data-placement="bottom" id="of-editserver-button" type="button" title="Edit Server" data-target="#of-editservermodal" disabled=""><i class="fas fa-edit"></i></button>
|
||||
<button class="btn btn-danger mr-1 disabled" data-toggle="modal" data-bs-tooltip="" data-placement="bottom" id="of-deleteserver-button" type="button" title="Delete Server" data-target="#of-deleteservermodal" disabled=""><i class="fas fa-trash-alt"></i></button>
|
||||
</div>
|
||||
<div class="col-4 d-inline-flex justify-content-end">
|
||||
<button class="btn btn-primary disabled" id="of-connect-button" type="button" onclick="connectToServer()" disabled="">Connect <i class="fas fa-angle-double-right"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" role="dialog" tabindex="-1" id="of-aboutmodal">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">About OpenFusionClient</h4><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p class="text-monospace">Version 1.4</p>
|
||||
<p>©2020-2022 OpenFusion Contributors<br>OpenFusion is licensed under MIT.<br></p>
|
||||
<a href="#of-restoreserversmodal" onclick="$('#of-aboutmodal').modal('toggle')" data-toggle="modal" data-target="#of-restoreserversmodal">Reset to Default Servers</a>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="row flex-fill">
|
||||
<div class="col"><button class="btn btn-primary border rounded border-primary pb-1 pt-1 mr-2 pl-2 pr-2" data-toggle="tooltip" data-bs-tooltip="" type="button" title="Github Page" onclick="window.open('https://github.com/OpenFusionProject/OpenFusion','_blank');"><i class="fab fa-github" style="font-size: 24px;"></i></button><button class="btn btn-primary border rounded border-primary pb-1 pt-1 pl-2 pr-2" data-toggle="tooltip" data-bs-tooltip="" type="button" title="Discord Chat" onclick="window.open('https://discord.gg/DYavckB','_blank');"><i class="fab fa-discord" style="font-size: 24px; position:relative; top: 1px;"></i></button></div>
|
||||
<div class="col text-right"><button class="btn btn-primary border rounded border-primary" type="button" data-dismiss="modal">Close</button></div>
|
||||
<div
|
||||
class="modal fade"
|
||||
role="dialog"
|
||||
tabindex="-1"
|
||||
id="of-aboutmodal"
|
||||
>
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">About OpenFusionClient</h4>
|
||||
<button
|
||||
type="button"
|
||||
class="close"
|
||||
data-dismiss="modal"
|
||||
aria-label="Close"
|
||||
>
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p
|
||||
id="of-aboutversionnumber"
|
||||
class="text-monospace"
|
||||
>
|
||||
APP_VERSION_NUMBER
|
||||
</p>
|
||||
<p>
|
||||
©2020-2023 OpenFusion Contributors<br />OpenFusion
|
||||
is licensed under MIT.<br />
|
||||
</p>
|
||||
<a
|
||||
href="#of-restoreserversmodal"
|
||||
onclick="$('#of-aboutmodal').modal('toggle')"
|
||||
data-toggle="modal"
|
||||
data-target="#of-restoreserversmodal"
|
||||
>Reset to Default Servers</a
|
||||
>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="row flex-fill">
|
||||
<div class="col">
|
||||
<button
|
||||
class="btn btn-primary border rounded border-primary pb-1 pt-1 mr-2 pl-2 pr-2"
|
||||
data-toggle="tooltip"
|
||||
data-bs-tooltip=""
|
||||
type="button"
|
||||
title="Github Page"
|
||||
onclick="window.open('https://github.com/OpenFusionProject/OpenFusion','_blank');"
|
||||
>
|
||||
<i
|
||||
class="fab fa-github"
|
||||
style="font-size: 24px"
|
||||
></i></button
|
||||
><button
|
||||
class="btn btn-primary border rounded border-primary pb-1 pt-1 pl-2 pr-2"
|
||||
data-toggle="tooltip"
|
||||
data-bs-tooltip=""
|
||||
type="button"
|
||||
title="Discord Chat"
|
||||
onclick="window.open('https://discord.gg/DYavckB','_blank');"
|
||||
>
|
||||
<i
|
||||
class="fab fa-discord"
|
||||
style="
|
||||
font-size: 24px;
|
||||
position: relative;
|
||||
top: 1px;
|
||||
"
|
||||
></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col text-right">
|
||||
<button
|
||||
class="btn btn-primary border rounded border-primary"
|
||||
type="button"
|
||||
data-dismiss="modal"
|
||||
>
|
||||
Close
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" role="dialog" tabindex="-1" id="of-addservermodal">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Add Server</h4><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<div
|
||||
class="modal fade"
|
||||
role="dialog"
|
||||
tabindex="-1"
|
||||
id="of-addservermodal"
|
||||
>
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Add Server</h4>
|
||||
<button
|
||||
type="button"
|
||||
class="close"
|
||||
data-dismiss="modal"
|
||||
aria-label="Close"
|
||||
>
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form id="addserver-form" class="needs-validation">
|
||||
<label for="addserver-descinput"
|
||||
>Server Description</label
|
||||
><input
|
||||
class="form-control form-row w-75"
|
||||
type="text"
|
||||
id="addserver-descinput"
|
||||
placeholder="My OpenFusion Server"
|
||||
required=""
|
||||
minlength="1"
|
||||
maxlength="70"
|
||||
/><label for="addserver-ipinput"
|
||||
>Server IP</label
|
||||
><input
|
||||
class="form-control form-row w-75"
|
||||
type="text"
|
||||
id="addserver-ipinput"
|
||||
placeholder="127.0.0.1:23000"
|
||||
required=""
|
||||
pattern="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]):[0-9]+$"
|
||||
/><label for="addserver-versionselect"
|
||||
>Game Version: </label
|
||||
><select
|
||||
class="form-control w-50"
|
||||
id="addserver-versionselect"
|
||||
required=""
|
||||
style="margin-left: -5px"
|
||||
></select>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button
|
||||
class="btn btn-primary border rounded border-primary btn-danger border-danger"
|
||||
id="addserver-cancel"
|
||||
type="button"
|
||||
data-dismiss="modal"
|
||||
>
|
||||
Cancel</button
|
||||
><button
|
||||
class="btn btn-primary border rounded border-primary btn-success border-success"
|
||||
id="addserver-savebutton"
|
||||
type="submit"
|
||||
data-dismiss="modal"
|
||||
form="addserver-form"
|
||||
onclick="addServer();"
|
||||
>
|
||||
Save
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form id="addserver-form" class="needs-validation"><label for="addserver-descinput">Server Description</label><input class="form-control form-row w-75" type="text" id="addserver-descinput" placeholder="My OpenFusion Server" required="" minlength="1" maxlength="70"><label for="addserver-ipinput">Server IP</label><input class="form-control form-row w-75" type="text" id="addserver-ipinput" placeholder="127.0.0.1:23000" required="" pattern="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]):[0-9]+$"><label for="addserver-versionselect">Game Version: </label><select class="form-control w-50" id="addserver-versionselect" required="" style="margin-left: -5px;"></select></form>
|
||||
</div>
|
||||
<div class="modal-footer"><button class="btn btn-primary border rounded border-primary btn-danger border-danger" id="addserver-cancel" type="button" data-dismiss="modal">Cancel</button><button class="btn btn-primary border rounded border-primary btn-success border-success" id="addserver-savebutton" type="submit" data-dismiss="modal" form="addserver-form" onclick="addServer();">Save</button></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" role="dialog" tabindex="-1" id="of-editservermodal">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Edit Server</h4><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<div
|
||||
class="modal fade"
|
||||
role="dialog"
|
||||
tabindex="-1"
|
||||
id="of-editservermodal"
|
||||
>
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Edit Server</h4>
|
||||
<button
|
||||
type="button"
|
||||
class="close"
|
||||
data-dismiss="modal"
|
||||
aria-label="Close"
|
||||
>
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form id="editserver-form" class="needs-validation">
|
||||
<label for="editserver-descinput"
|
||||
>Server Description</label
|
||||
><input
|
||||
class="form-control form-row w-75"
|
||||
type="text"
|
||||
id="editserver-descinput"
|
||||
placeholder="My OpenFusion Server"
|
||||
required=""
|
||||
minlength="1"
|
||||
maxlength="70"
|
||||
/><label for="addserver-ipinput"
|
||||
>Server IP</label
|
||||
><input
|
||||
class="form-control form-row w-75"
|
||||
type="text"
|
||||
id="editserver-ipinput"
|
||||
placeholder="127.0.0.1:23000"
|
||||
required=""
|
||||
pattern="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]):[0-9]+$"
|
||||
/><label for="editserver-versionselect"
|
||||
>Game Version: </label
|
||||
><select
|
||||
class="form-control w-50"
|
||||
id="editserver-versionselect"
|
||||
required=""
|
||||
style="margin-left: -5px"
|
||||
></select>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button
|
||||
class="btn btn-primary border rounded border-primary btn-danger border-danger"
|
||||
id="editserver-cancel"
|
||||
type="button"
|
||||
data-dismiss="modal"
|
||||
>
|
||||
Cancel</button
|
||||
><button
|
||||
class="btn btn-primary border rounded border-primary btn-success border-success"
|
||||
id="addserver-savebutton"
|
||||
type="submit"
|
||||
data-dismiss="modal"
|
||||
form="editserver-form"
|
||||
onclick="editServer();"
|
||||
>
|
||||
Save
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form id="editserver-form" class="needs-validation"><label for="editserver-descinput">Server Description</label><input class="form-control form-row w-75" type="text" id="editserver-descinput" placeholder="My OpenFusion Server" required="" minlength="1" maxlength="70"><label for="addserver-ipinput">Server IP</label><input class="form-control form-row w-75" type="text" id="editserver-ipinput" placeholder="127.0.0.1:23000" required="" pattern="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]):[0-9]+$"><label for="editserver-versionselect">Game Version: </label><select class="form-control w-50" id="editserver-versionselect" required="" style="margin-left: -5px;"></select></form>
|
||||
</div>
|
||||
<div class="modal-footer"><button class="btn btn-primary border rounded border-primary btn-danger border-danger" id="editserver-cancel" type="button" data-dismiss="modal">Cancel</button><button class="btn btn-primary border rounded border-primary btn-success border-success" id="addserver-savebutton" type="submit" data-dismiss="modal" form="editserver-form" onclick="editServer();">Save</button></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" role="dialog" tabindex="-1" id="of-deleteservermodal">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Are you sure?</h4><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<div
|
||||
class="modal fade"
|
||||
role="dialog"
|
||||
tabindex="-1"
|
||||
id="of-deleteservermodal"
|
||||
>
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Are you sure?</h4>
|
||||
<button
|
||||
type="button"
|
||||
class="close"
|
||||
data-dismiss="modal"
|
||||
aria-label="Close"
|
||||
>
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p class="lead">
|
||||
Do you really want to delete<br />"<a
|
||||
id="deleteserver-servername"
|
||||
>SERVER_NAME</a
|
||||
>"?<br /><br />You could always re-add it later.
|
||||
</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button
|
||||
class="btn btn-primary border rounded border-primary"
|
||||
type="button"
|
||||
data-dismiss="modal"
|
||||
>
|
||||
Cancel</button
|
||||
><button
|
||||
class="btn btn-primary border rounded border-primary btn-danger border-danger"
|
||||
id="deleteserver-button"
|
||||
type="button"
|
||||
data-dismiss="modal"
|
||||
onclick="deleteServer();"
|
||||
>
|
||||
Yes, Delete
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p class="lead">Do you really want to delete<br>"<a id="deleteserver-servername">SERVER_NAME</a>"?<br><br>You could always re-add it later.</p>
|
||||
</div>
|
||||
<div class="modal-footer"><button class="btn btn-primary border rounded border-primary" type="button" data-dismiss="modal">Cancel</button><button class="btn btn-primary border rounded border-primary btn-danger border-danger" id="deleteserver-button" type="button" data-dismiss="modal" onclick="deleteServer();">Yes, Delete</button></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal fade" role="dialog" tabindex="-1" id="of-restoreserversmodal">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Are you sure?</h4><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<div
|
||||
class="modal fade"
|
||||
role="dialog"
|
||||
tabindex="-1"
|
||||
id="of-restoreserversmodal"
|
||||
>
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h4 class="modal-title">Are you sure?</h4>
|
||||
<button
|
||||
type="button"
|
||||
class="close"
|
||||
data-dismiss="modal"
|
||||
aria-label="Close"
|
||||
>
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p class="lead">
|
||||
Do you really want to restore the default
|
||||
servers?
|
||||
</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button
|
||||
class="btn btn-primary border rounded border-primary"
|
||||
type="button"
|
||||
data-dismiss="modal"
|
||||
>
|
||||
Cancel</button
|
||||
><button
|
||||
class="btn btn-primary border rounded border-primary btn-danger border-danger"
|
||||
id="deleteserver-button"
|
||||
type="button"
|
||||
data-dismiss="modal"
|
||||
onclick="restoreDefaultServers();"
|
||||
>
|
||||
Yes, Restore
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p class="lead">Do you really want to restore the default servers?</p>
|
||||
</div>
|
||||
<div class="modal-footer"><button class="btn btn-primary border rounded border-primary" type="button" data-dismiss="modal">Cancel</button><button class="btn btn-primary border rounded border-primary btn-danger border-danger" id="deleteserver-button" type="button" data-dismiss="modal" onclick="restoreDefaultServers();">Yes, Restore</button></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="of-versionnumber"><a class="text-monospace text-secondary" href="#of-aboutmodal" data-toggle="modal" data-target="#of-aboutmodal">v1.4</a></div>
|
||||
</section>
|
||||
<section>
|
||||
<div id="client" style="width: 100%;height: 100%;margin: 0;padding: 0;background: #000;clear:both;"></div>
|
||||
</section>
|
||||
<script src="assets/js/jquery.min.js" onload="window.$ = window.jQuery = module.exports;"></script>
|
||||
<script src="assets/bootstrap/js/bootstrap.min.js"></script>
|
||||
<script src="assets/js/bs-init.js"></script>
|
||||
<script src="assets/js/uuidv4.min.js"></script>
|
||||
<script src="assets/js/serverselector.js"></script>
|
||||
<script src="assets/js/gameclient.js"></script>
|
||||
<script src="assets/js/snowflakes.min.js"></script>
|
||||
<script src="assets/js/eastereggs.js"></script>
|
||||
</body>
|
||||
|
||||
<div id="of-versionnumberdiv">
|
||||
<a
|
||||
id="of-versionnumber"
|
||||
class="text-monospace text-secondary"
|
||||
href="#of-aboutmodal"
|
||||
data-toggle="modal"
|
||||
data-target="#of-aboutmodal"
|
||||
>v0</a
|
||||
>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<div id="client"></div>
|
||||
</section>
|
||||
<script
|
||||
src="assets/js/jquery.min.js"
|
||||
onload="window.$ = window.jQuery = module.exports;"
|
||||
></script>
|
||||
<script src="assets/js/bootstrap.min.js"></script>
|
||||
<script src="assets/js/bs-init.js"></script>
|
||||
<script src="assets/js/uuidv4.min.js"></script>
|
||||
<script src="assets/js/server-selector.js"></script>
|
||||
<script src="assets/js/game-client.js"></script>
|
||||
<script src="assets/js/snowflakes.min.js"></script>
|
||||
<script src="assets/js/easter-eggs.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
258
index.js
258
index.js
@@ -1,134 +1,180 @@
|
||||
var app = require('app'); // Module to control application life.
|
||||
var ipc = require('ipc');
|
||||
var fs = require('fs-extra');
|
||||
var os = require('os');
|
||||
var dialog = require('dialog');
|
||||
var BrowserWindow = require('browser-window');
|
||||
var app = require("app"); // Module to control application life.
|
||||
var ipc = require("ipc");
|
||||
var fs = require("fs-extra");
|
||||
var os = require("os");
|
||||
var dialog = require("dialog");
|
||||
var BrowserWindow = require("browser-window");
|
||||
|
||||
var mainWindow = null;
|
||||
app.commandLine.appendSwitch("enable-npapi");
|
||||
app.commandLine.appendSwitch("no-proxy-server");
|
||||
|
||||
app.commandLine.appendSwitch('--enable-npapi');
|
||||
var userData = app.getPath("userData");
|
||||
var unityHomeDir = __dirname + "\\..\\..\\WebPlayer";
|
||||
// if running in non-packaged / development mode, this dir will be slightly different
|
||||
if (process.env.npm_node_execpath) {
|
||||
unityHomeDir = app.getAppPath() + "\\build\\WebPlayer";
|
||||
}
|
||||
|
||||
process.env["UNITY_HOME_DIR"] = unityHomeDir;
|
||||
process.env["UNITY_DISABLE_PLUGIN_UPDATES"] = "yes";
|
||||
|
||||
function initialSetup(firstTime) {
|
||||
// Display a small window to inform the user that the app is working
|
||||
setupWindow = new BrowserWindow({width: 275, height: 450, resizable: false, center:true, frame:false});
|
||||
setupWindow.loadUrl('file://' + __dirname + '/initialsetup.html');
|
||||
// Exec installUnity.bat and wait for it to finish.
|
||||
var child = require('child_process').spawn('cmd.exe', ['/c', 'utils\\installUnity.bat']);
|
||||
child.on('exit', function() {
|
||||
console.log("Unity installed.");
|
||||
if(!firstTime) { // migration from pre-1.4
|
||||
// Back everything up, just in case
|
||||
fs.copySync(app.getPath('userData')+"\\config.json", app.getPath('userData')+"\\config.json.bak");
|
||||
fs.copySync(app.getPath('userData')+"\\servers.json", app.getPath('userData')+"\\servers.json.bak");
|
||||
fs.copySync(app.getPath('userData')+"\\versions.json", app.getPath('userData')+"\\versions.json.bak");
|
||||
} else { // first-time setup
|
||||
// Copy default servers
|
||||
fs.copySync(__dirname+"\\defaults\\servers.json", app.getPath('userData')+"\\servers.json");
|
||||
// Display a small window to inform the user that the app is working
|
||||
setupWindow = new BrowserWindow({
|
||||
width: 275,
|
||||
height: 450,
|
||||
resizable: false,
|
||||
center: true,
|
||||
frame: false,
|
||||
});
|
||||
if (!firstTime) {
|
||||
// migration from pre-1.4
|
||||
// Back everything up, just in case
|
||||
setupWindow.loadUrl("file://" + __dirname + "/initial-setup.html");
|
||||
fs.copySync(userData + "\\config.json", userData + "\\config.json.bak");
|
||||
fs.copySync(
|
||||
userData + "\\servers.json",
|
||||
userData + "\\servers.json.bak"
|
||||
);
|
||||
fs.copySync(
|
||||
userData + "\\versions.json",
|
||||
userData + "\\versions.json.bak"
|
||||
);
|
||||
} else {
|
||||
// first-time setup
|
||||
// Copy default servers
|
||||
fs.copySync(
|
||||
__dirname + "\\defaults\\servers.json",
|
||||
userData + "\\servers.json"
|
||||
);
|
||||
}
|
||||
|
||||
// Copy default versions and config
|
||||
fs.copySync(__dirname+"\\defaults\\versions.json", app.getPath('userData')+"\\versions.json");
|
||||
fs.copySync(__dirname+"\\defaults\\config.json", app.getPath('userData')+"\\config.json");
|
||||
|
||||
fs.copySync(
|
||||
__dirname + "\\defaults\\versions.json",
|
||||
userData + "\\versions.json"
|
||||
);
|
||||
fs.copySync(
|
||||
__dirname + "\\defaults\\config.json",
|
||||
userData + "\\config.json"
|
||||
);
|
||||
|
||||
console.log("JSON files copied.");
|
||||
setupWindow.destroy();
|
||||
showMainWindow();
|
||||
})
|
||||
}
|
||||
|
||||
ipc.on("exit", function(id) {
|
||||
mainWindow.destroy();
|
||||
ipc.on("exit", function (id) {
|
||||
mainWindow.destroy();
|
||||
});
|
||||
|
||||
// Quit when all windows are closed.
|
||||
app.on('window-all-closed', function() {
|
||||
if (process.platform != 'darwin')
|
||||
app.quit();
|
||||
app.on("window-all-closed", function () {
|
||||
if (process.platform != "darwin") app.quit();
|
||||
});
|
||||
|
||||
app.on('ready', function() {
|
||||
|
||||
// Check just in case the user forgot to extract the zip.
|
||||
zip_check = app.getPath('exe').includes(os.tmpdir());
|
||||
if (zip_check) {
|
||||
errormsg =
|
||||
( "It has been detected that OpenFusionClient is running from the TEMP folder.\n\n"+
|
||||
"Please extract the entire Client folder to a location of your choice before starting OpenFusionClient.");
|
||||
dialog.showErrorBox("Error!", errormsg);
|
||||
return;
|
||||
}
|
||||
|
||||
// Create the browser window.
|
||||
mainWindow = new BrowserWindow({width: 1280, height: 720, show: false, "web-preferences": {"plugins": true}});
|
||||
mainWindow.setMinimumSize(640, 480);
|
||||
|
||||
// Check for first run
|
||||
var configPath = app.getPath('userData') + "\\config.json";
|
||||
try {
|
||||
if (!fs.existsSync(configPath)) {
|
||||
console.log("Config file not found. Running initial setup.");
|
||||
initialSetup(true);
|
||||
} else {
|
||||
var config = fs.readJsonSync(configPath);
|
||||
if(!config['last-version-initialized']) {
|
||||
console.log("Pre-1.4 config detected. Running migration.");
|
||||
initialSetup(false);
|
||||
} else {
|
||||
showMainWindow();
|
||||
}
|
||||
app.on("ready", function () {
|
||||
// Check just in case the user forgot to extract the zip.
|
||||
zipCheck = app.getPath("exe").includes(os.tmpdir());
|
||||
if (zipCheck) {
|
||||
var errorMessage =
|
||||
"It has been detected that OpenFusionClient is running from the TEMP folder.\n\n" +
|
||||
"Please extract the entire Client folder to a location of your choice before starting OpenFusionClient.";
|
||||
dialog.showErrorBox("Error!", errorMessage);
|
||||
return;
|
||||
}
|
||||
} catch(e) {
|
||||
console.log("An error occurred while checking for the config.");
|
||||
}
|
||||
// Create the browser window.
|
||||
mainWindow = new BrowserWindow({
|
||||
width: 1280,
|
||||
height: 720,
|
||||
show: false,
|
||||
"web-preferences": {
|
||||
plugins: true,
|
||||
"extra-plugin-dirs": [unityHomeDir + "\\loader"],
|
||||
},
|
||||
});
|
||||
mainWindow.setMinimumSize(640, 480);
|
||||
|
||||
// Makes it so external links are opened in the system browser, not Electron
|
||||
mainWindow.webContents.on('new-window', function(e, url) {
|
||||
e.preventDefault();
|
||||
require('shell').openExternal(url);
|
||||
});
|
||||
// Check for first run
|
||||
var configPath = userData + "\\config.json";
|
||||
try {
|
||||
if (!fs.existsSync(configPath)) {
|
||||
console.log("Config file not found. Running initial setup.");
|
||||
initialSetup(true);
|
||||
} else {
|
||||
var config = fs.readJsonSync(configPath);
|
||||
if (!config["last-version-initialized"]) {
|
||||
console.log("Pre-1.4 config detected. Running migration.");
|
||||
initialSetup(false);
|
||||
} else {
|
||||
showMainWindow();
|
||||
}
|
||||
}
|
||||
} catch (ex) {
|
||||
dialog.showErrorBox(
|
||||
"Error!",
|
||||
"An error occurred while checking for the config. Make sure you have sufficent permissions."
|
||||
);
|
||||
app.quit();
|
||||
}
|
||||
|
||||
mainWindow.on('closed', function() {
|
||||
mainWindow = null;
|
||||
});
|
||||
// Makes it so external links are opened in the system browser, not Electron
|
||||
mainWindow.webContents.on("new-window", function (event, url) {
|
||||
event.preventDefault();
|
||||
require("shell").openExternal(url);
|
||||
});
|
||||
|
||||
mainWindow.on("closed", function () {
|
||||
mainWindow = null;
|
||||
});
|
||||
});
|
||||
|
||||
function showMainWindow() {
|
||||
// Load the index.html of the app.
|
||||
mainWindow.loadUrl('file://' + __dirname + '/index.html');
|
||||
// Load the index.html of the app.
|
||||
mainWindow.loadUrl("file://" + __dirname + "/index.html");
|
||||
|
||||
// Reduces white flash when opening the program
|
||||
mainWindow.webContents.on('did-finish-load', function() {
|
||||
mainWindow.show();
|
||||
// everything's loaded, tell the renderer process to do its thing
|
||||
mainWindow.webContents.executeJavaScript("loadConfig();");
|
||||
mainWindow.webContents.executeJavaScript("loadGameVersions();");
|
||||
mainWindow.webContents.executeJavaScript("loadServerList();");
|
||||
});
|
||||
// Reduces white flash when opening the program
|
||||
mainWindow.webContents.on("did-finish-load", function () {
|
||||
mainWindow.webContents.executeJavaScript("setAppVersionText();");
|
||||
mainWindow.show();
|
||||
// everything's loaded, tell the renderer process to do its thing
|
||||
mainWindow.webContents.executeJavaScript("loadConfig();");
|
||||
mainWindow.webContents.executeJavaScript("loadGameVersions();");
|
||||
mainWindow.webContents.executeJavaScript("loadServerList();");
|
||||
});
|
||||
|
||||
mainWindow.webContents.on('plugin-crashed', function() {
|
||||
console.log("Unity Web Player crashed.");
|
||||
});
|
||||
mainWindow.webContents.on("plugin-crashed", function () {
|
||||
var errorMessage =
|
||||
"Unity Web Player has crashed - please re-open the application.\n" +
|
||||
"If this error persists, please read the FAQ or ask for support in our Discord server.";
|
||||
dialog.showErrorBox("Error!", errorMessage);
|
||||
mainWindow.destroy();
|
||||
app.quit();
|
||||
});
|
||||
|
||||
mainWindow.webContents.on('will-navigate', function(evt, url) {
|
||||
evt.preventDefault();
|
||||
// TODO: showMessageBox rather than showErrorBox?
|
||||
switch (url) {
|
||||
case "https://audience.fusionfall.com/ff/regWizard.do?_flowId=fusionfall-registration-flow":
|
||||
errormsg =
|
||||
( "The register page is currently unimplemented.\n\n"+
|
||||
"You can still create an account: type your desired username and password into the provided boxes and click \"Log In\". "+
|
||||
"Your account will then be automatically created on the server. \nBe sure to remember these details!");
|
||||
dialog.showErrorBox("Sorry!", errormsg);
|
||||
break;
|
||||
case "https://audience.fusionfall.com/ff/login.do":
|
||||
dialog.showErrorBox("Sorry!", "Account management is not available.");
|
||||
break;
|
||||
case "http://forums.fusionfall.com/":
|
||||
require('shell').openExternal("https://discord.gg/DYavckB");
|
||||
break;
|
||||
default:
|
||||
mainWindow.webContents.loadURL(url);
|
||||
}
|
||||
});
|
||||
mainWindow.webContents.on("will-navigate", function (event, url) {
|
||||
event.preventDefault();
|
||||
// TODO: showMessageBox rather than showErrorBox?
|
||||
switch (url) {
|
||||
case "https://audience.fusionfall.com/ff/regWizard.do?_flowId=fusionfall-registration-flow":
|
||||
var errorMessage =
|
||||
"The register page is currently unimplemented.\n\n" +
|
||||
'You can still create an account: type your desired username and password into the provided boxes and click "Log In". ' +
|
||||
"Your account will then be automatically created on the server. \nBe sure to remember these details!";
|
||||
dialog.showErrorBox("Sorry!", errorMessage);
|
||||
break;
|
||||
case "https://audience.fusionfall.com/ff/login.do":
|
||||
dialog.showErrorBox(
|
||||
"Sorry!",
|
||||
"Account management is not available."
|
||||
);
|
||||
break;
|
||||
case "http://forums.fusionfall.com/":
|
||||
require("shell").openExternal("https://discord.gg/DYavckB");
|
||||
break;
|
||||
default:
|
||||
mainWindow.loadUrl(url);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
40
initial-setup.html
Normal file
40
initial-setup.html
Normal file
@@ -0,0 +1,40 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>OpenFusion: Initial Setup</title>
|
||||
</head>
|
||||
<body
|
||||
style="
|
||||
overflow: hidden;
|
||||
background-color: #000;
|
||||
user-select: none;
|
||||
-webkit-user-select: none;
|
||||
"
|
||||
>
|
||||
<center>
|
||||
<div>
|
||||
<img src="assets/img/of-3.png" width="256" />
|
||||
<div>
|
||||
<img src="assets/img/spinner.gif" width="50px" />
|
||||
</div>
|
||||
<div style="margin-top: 15px">
|
||||
<p
|
||||
style="
|
||||
text-shadow: 1px 1px 8px #4349c4;
|
||||
color: #4a76b7;
|
||||
font-size: 18px;
|
||||
font-family: -apple-system, BlinkMacSystemFont,
|
||||
'Segoe UI', Roboto, 'Helvetica Neue', Arial,
|
||||
'Noto Sans', sans-serif, 'Apple Color Emoji',
|
||||
'Segoe UI Emoji', 'Segoe UI Symbol',
|
||||
'Noto Color Emoji';
|
||||
"
|
||||
>
|
||||
OpenFusion is setting up...<br />Please wait - this
|
||||
should take <br />less than a minute.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</center>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,18 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>OpenFusion: Initial Setup</title>
|
||||
</head>
|
||||
<body style="overflow:hidden;background-color:#000;user-select:none;-webkit-user-select:none;">
|
||||
<center>
|
||||
<div><img src="assets/img/of-3.png" width="256">
|
||||
<div>
|
||||
<img src="assets/img/spinner.gif" width=50px/>
|
||||
</div>
|
||||
<div style="margin-top: 15px;">
|
||||
<p style='text-shadow:1px 1px 8px #4349C4;color:#4A76B7;font-size:18px;font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";'>OpenFusion is setting up...<br>Please wait - this should take <br>less than a minute.</p>
|
||||
</div>
|
||||
</div>
|
||||
</center>
|
||||
</body>
|
||||
</html>
|
||||
16093
package-lock.json
generated
16093
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
138
package.json
138
package.json
@@ -1,69 +1,79 @@
|
||||
{
|
||||
"name": "openfusionclient",
|
||||
"version": "1.4.0",
|
||||
"description": "OpenFusionClient",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"postinstall": "npx patch-package && npm explore electron-prebuilt -- npm run postinstall",
|
||||
"start": "electron .",
|
||||
"build": "node build.js",
|
||||
"pack": "electron-builder --win --ia32 --dir",
|
||||
"dist": "electron-builder --win --ia32"
|
||||
},
|
||||
"author": "OpenFusion Contributors",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"electron-prebuilt": "^0.31.2",
|
||||
"patch-package": "^6.4.7",
|
||||
"electron-builder": "^22.10.5"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/OpenFusionProject/Client.git"
|
||||
},
|
||||
"build": {
|
||||
"appId": "xyz.openfusion.client",
|
||||
"productName": "OpenFusionClient",
|
||||
"copyright": "© 2020-2022 OpenFusion Contributors",
|
||||
"electronDownload": {
|
||||
"version": "0.31.2",
|
||||
"platform": "win32",
|
||||
"arch": "ia32"
|
||||
"name": "OpenFusionClient",
|
||||
"version": "1.4.2",
|
||||
"description": "OpenFusionClient",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"postinstall": "npx patch-package && npm explore electron-prebuilt -- npm run postinstall",
|
||||
"start": "electron .",
|
||||
"pack": "electron-builder --win --ia32 --dir",
|
||||
"dist": "electron-builder --win --ia32",
|
||||
"prettier": "npx prettier --write ."
|
||||
},
|
||||
"electronVersion": "0.31.2",
|
||||
"win": {
|
||||
"asar": false,
|
||||
"target": [
|
||||
{
|
||||
"target": "nsis",
|
||||
"arch": "ia32"
|
||||
"author": "OpenFusion Contributors",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"electron-builder": "^22.14.13",
|
||||
"electron-prebuilt": "^0.31.2",
|
||||
"patch-package": "^6.5.1",
|
||||
"prettier": "^2.7.1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/OpenFusionProject/OpenFusionClient.git"
|
||||
},
|
||||
"build": {
|
||||
"appId": "xyz.openfusion.client",
|
||||
"productName": "OpenFusionClient",
|
||||
"copyright": "© 2020-2023 OpenFusion Contributors",
|
||||
"electronDownload": {
|
||||
"version": "0.31.2",
|
||||
"platform": "win32",
|
||||
"arch": "ia32"
|
||||
},
|
||||
{
|
||||
"target": "zip",
|
||||
"arch": "ia32"
|
||||
}
|
||||
]
|
||||
"electronVersion": "0.31.2",
|
||||
"win": {
|
||||
"asar": false,
|
||||
"target": [
|
||||
{
|
||||
"target": "nsis",
|
||||
"arch": "ia32"
|
||||
},
|
||||
{
|
||||
"target": "zip",
|
||||
"arch": "ia32"
|
||||
}
|
||||
]
|
||||
},
|
||||
"nsis": {
|
||||
"createDesktopShortcut": true,
|
||||
"createStartMenuShortcut": true
|
||||
},
|
||||
"files": [
|
||||
"!patches${/*}",
|
||||
"!.vscode${/*}",
|
||||
"!*.php",
|
||||
"!rankurl.txt",
|
||||
"!README.md",
|
||||
"!LICENSE.md",
|
||||
"!.npmrc",
|
||||
"!.prettierrc",
|
||||
"!.prettierignore"
|
||||
],
|
||||
"extraFiles": [
|
||||
"LICENSE.md",
|
||||
{
|
||||
"from": "build/OpenFusionClient.exe.manifest",
|
||||
"to": "OpenFusionClient.exe.manifest"
|
||||
},
|
||||
{
|
||||
"from": "build/WebPlayer",
|
||||
"to": "WebPlayer"
|
||||
}
|
||||
],
|
||||
"afterPack": "./build/after-pack.js"
|
||||
},
|
||||
"nsis": {
|
||||
"createDesktopShortcut": true,
|
||||
"createStartMenuShortcut": true
|
||||
},
|
||||
"files": [
|
||||
"!patches${/*}",
|
||||
"!*.php",
|
||||
"!rankurl.txt",
|
||||
"!README.md",
|
||||
"!.npmrc"
|
||||
],
|
||||
"extraFiles": [
|
||||
{
|
||||
"from": "build/utils",
|
||||
"to": "utils"
|
||||
}
|
||||
],
|
||||
"afterPack": "./build/delete-default-app.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"fs-extra": "^0.30.0"
|
||||
}
|
||||
"dependencies": {
|
||||
"fs-extra": "2.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user