Source: config.js

/**
 * @class gtpl Game config.
 * Пример конфига:
 *
 * ```js
 * {
 *   phaser: {
 *     type: Phaser.AUTO,
 *     backgroundColor: '#ed5e42',
 *     scene: [scenes.Main, scenes.UI], // Пользовательские сцены
 *   },
 *   assets: {           // Ресурсы игры, разделенные по сценам
 *     ui: {             // Ресурсы UI сцены ("ui" --- ключ сцены)
 *       images: {
 *         logo: {
 *           key: 'someLogo',
 *           path: 'logo.png',
 *           params: {},
 *         },
 *       },
 *     }
 *   },
 * }
 * ```
 *
 * @since 1.0.1
 * @see Game
 */
class Config {
  constructor() {
    /**
     * @var {string} Config#basePath Базовый путь до ресурсов.
     * @see Config#assets
     */
    this.basePath = '/';

    /**
      * @var {object} Config#phaser - [Phaser config](https://photonstorm.github.io/phaser3-docs/Phaser.Core.Config.html).
      */
    this.phaser = {};

    /**
     * @var {object} Config#assets
     * Автоматически загружаемые ресурсы игры, разбитые по сценам.
     *
     * Если в игре определена сцена с ключем `main` и в нее нужно
     * загрузить ресурс `player`, объект будет иметь следующий вид:
     * ```js
     * assets: {
     *   main: {
     *     spritesheets: {
     *       player: {
     *         key: 'playerSprite',
     *         path: 'playerSprite.png',
     *         params: {},
     *       }
     *     }
     *   }
     * }
     * ```
     * Сцена `main` автоматически загрузит перечисленные ресурсы
     * в хуке `preload`. Вы сможете обращаться к этому ресурсу
     * используя API Фейзера подставляя ключ из поля `key`.
     *
     * На данный момент поддерживается три типа ресурсов:
     * * images
     * * spritesheets
     * * audio
     *
     * @see Config#basePath
     * @see Scene#preload
     * @see SceneAssetsConfig
     */
    this.assets = {};
  }
}

class SceneAssetConfig {
  /**
   * @param {string} key Ключ ресурса.
   * @see SceneAssetConfig#key
   *
   * @param {string} path Относительный путь до ресурса.
   * @see SceneAssetConfig#path
   * @see Game#basePath
   *
   * @param {object} [params={}] Параметры.
   * @see SceneAssetConfig#params
   */
  constructor(key, path, params = {}) {
    /**
     * @const {string | null} SceneAssetConfig#images
     * Ключ ресурса, используемый для идентификации в движке.
     */
    this.key = key;

    /**
     * @const {string | null} SceneAssetConfig#path Относительный путь до ресурса.
     * @see Game#basePath
     */
    this.path = path;

    /**
     * @const {object} SceneAssetConfig#params
     * Параметры ресурса, которые будут проброшены в загрузчик,
     * _(см. документацию загрузчика ресурсов соответствующего типа)_.
     */
    this.params = params;
  }
}

export default Config;