diff --git a/src/core/communication/connections/SocketConnection.ts b/src/core/communication/connections/SocketConnection.ts index 3114ef41..658aa3a7 100644 --- a/src/core/communication/connections/SocketConnection.ts +++ b/src/core/communication/connections/SocketConnection.ts @@ -194,12 +194,12 @@ export class SocketConnection extends EventDispatcher implements IConnection if(!encoded) { - if(Nitro.instance.getConfiguration('communication.packet.log')) console.log(`Encoding Failed: ${ composer.constructor.name }`); + if(Nitro.instance.getConfiguration('system.packet.log')) console.log(`Encoding Failed: ${ composer.constructor.name }`); continue; } - if(Nitro.instance.getConfiguration('communication.packet.log')) console.log(`OutgoingComposer: [${ header }] ${ composer.constructor.name }`, message); + if(Nitro.instance.getConfiguration('system.packet.log')) console.log(`OutgoingComposer: [${ header }] ${ composer.constructor.name }`, message); this.write(encoded.getBuffer()); } @@ -257,7 +257,7 @@ export class SocketConnection extends EventDispatcher implements IConnection if(!messages || !messages.length) continue; - if(Nitro.instance.getConfiguration('communication.packet.log')) + if(Nitro.instance.getConfiguration('system.packet.log')) { console.log(`IncomingMessage: [${ wrapper.header }] ${ messages[0].constructor.name }`, messages[0].parser); } @@ -291,7 +291,7 @@ export class SocketConnection extends EventDispatcher implements IConnection if(!events || !events.length) { - if(Nitro.instance.getConfiguration('communication.packet.log')) + if(Nitro.instance.getConfiguration('system.packet.log')) { console.log(`IncomingMessage: [${ wrapper.header }] UNREGISTERED`, wrapper); } diff --git a/src/core/configuration/ConfigurationManager.ts b/src/core/configuration/ConfigurationManager.ts index bcd93c31..2bb63b45 100644 --- a/src/core/configuration/ConfigurationManager.ts +++ b/src/core/configuration/ConfigurationManager.ts @@ -6,12 +6,14 @@ import { IConfigurationManager } from './IConfigurationManager'; export class ConfigurationManager extends NitroManager implements IConfigurationManager { private _definitions: AdvancedMap; + private _pendingUrls: string[]; constructor() { super(); this._definitions = new AdvancedMap(); + this._pendingUrls = []; this.onConfigurationLoaded = this.onConfigurationLoaded.bind(this); } @@ -19,7 +21,38 @@ export class ConfigurationManager extends NitroManager implements IConfiguration protected onInit(): void { //@ts-ignore - this.loadConfigurationFromUrl(NitroConfig.configurationUrl); + let urls: string[] = NitroConfig.configurationUrls; + + if(!urls || !urls.length) + { + //@ts-ignore + const url: string = NitroConfig.configurationUrl; + + if(url && url.length) urls = [ url ]; + } + + if(!urls || !urls.length) + { + this.dispatchConfigurationEvent(ConfigurationEvent.FAILED); + + return; + } + + this._pendingUrls = urls; + + this.loadNextConfiguration(); + } + + private loadNextConfiguration(): void + { + if(!this._pendingUrls.length) + { + this.dispatchConfigurationEvent(ConfigurationEvent.LOADED); + + return; + } + + this.loadConfigurationFromUrl(this._pendingUrls[0]); } public loadConfigurationFromUrl(url: string): void @@ -33,17 +66,21 @@ export class ConfigurationManager extends NitroManager implements IConfiguration fetch(url) .then(response => response.json()) - .then(data => this.onConfigurationLoaded(data)) + .then(data => this.onConfigurationLoaded(data, url)) .catch(err => this.onConfigurationFailed(err)); } - private onConfigurationLoaded(data: { [index: string]: any }): void + private onConfigurationLoaded(data: { [index: string]: any }, url: string): void { if(!data) return; if(this.parseConfiguration(data)) { - this.dispatchConfigurationEvent(ConfigurationEvent.LOADED); + const index = this._pendingUrls.indexOf(url); + + if(index >= 0) this._pendingUrls.splice(index, 1); + + this.loadNextConfiguration(); return; } diff --git a/src/nitro/Nitro.ts b/src/nitro/Nitro.ts index 76add94c..e8e99999 100644 --- a/src/nitro/Nitro.ts +++ b/src/nitro/Nitro.ts @@ -217,8 +217,8 @@ export class Nitro extends Application implements INitro private onConfigurationLoadedEvent(event: ConfigurationEvent): void { - const animationFPS = this.getConfiguration('animation.fps', 24); - const limitsFPS = this.getConfiguration('limits.fps', true); + const animationFPS = this.getConfiguration('system.animation.fps', 24); + const limitsFPS = this.getConfiguration('system.limits.fps', true); if(limitsFPS) Nitro.instance.ticker.maxFPS = animationFPS; } diff --git a/src/nitro/communication/demo/NitroCommunicationDemo.ts b/src/nitro/communication/demo/NitroCommunicationDemo.ts index d4cec0a6..e61307f2 100644 --- a/src/nitro/communication/demo/NitroCommunicationDemo.ts +++ b/src/nitro/communication/demo/NitroCommunicationDemo.ts @@ -84,7 +84,7 @@ export class NitroCommunicationDemo extends NitroManager this.dispatchCommunicationDemoEvent(NitroCommunicationDemoEvent.CONNECTION_ESTABLISHED, connection); - if(Nitro.instance.getConfiguration('communication.pong.manually', false)) this.startPonging(); + if(Nitro.instance.getConfiguration('system.pong.manually', false)) this.startPonging(); this.startHandshake(connection); @@ -177,7 +177,7 @@ export class NitroCommunicationDemo extends NitroManager { this.stopPonging(); - this._pongInterval = setInterval(this.sendPong, Nitro.instance.getConfiguration('communication.pong.interval.ms', 20000)); + this._pongInterval = setInterval(this.sendPong, Nitro.instance.getConfiguration('system.pong.interval.ms', 20000)); } private stopPonging(): void diff --git a/src/nitro/room/object/visualization/room/rasterizer/animated/LandscapeRasterizer.ts b/src/nitro/room/object/visualization/room/rasterizer/animated/LandscapeRasterizer.ts index c3cbae31..7945794f 100644 --- a/src/nitro/room/object/visualization/room/rasterizer/animated/LandscapeRasterizer.ts +++ b/src/nitro/room/object/visualization/room/rasterizer/animated/LandscapeRasterizer.ts @@ -139,8 +139,8 @@ export class LandscapeRasterizer extends PlaneRasterizer const assetId = item.assetId; const x = this.getCoordinateValue(item.x || '', item.randomX || ''); const y = this.getCoordinateValue(item.y || '', item.randomY || ''); - const speedX = item.speedX ? item.speedX / Nitro.instance.getConfiguration('animation.fps') : 0; - const speedY = item.speedY ? item.speedY / Nitro.instance.getConfiguration('animation.fps') : 0; + const speedX = item.speedX ? item.speedX / Nitro.instance.getConfiguration('system.animation.fps') : 0; + const speedY = item.speedY ? item.speedY / Nitro.instance.getConfiguration('system.animation.fps') : 0; animationItems.push({ asset: assetId, diff --git a/src/room/renderer/RoomSpriteCanvas.ts b/src/room/renderer/RoomSpriteCanvas.ts index b8a3d732..14b40908 100644 --- a/src/room/renderer/RoomSpriteCanvas.ts +++ b/src/room/renderer/RoomSpriteCanvas.ts @@ -74,7 +74,7 @@ export class RoomSpriteCanvas implements IRoomRenderingCanvas this._container = container; this._geometry = new RoomGeometry(scale, new Vector3d(-135, 30, 0), new Vector3d(11, 11, 5), new Vector3d(-135, 0.5, 0)); - this._animationFPS = Nitro.instance.getConfiguration('animation.fps', 24); + this._animationFPS = Nitro.instance.getConfiguration('system.animation.fps', 24); this._renderTimestamp = 0; this._totalTimeRunning = 0; this._lastFrame = 0;