From 1d2243b0fd839fef7d67c021ca584a6fb41f3426 Mon Sep 17 00:00:00 2001 From: Kyle69 <69420kyle@gmail.com> Date: Wed, 20 Jul 2022 13:12:13 -0700 Subject: [PATCH] Change ige.server.developerClientId to an array developerClientIds --- server/server.js | 15 ++++++++------- src/gameClasses/Player.js | 4 ++++ src/gameClasses/components/GameComponent.js | 6 ++---- .../components/script/VariableComponent.js | 8 ++++++-- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/server/server.js b/server/server.js index 42c582e4..d92b7d91 100644 --- a/server/server.js +++ b/server/server.js @@ -77,6 +77,7 @@ var Server = IgeClass.extend({ self.postReqTimestamps = [] self.started_at = new Date(); self.lastSnapshot = []; + self.developerClientIds = []; self.logTriggers = { @@ -521,14 +522,14 @@ var Server = IgeClass.extend({ // send dev logs to developer every second var logInterval = setInterval(function () { // send only if developer client is connect - if (ige.isServer && ((self.developerClientId && ige.server.clients[self.developerClientId]) || process.env.ENV == 'standalone')) { + if (ige.isServer && self.developerClientIds.length) { ige.variable.devLogs.status = ige.server.getStatus(); - ige.network.send('devLogs', ige.variable.devLogs, self.developerClientId); - - if (ige.script.errorLogs != {}) { - ige.network.send('errorLogs', ige.script.errorLogs, self.developerClientId); - ige.script.errorLogs = {}; - } + const sendErrors = Object.keys(ige.script.errorLogs).length; + self.developerClientIds.forEach(id => { + ige.network.send('devLogs', ige.variable.devLogs, id); + if (sendErrors) ige.network.send('errorLogs', ige.script.errorLogs, id); + }); + if (sendErrors) ige.script.errorLogs = {}; } ige.physicsTickCount = 0; ige.unitBehaviourCount = 0; diff --git a/src/gameClasses/Player.js b/src/gameClasses/Player.js index 299b0769..064e4541 100644 --- a/src/gameClasses/Player.js +++ b/src/gameClasses/Player.js @@ -352,6 +352,10 @@ var Player = IgeEntity.extend({ }, remove: function () { + if (ige.isServer) { + const i = ige.server.developerClientIds.indexOf(this._stats.clientId); + if (i != -1) ige.server.developerClientIds.splice(i, 1); + } if (this._stats.controlledBy == 'human' && ige.script) // do not send trigger for neutral player { ige.trigger.fire('playerLeavesGame', { playerId: this.id() }); diff --git a/src/gameClasses/components/GameComponent.js b/src/gameClasses/components/GameComponent.js index b617a401..508a1cd7 100644 --- a/src/gameClasses/components/GameComponent.js +++ b/src/gameClasses/components/GameComponent.js @@ -121,9 +121,7 @@ var GameComponent = IgeEntity.extend({ var isOwner = ige.server.owner == data._id; var isInvitedUser = false; if (ige.game.data.defaultData && ige.game.data.defaultData.invitedUsers) { - isInvitedUser = ige.game.data.defaultData.invitedUsers.includes( - data._id - ); + isInvitedUser = ige.game.data.defaultData.invitedUsers.some(e => e._id == data._id); } var isUserAdmin = false; var isUserMod = false; @@ -136,7 +134,7 @@ var GameComponent = IgeEntity.extend({ // if User/Admin has access to game then show developer logs if (isOwner || isInvitedUser || isUserAdmin) { GameComponent.prototype.log(`owner connected. _id: ${data._id}`); - ige.server.developerClientId = data.clientId; + ige.server.developerClientIds.push(data.clientId); } } diff --git a/src/gameClasses/components/script/VariableComponent.js b/src/gameClasses/components/script/VariableComponent.js index 307edf32..cddc5c2f 100644 --- a/src/gameClasses/components/script/VariableComponent.js +++ b/src/gameClasses/components/script/VariableComponent.js @@ -2005,10 +2005,14 @@ var VariableComponent = IgeEntity.extend({ updateDevConsole: function (data) { var self = this; // if a developer is connected, send - if (ige.isServer && (ige.server.developerClientId || process.env.ENV === 'standalone' || process.env.ENV == 'standalone-remote')) { + if (ige.isServer && (ige.server.developerClientIds.length || process.env.ENV === 'standalone' || process.env.ENV == 'standalone-remote')) { // only show 'object' string if env variable is object if (typeof data.params.newValue == 'object') { - self.devLogs[data.params.variableName] = `object ${(data.params.newValue._stats) ? `(${data.params.newValue._category}): ${data.params.newValue._stats.name}` : ''}`; + if (data.params.newValue._stats) { + self.devLogs[data.params.variableName] = `object (${data.params.newValue._category}): ${data.params.newValue._stats.name}`; + } else { + self.devLogs[data.params.variableName] = 'object'; + } } else // otherwise, show the actual value { self.devLogs[data.params.variableName] = data.params.newValue;