From 45b355f7807fcc952c14eccb27556670b30dae90 Mon Sep 17 00:00:00 2001 From: Gregoire Parant Date: Tue, 26 Jan 2021 15:21:23 +0100 Subject: [PATCH] Refactor lazy loading --- .../Entity/PlayerTexturesLoadingManager.ts | 16 ++++++++++------ front/src/Phaser/Game/GameScene.ts | 4 ++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/front/src/Phaser/Entity/PlayerTexturesLoadingManager.ts b/front/src/Phaser/Entity/PlayerTexturesLoadingManager.ts index c0740b23..78b66c10 100644 --- a/front/src/Phaser/Entity/PlayerTexturesLoadingManager.ts +++ b/front/src/Phaser/Entity/PlayerTexturesLoadingManager.ts @@ -23,18 +23,20 @@ export const loadAllDefaultModels = (load: LoaderPlugin): BodyResourceDescriptio }); return returnArray; } + export const loadCustomTexture = (loaderPlugin: LoaderPlugin, texture: CharacterTexture) : Promise => { const name = 'customCharacterTexture'+texture.id; const playerResourceDescriptor: BodyResourceDescriptionInterface = {name, img: texture.url, level: texture.level} return createLoadingPromise(loaderPlugin, playerResourceDescriptor); } -export const lazyLoadPlayerCharacterTextures = (loadPlugin: LoaderPlugin, texturePlugin: TextureManager, texturekeys:Array): Promise => { +export const lazyLoadPlayerCharacterTextures = (loadPlugin: LoaderPlugin, texturekeys:Array): Promise => { const promisesList:Promise[] = []; texturekeys.forEach((textureKey: string|BodyResourceDescriptionInterface) => { try { + //TODO refactor const playerResourceDescriptor = getRessourceDescriptor(textureKey); - if (playerResourceDescriptor && !texturePlugin.exists(playerResourceDescriptor.name)) { + if (playerResourceDescriptor && !loadPlugin.textureManager.exists(playerResourceDescriptor.name)) { promisesList.push(createLoadingPromise(loadPlugin, playerResourceDescriptor)); } }catch (err){ @@ -70,11 +72,13 @@ export const getRessourceDescriptor = (textureKey: string|BodyResourceDescriptio const createLoadingPromise = (loadPlugin: LoaderPlugin, playerResourceDescriptor: BodyResourceDescriptionInterface) => { return new Promise((res) => { - const texture = loadPlugin.textureManager.get(playerResourceDescriptor.name); - if(texture.key !== '__MISSING'){ + if (loadPlugin.textureManager.exists(playerResourceDescriptor.name)) { return res(playerResourceDescriptor); } - loadPlugin.spritesheet(playerResourceDescriptor.name, playerResourceDescriptor.img, {frameWidth: 32, frameHeight: 32}); - loadPlugin.once('filecomplete-spritesheet-'+playerResourceDescriptor.name, () => res(playerResourceDescriptor)); + loadPlugin.spritesheet(playerResourceDescriptor.name, playerResourceDescriptor.img, { + frameWidth: 32, + frameHeight: 32 + }); + loadPlugin.once('filecomplete-spritesheet-' + playerResourceDescriptor.name, () => res(playerResourceDescriptor)); }); } \ No newline at end of file diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index fdefee66..d97b0d0e 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -882,7 +882,7 @@ export class GameScene extends ResizableScene implements CenterListener { createCurrentPlayer(){ //TODO create animation moving between exit and start - const texturesPromise = lazyLoadPlayerCharacterTextures(this.load, this.textures, this.characterLayers); + const texturesPromise = lazyLoadPlayerCharacterTextures(this.load, this.characterLayers); try { this.CurrentPlayer = new Player( this, @@ -1076,7 +1076,7 @@ export class GameScene extends ResizableScene implements CenterListener { return; } - const texturesPromise = lazyLoadPlayerCharacterTextures(this.load, this.textures, addPlayerData.characterLayers); + const texturesPromise = lazyLoadPlayerCharacterTextures(this.load, addPlayerData.characterLayers); const player = new RemotePlayer( addPlayerData.userId, this,