From 50b80b6eaee2ceaa3eae6b2236e9df98b8495382 Mon Sep 17 00:00:00 2001 From: Bill Date: Fri, 1 Apr 2022 16:05:02 -0400 Subject: [PATCH] Small changes --- src/nitro/INitro.ts | 2 ++ src/nitro/Nitro.ts | 13 ++++++++----- .../parser/inventory/badges/BadgesParser.ts | 19 ++++++++++++------- .../localization/NitroLocalizationManager.ts | 17 ++++++++++++++++- 4 files changed, 38 insertions(+), 13 deletions(-) diff --git a/src/nitro/INitro.ts b/src/nitro/INitro.ts index 813299bb..ea44c39c 100644 --- a/src/nitro/INitro.ts +++ b/src/nitro/INitro.ts @@ -13,6 +13,7 @@ import { INitroLocalizationManager } from './localization/INitroLocalizationMana import { IRoomEngine } from './room/IRoomEngine'; import { IRoomSessionManager } from './session/IRoomSessionManager'; import { ISessionDataManager } from './session/ISessionDataManager'; +import { ISoundManager } from './sound/ISoundManager'; export interface INitro extends Application { @@ -41,6 +42,7 @@ export interface INitro extends Application roomSessionManager: IRoomSessionManager; roomManager: IRoomManager; cameraManager: IRoomCameraWidgetManager; + soundManager: ISoundManager; width: number; height: number; ticker: Ticker; diff --git a/src/nitro/Nitro.ts b/src/nitro/Nitro.ts index 32da00ea..29d4806d 100644 --- a/src/nitro/Nitro.ts +++ b/src/nitro/Nitro.ts @@ -2,7 +2,6 @@ import { Application, IApplicationOptions } from '@pixi/app'; import { SCALE_MODES } from '@pixi/constants'; import { settings } from '@pixi/settings'; import { Ticker } from '@pixi/ticker'; -import { INitroManager } from '../core'; import { ConfigurationEvent } from '../core/configuration/ConfigurationEvent'; import { EventDispatcher } from '../core/events/EventDispatcher'; import { IEventDispatcher } from '../core/events/IEventDispatcher'; @@ -54,15 +53,15 @@ export class Nitro extends Application implements INitro private _worker: Worker; private _core: INitroCore; private _events: IEventDispatcher; - private _localization: INitroLocalizationManager; private _communication: INitroCommunicationManager; + private _localization: INitroLocalizationManager; private _avatar: IAvatarRenderManager; private _roomEngine: IRoomEngine; private _sessionDataManager: ISessionDataManager; private _roomSessionManager: IRoomSessionManager; private _roomManager: IRoomManager; private _cameraManager: IRoomCameraWidgetManager; - private _soundManager: INitroManager; + private _soundManager: ISoundManager; private _linkTrackers: ILinkEventTracker[]; private _workerTrackers: IWorkerEventTracker[]; @@ -79,8 +78,8 @@ export class Nitro extends Application implements INitro this._worker = null; this._core = core; this._events = new EventDispatcher(); - this._localization = new NitroLocalizationManager(); this._communication = new NitroCommunicationManager(core.communication); + this._localization = new NitroLocalizationManager(this._communication); this._avatar = new AvatarRenderManager(); this._roomEngine = new RoomEngine(this._communication); this._sessionDataManager = new SessionDataManager(this._communication); @@ -99,7 +98,6 @@ export class Nitro extends Application implements INitro if(this._worker) this._worker.onmessage = this.createWorkerEvent.bind(this); } - soundManager: ISoundManager; public static bootstrap(): void { @@ -395,6 +393,11 @@ export class Nitro extends Application implements INitro return this._cameraManager; } + public get soundManager(): ISoundManager + { + return this._soundManager; + } + public get width(): number { return (this.renderer.width / this.renderer.resolution); diff --git a/src/nitro/communication/messages/parser/inventory/badges/BadgesParser.ts b/src/nitro/communication/messages/parser/inventory/badges/BadgesParser.ts index 334e18ee..39561505 100644 --- a/src/nitro/communication/messages/parser/inventory/badges/BadgesParser.ts +++ b/src/nitro/communication/messages/parser/inventory/badges/BadgesParser.ts @@ -4,13 +4,13 @@ import { AdvancedMap } from '../../../../../../core/utils/AdvancedMap'; export class BadgesParser implements IMessageParser { private _allBadgeCodes: string[]; - private _activeBadgeCodes: string[]; + private _activeBadgeCodes: AdvancedMap; private _badgeIds: AdvancedMap; public flush(): boolean { this._allBadgeCodes = []; - this._activeBadgeCodes = []; + this._activeBadgeCodes = null; this._badgeIds = null; return true; @@ -21,7 +21,7 @@ export class BadgesParser implements IMessageParser if(!wrapper) return false; this._allBadgeCodes = []; - this._activeBadgeCodes = []; + this._activeBadgeCodes = new AdvancedMap(); this._badgeIds = new AdvancedMap(); let count = wrapper.readInt(); @@ -45,7 +45,7 @@ export class BadgesParser implements IMessageParser const badgeSlot = wrapper.readInt(); const badgeCode = wrapper.readString(); - this._activeBadgeCodes[badgeSlot] = badgeCode; + this._activeBadgeCodes.add(badgeCode, badgeSlot); count--; } @@ -53,9 +53,14 @@ export class BadgesParser implements IMessageParser return true; } - public getBadgeId(k: string): number + public getBadgeId(code: string): number { - return this._badgeIds.getValue(k); + return this._badgeIds.getValue(code); + } + + public getActiveBadgeSlot(code: string): number + { + return this._activeBadgeCodes.getValue(code); } public getAllBadgeCodes(): string[] @@ -65,6 +70,6 @@ export class BadgesParser implements IMessageParser public getActiveBadgeCodes(): string[] { - return this._activeBadgeCodes; + return this._activeBadgeCodes.getKeys(); } } diff --git a/src/nitro/localization/NitroLocalizationManager.ts b/src/nitro/localization/NitroLocalizationManager.ts index 4a7e63aa..3f478e4b 100644 --- a/src/nitro/localization/NitroLocalizationManager.ts +++ b/src/nitro/localization/NitroLocalizationManager.ts @@ -1,4 +1,6 @@ import { NitroManager } from '../../core/common/NitroManager'; +import { INitroCommunicationManager } from '../communication/INitroCommunicationManager'; +import { BadgePointLimitsEvent } from '../communication/messages/incoming/inventory/badges/BadgePointLimitsEvent'; import { Nitro } from '../Nitro'; import { BadgeBaseAndLevel } from './BadgeBaseAndLevel'; import { INitroLocalizationManager } from './INitroLocalizationManager'; @@ -6,16 +8,18 @@ import { NitroLocalizationEvent } from './NitroLocalizationEvent'; export class NitroLocalizationManager extends NitroManager implements INitroLocalizationManager { + private _communication: INitroCommunicationManager; private _definitions: Map; private _parameters: Map>; private _badgePointLimits: Map; private _romanNumerals: string[]; private _pendingUrls: string[]; - constructor() + constructor(communication: INitroCommunicationManager) { super(); + this._communication = communication; this._definitions = new Map(); this._parameters = new Map(); this._badgePointLimits = new Map(); @@ -25,6 +29,8 @@ export class NitroLocalizationManager extends NitroManager implements INitroLoca protected onInit(): void { + this._communication.registerMessageEvent(new BadgePointLimitsEvent(this.onBadgePointLimitsEvent.bind(this))); + let urls: string[] = Nitro.instance.getConfiguration('external.texts.url'); if(!Array.isArray(urls)) @@ -86,6 +92,13 @@ export class NitroLocalizationManager extends NitroManager implements INitroLoca return true; } + private onBadgePointLimitsEvent(event: BadgePointLimitsEvent): void + { + const parser = event.getParser(); + + for(const data of parser.data) this.setBadgePointLimit(data.badgeId, data.limit); + } + public getBadgePointLimit(badge: string): number { return (this._badgePointLimits.get(badge) || -1); @@ -218,6 +231,8 @@ export class NitroLocalizationManager extends NitroManager implements INitroLoca const parameter = parameters[i]; const replacement = replacements[i]; + if(replacement === undefined) continue; + value = value.replace('%' + parameter + '%', replacement); if(value.startsWith('%{'))