/**
* @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;