All files / src/utils/pixiUtils ResourceManager.ts

0% Statements 0/14
0% Branches 0/4
0% Functions 0/9
0% Lines 0/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49                                                                                                 
import {Texture} from '@pixi/core';
import {Loader} from '@pixi/loaders';
 
export class ResourceManager {
  public static loadResourcesFrom(resourceUrls: string[]): void {
    resourceUrls.forEach(url => {
      this.add(url);
    });
  }
 
  public static run(callAfterLoaded: () => void): void {
    Loader.shared.load(callAfterLoaded);
  }
 
  public static add(jsonUrl: string): void {
    const resourceName = this.parseName(jsonUrl);
    if (!Loader.shared.resources[resourceName])
      Loader.shared.add(resourceName, jsonUrl);
  }
 
  public static setOnProgressCallback(
    callback: (loadStatusPercentage: number) => void,
  ): void {
    Loader.shared.onProgress.add((loader: Loader): void => {
      callback(loader.progress);
    });
  }
 
  public static setOnErrorCallback(callback: (error: Error) => void): void {
    Loader.shared.onError.add(callback);
  }
 
  private static parseName(url: string): string {
    const removeDirPath = url.substring(url.lastIndexOf('/') + 1);
    return removeDirPath;
  }
 
  public static getTexture(
    textureName: string,
    sheetName?: string,
  ): Texture | undefined {
    if (sheetName) {
      return Loader.shared.resources[sheetName].spritesheet?.textures[
        textureName
      ];
    } else return Loader.shared.resources[textureName].texture;
  }
}