Further work on discord rich presence. Current implementation is untested.

This commit is contained in:
Daniel Scalzi
2017-12-03 02:13:42 -05:00
parent 98684a9c1f
commit a4012458be
5 changed files with 53 additions and 31 deletions

View File

@@ -3,6 +3,7 @@ const path = require('path')
const {AssetGuard} = require(path.join(__dirname, 'assets', 'js', 'assetguard.js'))
const ProcessBuilder = require(path.join(__dirname, 'assets', 'js', 'processbuilder.js'))
const ConfigManager = require(path.join(__dirname, 'assets', 'js', 'configmanager.js'))
const DiscordWrapper = require(path.join(__dirname, 'assets', 'js', 'discordwrapper.js'))
document.addEventListener('readystatechange', function(){
if (document.readyState === 'interactive'){
@@ -95,6 +96,14 @@ testdownloads = async function(){
}
}
proc.stdout.on('data', tempListener)
// Init Discord Hook (Untested)
const distro = AssetGuard.retrieveDistributionDataSync(ConfigManager.getGameDirectory)
if(distro.discord != null && serv.discord != null){
DiscordWrapper.initRPC(distro.discord, serv.discord)
proc.on('close', (code, signal) => {
DiscordWrapper.shutdownRPC()
})
}
} catch(err) {
//det_text.innerHTML = 'Error: ' + err.message;
det_text.innerHTML = 'Error: See log for details..';

View File

@@ -42,10 +42,7 @@ const DEFAULT_CONFIG = {
clientToken: uuidV4(),
selectedServer: null, // Resolved
selectedAccount: null,
authenticationDatabase: [],
discord: {
clientID: 385581240906022916
}
authenticationDatabase: []
}
let config = null;
@@ -123,25 +120,6 @@ exports.setSelectedServer = function(serverID){
//TODO Write Authentication Database/Selected Account accessors here
/**
* Retrieve the launcher's Discord Client ID.
*
* @param {Boolean} def - optional. If true, the default value will be returned.
* @returns {String} - the launcher's Discord Client ID.
*/
exports.getDiscordClientID = function(def = false){
return !def ? config.discord.clientID : DEFAULT_CONFIG.discord.clientID
}
/**
* Set the launcher's Discord Client ID.
*
* @param {String} clientID - the launcher's new Discord Client ID.
*/
exports.setDiscordClientID = function(clientID){
config.discord.clientID = clientID
}
// User Configurable Settings
// Java Settings

View File

@@ -4,24 +4,37 @@ const ConfigManager = require('./configmanager.js')
let rpc
function initRPC(){
exports.initRPC = function(genSettings, servSettings){
rpc = new Client({ transport: 'ipc' });
rpc.login(ConfigManager.getDiscordClientID()).catch(error => {
rpc.on('ready', () => {
const activity = {
// state = top text
// details = bottom text
state: 'Server: ' + settings.shortId,
details: '',
largeImageKey: servSettings.largeImageKey,
largeImageText: serSettings.largeImageText,
smallImageKey: genSettings.smallImageKey,
smallImageText: genSettings.smallImageText,
startTimestamp: new Date().getTime() / 1000,
instance: false
}
rpc.setActivity(activity)
})
rpc.login(genSettings.clientID()).catch(error => {
if(error.message.includes('ENOENT')) {
console.log('Unable to initialize Discord Rich Presence, no client detected.')
} else {
console.log('Unable to initialize Discord Rich Presence: ' + error.message)
}
})
const activity = {
details: 'Playing on WesterosCraft',
}
}
function shutdownRPC(){
exports.shutdownRPC = function(){
rpc.setActivity({})
rpc.destroy()
rpc = null
}