From 4cae55befca611837811a3e821e5f4e3cdcb2b5c Mon Sep 17 00:00:00 2001 From: DuckieTM Date: Sun, 9 Mar 2025 11:27:01 +0100 Subject: [PATCH] :up: More updates --- .../api/src/nitro/room/IRoomContentLoader.ts | 1 + packages/assets/src/AssetManager.ts | 2 +- packages/room/src/RoomContentLoader.ts | 50 ++++++++++++++++++- packages/room/src/RoomEngine.ts | 2 +- packages/room/src/RoomManager.ts | 2 +- 5 files changed, 53 insertions(+), 4 deletions(-) diff --git a/packages/api/src/nitro/room/IRoomContentLoader.ts b/packages/api/src/nitro/room/IRoomContentLoader.ts index 7e4c956..3d1656f 100644 --- a/packages/api/src/nitro/room/IRoomContentLoader.ts +++ b/packages/api/src/nitro/room/IRoomContentLoader.ts @@ -10,6 +10,7 @@ export interface IRoomContentLoader { init(): Promise; processFurnitureData(furnitureData: IFurnitureData[]): void; + downloadAssetSync(type: string): void downloadAsset(type: string): Promise; isLoaderType(type: string): boolean; getCollection(name: string): IGraphicAssetCollection; diff --git a/packages/assets/src/AssetManager.ts b/packages/assets/src/AssetManager.ts index bf9e998..8f683ff 100644 --- a/packages/assets/src/AssetManager.ts +++ b/packages/assets/src/AssetManager.ts @@ -57,7 +57,7 @@ export class AssetManager implements IAssetManager { if(!name) return null; - return this._collections.get(name); + return this._collections.get(name) ?? null; } public createCollection(data: IAssetData, spritesheet: Spritesheet): IGraphicAssetCollection diff --git a/packages/room/src/RoomContentLoader.ts b/packages/room/src/RoomContentLoader.ts index 687d3c7..f182036 100644 --- a/packages/room/src/RoomContentLoader.ts +++ b/packages/room/src/RoomContentLoader.ts @@ -330,6 +330,54 @@ export class RoomContentLoader implements IRoomContentLoader return false; } + public downloadAssetSync(type: string): void + { + const assetUrl: string = this.getAssetUrls(type)?.[0]; + + if(!assetUrl || !assetUrl.length) return; + + if((this._pendingContentTypes.indexOf(type) >= 0)) return; + + this._pendingContentTypes.push(type); + + GetAssetManager() + .downloadAsset(assetUrl) + .then(() => + { + const petIndex = this._pets[type]; + + if(petIndex !== undefined) + { + const collection = this.getCollection(type); + const keys = collection.getPaletteNames(); + const palettes: Map = new Map(); + + for(const key of keys) + { + const palette = collection.getPalette(key); + const paletteData = collection.data.palettes[key]; + + const primaryColor = palette.primaryColor; + const secondaryColor = palette.secondaryColor; + const breed = ((paletteData.breed !== undefined) ? paletteData.breed : 0); + const tag = ((paletteData.colorTag !== undefined) ? paletteData.colorTag : -1); + const master = ((paletteData.master !== undefined) ? paletteData.master : false); + const layerTags = ((paletteData.tags !== undefined) ? paletteData.tags : []); + + palettes.set(parseInt(key), new PetColorResult(primaryColor, secondaryColor, breed, tag, key, master, layerTags)); + } + + this._petColors.set(petIndex, palettes); + } + + GetEventDispatcher().dispatchEvent(new RoomContentLoadedEvent(RoomContentLoadedEvent.RCLE_SUCCESS, type)); + }) + .catch((err) => + { + GetEventDispatcher().dispatchEvent(new RoomContentLoadedEvent(RoomContentLoadedEvent.RCLE_FAILURE, type)); + }); + } + public async downloadAsset(type: string): Promise { const assetUrl: string = this.getAssetUrls(type)?.[0]; @@ -509,4 +557,4 @@ export class RoomContentLoader implements IRoomContentLoader { return this._pets; } -} +} \ No newline at end of file diff --git a/packages/room/src/RoomEngine.ts b/packages/room/src/RoomEngine.ts index 934d6cc..2642b3f 100644 --- a/packages/room/src/RoomEngine.ts +++ b/packages/room/src/RoomEngine.ts @@ -3230,7 +3230,7 @@ export class RoomEngine implements IRoomEngine, IRoomCreator, IRoomEngineService public isRoomContentTypeLoaded(name: string): boolean { - return (this._roomContentLoader.getCollection(name) !== null); + return !!this._roomContentLoader.getCollection(name); } public getPetColorResult(petIndex: number, paletteIndex: number): IPetColorResult diff --git a/packages/room/src/RoomManager.ts b/packages/room/src/RoomManager.ts index 15738ec..f492dfe 100644 --- a/packages/room/src/RoomManager.ts +++ b/packages/room/src/RoomManager.ts @@ -98,7 +98,7 @@ export class RoomManager implements IRoomManager, IRoomInstanceContainer { isLoading = true; - GetRoomContentLoader().downloadAsset(type); + GetRoomContentLoader().downloadAssetSync(type); assetName = GetRoomContentLoader().getPlaceholderName(type); asset = GetRoomContentLoader().getCollection(assetName);