@truelab/truengine 0.0.1-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/truengine.es.js +35354 -0
  2. package/dist/types/index.d.ts +2 -0
  3. package/dist/types/src/classes/assets.class.d.ts +89 -0
  4. package/dist/types/src/classes/bitmap.text.class.d.ts +77 -0
  5. package/dist/types/src/classes/borderview.class.d.ts +204 -0
  6. package/dist/types/src/classes/color.class.d.ts +72 -0
  7. package/dist/types/src/classes/container.class.d.ts +111 -0
  8. package/dist/types/src/classes/di.class.d.ts +110 -0
  9. package/dist/types/src/classes/emitter.class.d.ts +64 -0
  10. package/dist/types/src/classes/engine.class.d.ts +75 -0
  11. package/dist/types/src/classes/loaders.class.d.ts +28 -0
  12. package/dist/types/src/classes/preloader.class.d.ts +15 -0
  13. package/dist/types/src/classes/producer.class.d.ts +135 -0
  14. package/dist/types/src/classes/sequence.class.d.ts +30 -0
  15. package/dist/types/src/classes/skipable.class.d.ts +15 -0
  16. package/dist/types/src/classes/spine.assets.class.d.ts +42 -0
  17. package/dist/types/src/classes/tile.class.d.ts +38 -0
  18. package/dist/types/src/components/abstract.component.d.ts +52 -0
  19. package/dist/types/src/components/abstract.html.component.d.ts +43 -0
  20. package/dist/types/src/components/bigwin.component.d.ts +109 -0
  21. package/dist/types/src/components/blackout.component.d.ts +32 -0
  22. package/dist/types/src/components/button.component.d.ts +113 -0
  23. package/dist/types/src/components/button.faded.component.d.ts +29 -0
  24. package/dist/types/src/components/button.text.component.d.ts +49 -0
  25. package/dist/types/src/components/cheat.component.d.ts +63 -0
  26. package/dist/types/src/components/fillframe.component.d.ts +37 -0
  27. package/dist/types/src/components/fps.component.d.ts +39 -0
  28. package/dist/types/src/components/grid.component.d.ts +28 -0
  29. package/dist/types/src/components/link.component.d.ts +78 -0
  30. package/dist/types/src/components/particles.component.d.ts +30 -0
  31. package/dist/types/src/components/progress.component.d.ts +42 -0
  32. package/dist/types/src/components/slideshow/slides.reel.component.d.ts +65 -0
  33. package/dist/types/src/components/slideshow/slideshow.component.d.ts +27 -0
  34. package/dist/types/src/components/slideshow/slideshow.ui.component.d.ts +28 -0
  35. package/dist/types/src/components/slideshow/slideshow.ui.pagination.d.ts +30 -0
  36. package/dist/types/src/components/slot/coefficient/coefficient.component.d.ts +66 -0
  37. package/dist/types/src/components/slot/frames/frames.component.d.ts +39 -0
  38. package/dist/types/src/components/slot/frames/frames.sequence.component.d.ts +17 -0
  39. package/dist/types/src/components/slot/frames/frames.spine.component.d.ts +21 -0
  40. package/dist/types/src/components/slot/hints/hints.component.d.ts +102 -0
  41. package/dist/types/src/components/slot/intrigue/intrigue.component.d.ts +41 -0
  42. package/dist/types/src/components/slot/intrigue/intrigue.spine.component.d.ts +18 -0
  43. package/dist/types/src/components/slot/lines/lines.component.d.ts +29 -0
  44. package/dist/types/src/components/slot/lines/lines.static.component.d.ts +38 -0
  45. package/dist/types/src/components/slot/reel.component.d.ts +253 -0
  46. package/dist/types/src/components/slot/slot.cheats.d.ts +22 -0
  47. package/dist/types/src/components/slot/slot.component.d.ts +132 -0
  48. package/dist/types/src/components/slot/slot.config.d.ts +82 -0
  49. package/dist/types/src/components/slot/symbol/symbol.component.d.ts +84 -0
  50. package/dist/types/src/components/slot/symbol/symbol.sequence.component.d.ts +18 -0
  51. package/dist/types/src/components/slot/symbol/symbol.spine.component.d.ts +18 -0
  52. package/dist/types/src/components/switch.component.d.ts +62 -0
  53. package/dist/types/src/components/text.component.d.ts +101 -0
  54. package/dist/types/src/components/volatility/volatility.component.d.ts +55 -0
  55. package/dist/types/src/components/volatility/volatility.symbol.component.d.ts +20 -0
  56. package/dist/types/src/extends/enum.types.d.ts +36 -0
  57. package/dist/types/src/extends/interfaces.d.ts +74 -0
  58. package/dist/types/src/extends/javascript.d.ts +5 -0
  59. package/dist/types/src/extends/short.types.d.ts +68 -0
  60. package/dist/types/src/extends/struct.types.d.ts +260 -0
  61. package/dist/types/src/functions/agent.funcs.d.ts +84 -0
  62. package/dist/types/src/functions/animate/counter.func.d.ts +10 -0
  63. package/dist/types/src/functions/animate/fadein.func.d.ts +8 -0
  64. package/dist/types/src/functions/animate/fadeout.func.d.ts +8 -0
  65. package/dist/types/src/functions/animate/from.func.d.ts +10 -0
  66. package/dist/types/src/functions/animate/fromto.func.d.ts +11 -0
  67. package/dist/types/src/functions/animate/to.func.d.ts +10 -0
  68. package/dist/types/src/functions/array/indexofall.func.d.ts +2 -0
  69. package/dist/types/src/functions/array/position.func.d.ts +6 -0
  70. package/dist/types/src/functions/array/unique.func.d.ts +6 -0
  71. package/dist/types/src/functions/arraysintersect.func.d.ts +2 -0
  72. package/dist/types/src/functions/cache.funcs.d.ts +20 -0
  73. package/dist/types/src/functions/cheats.func.d.ts +2 -0
  74. package/dist/types/src/functions/convert/tofixed.func.d.ts +9 -0
  75. package/dist/types/src/functions/debug/container.func.d.ts +7 -0
  76. package/dist/types/src/functions/debug/line.func.d.ts +10 -0
  77. package/dist/types/src/functions/demotexture.func.d.ts +3 -0
  78. package/dist/types/src/functions/dom.funcs.d.ts +6 -0
  79. package/dist/types/src/functions/draw/canvasExtract.func.d.ts +16 -0
  80. package/dist/types/src/functions/draw/gradient.texture.func.d.ts +14 -0
  81. package/dist/types/src/functions/draw/radialGradient.func.d.ts +20 -0
  82. package/dist/types/src/functions/draw/rect.func.d.ts +12 -0
  83. package/dist/types/src/functions/draw/reel.func.d.ts +9 -0
  84. package/dist/types/src/functions/engine.funcs.d.ts +63 -0
  85. package/dist/types/src/functions/is.funcs.d.ts +16 -0
  86. package/dist/types/src/functions/math.funcs.d.ts +38 -0
  87. package/dist/types/src/functions/number/between.func.d.ts +7 -0
  88. package/dist/types/src/functions/object/deepMerge.d.ts +7 -0
  89. package/dist/types/src/functions/random/exclude.func.d.ts +6 -0
  90. package/dist/types/src/functions/random/inrange.func.d.ts +6 -0
  91. package/dist/types/src/functions/random/value.func.d.ts +10 -0
  92. package/dist/types/src/functions/range.func.d.ts +3 -0
  93. package/dist/types/src/functions/speed/duration.func.d.ts +6 -0
  94. package/dist/types/src/functions/speed/mode.func.d.ts +7 -0
  95. package/dist/types/src/functions/time/full.func.d.ts +4 -0
  96. package/dist/types/src/functions/time/nowfull.func.d.ts +4 -0
  97. package/dist/types/src/functions/time/nowshort.func.d.ts +5 -0
  98. package/dist/types/src/functions/time/short.func.d.ts +7 -0
  99. package/dist/types/src/functions/timeline/create.funcs.d.ts +8 -0
  100. package/dist/types/src/functions/timeline/taps.func.d.ts +4 -0
  101. package/dist/types/src/functions/window/add.func.d.ts +7 -0
  102. package/dist/types/src/functions/window/get.func.d.ts +6 -0
  103. package/dist/types/src/index.d.ts +62 -0
  104. package/dist/types/src/plugins/dragon.bones/functions.d.ts +18 -0
  105. package/dist/types/src/plugins/dragon.bones/library.d.ts +875 -0
  106. package/dist/types/src/plugins/gsap/custom.ease.plugin.d.ts +2 -0
  107. package/dist/types/src/plugins/gsap/motion.path.plugin.d.ts +2 -0
  108. package/dist/types/src/plugins/modernizr/modernizr-custom.d.ts +1 -0
  109. package/dist/types/src/references.d.ts +4 -0
  110. package/dist/types/src/scenes/abstract.scene.d.ts +73 -0
  111. package/dist/types/src/scenes/background.scene.d.ts +35 -0
  112. package/dist/types/src/scenes/masked.scene.d.ts +15 -0
  113. package/dist/types/src/services/focus.services.d.ts +17 -0
  114. package/dist/types/src/services/iframe.service.d.ts +27 -0
  115. package/dist/types/src/services/langs.service.d.ts +31 -0
  116. package/dist/types/src/services/registry.service.d.ts +29 -0
  117. package/dist/types/src/services/settings.service.d.ts +51 -0
  118. package/dist/types/src/services/skip.service.d.ts +51 -0
  119. package/dist/types/src/services/sounds/sounds.service.d.ts +111 -0
  120. package/dist/types/src/services/storage.service.d.ts +38 -0
  121. package/dist/types/vite.config.d.ts +2 -0
  122. package/package.json +33 -0
@@ -0,0 +1,2 @@
1
+ import { CustomEase } from 'gsap/CustomEase';
2
+ export { CustomEase };
@@ -0,0 +1,2 @@
1
+ import { MotionPathPlugin } from 'gsap/all';
2
+ export { MotionPathPlugin };
@@ -0,0 +1,4 @@
1
+ import { TGenericObject } from './extends/short.types';
2
+ type TClass = new (...args: unknown[]) => unknown;
3
+ export declare const Core: TGenericObject<TClass>;
4
+ export {};
@@ -0,0 +1,73 @@
1
+ import { DI } from '../classes/di.class';
2
+ import { IProducer } from '../classes/producer.class';
3
+ import { IContainer, IScene } from '../extends/interfaces';
4
+ import { TMixedObject } from '../extends/short.types';
5
+ /**
6
+ * Абстрактная сцена
7
+ *
8
+ * @rules
9
+ * В сцене должны находиться:
10
+ * - все игровые объекты этой сцены (компоненты, dragonbones, простые объекты)
11
+ * - вызовы методов анимации этих объектов (движения, механика, последовательности)
12
+ * - обработчики событий от своих дочерних объектов
13
+ * - все механики должны быть разделены между собой (методами)
14
+ * - для последовательности анимации создайте отдельный метод с вызовом анимаций
15
+ * - ссылки на управление свойствами внутреннего контейнера (link)
16
+ * - обработка адаптивки
17
+ * - обратиться к компонентам верхнего уровня можно через this.producer.component<?>('bigwin')
18
+ * - обращаться к другим сценам и панелям можно только чтобы переключить их состояния (компоненты внутри них будут недоступны)
19
+ *
20
+ * @methods
21
+ * constructor() - конструктор сцены, а не объектов на ней (здесь делаем только то что касается свойств сцены)
22
+ * create() - метод сборки объектов сцены
23
+ * destroy() - метод уничтожения объектов сцены из памяти (используем реестр)
24
+ * processing() - метод вызова механик по входным данным от сервера
25
+ *
26
+ * @examples
27
+ * this.producer.component <TextComponent> ('text').setText('123')
28
+ */
29
+ export declare abstract class AbstractScene extends DI implements IScene {
30
+ name: string;
31
+ instance: IContainer;
32
+ producer: IProducer;
33
+ width: number;
34
+ height: number;
35
+ alpha: number;
36
+ destroyed: boolean;
37
+ hidden: boolean;
38
+ /**
39
+ * Конструктор сцены (но не объектов на ней)
40
+ * @param name
41
+ */
42
+ constructor(name?: string);
43
+ /**
44
+ * Метод создания сцены.
45
+ * Создает все объекты сцены (слот, персонаж), вешает слушатели на события.
46
+ */
47
+ abstract create(): Promise<boolean>;
48
+ /**
49
+ * Метод разрушения сцены.
50
+ * Все, что было создано в create должно быть уничтожено здесь.
51
+ * Слушатели событий должны быть удалены.
52
+ */
53
+ abstract destroy(): Promise<boolean>;
54
+ /**
55
+ * Метод отрисовки сцены по сценарию на основе ответа от сервера.
56
+ * Например, передать пришедший ответ в слот, запустить анимации персонажей.
57
+ */
58
+ abstract processing?(playground: unknown, isLast: boolean): Promise<TMixedObject>;
59
+ /**
60
+ * Метод адаптивки элементов на сцене.
61
+ */
62
+ abstract adaptive?(modeChanged?: boolean): Promise<void>;
63
+ /**
64
+ * Метод перехода на сцену
65
+ * (метод вызывает продюсер)
66
+ */
67
+ show(): Promise<void>;
68
+ /**
69
+ * Метод перехода из сцены
70
+ * (метод вызывает продюсер)
71
+ */
72
+ hide(): Promise<void>;
73
+ }
@@ -0,0 +1,35 @@
1
+ import { TMixedObject, TPixiSprite, TPixiTexture } from '../extends/short.types';
2
+ import { AbstractScene } from './abstract.scene';
3
+ export type TBackground = {
4
+ landscape: string;
5
+ portrait: string;
6
+ };
7
+ export type TBackgroundTextures = {
8
+ landscape: TPixiTexture;
9
+ portrait: TPixiTexture;
10
+ };
11
+ /**
12
+ * Background scene
13
+ */
14
+ export declare class BackgroundScene extends AbstractScene {
15
+ protected _backgrounds: Map<string, TBackground>;
16
+ protected _background: TPixiSprite;
17
+ protected _textures: Map<string, TBackgroundTextures>;
18
+ protected _mode: string;
19
+ /** get current background mode */
20
+ get mode(): string;
21
+ /** set new background mode */
22
+ set mode(value: string);
23
+ /** @constructor */
24
+ constructor(name?: string);
25
+ /** @inheritdoc */
26
+ create(): Promise<boolean>;
27
+ /** @inheritdoc */
28
+ destroy(): Promise<boolean>;
29
+ /** Smoothly change mode */
30
+ crossfadeMode(mode: string, durationMs?: number): Promise<void>;
31
+ /** @inheritdoc */
32
+ processing(): Promise<TMixedObject>;
33
+ /** @inheritdoc */
34
+ adaptive(): Promise<void>;
35
+ }
@@ -0,0 +1,15 @@
1
+ import { AbstractScene } from './abstract.scene';
2
+ import * as PIXI from 'pixi.js';
3
+ /**
4
+ * Добавляет функционал маски на сцену
5
+ */
6
+ export declare abstract class MaskedScene extends AbstractScene {
7
+ protected _maskGraphics: PIXI.Graphics;
8
+ /**
9
+ * Включить на сцене маске.
10
+ * По умолчанию маска по размеру сцены как в конфиге, но можно ее расширить, задав поля.
11
+ * @param padX поля маски по горизонтали
12
+ * @param padY поля маски по вертикали
13
+ */
14
+ sceneMask(padX?: number, padY?: number): PIXI.Graphics;
15
+ }
@@ -0,0 +1,17 @@
1
+ import { Emitter } from '../classes/emitter.class';
2
+ import { IService } from '../extends/interfaces';
3
+ import { TCallbackVoid, TTimeout } from '../extends/short.types';
4
+ /** */
5
+ export declare class FocusServise extends Emitter implements IService {
6
+ onFocus: TCallbackVoid;
7
+ onBlur: TCallbackVoid;
8
+ protected _tickerInterval: number;
9
+ protected _windowFocusTimeout: TTimeout;
10
+ /**
11
+ * @constructor
12
+ * @param engine TEngine
13
+ */
14
+ constructor();
15
+ /** */
16
+ protected _onChange(): void;
17
+ }
@@ -0,0 +1,27 @@
1
+ import { Emitter } from '../classes/emitter.class';
2
+ import { IService } from '../extends/interfaces';
3
+ export declare enum ECasinoEvent {
4
+ gameStarted = "gameStarted",// Начали спин
5
+ gameComplete = "gameComplete",// Завершили спин
6
+ fullscreenOn = "fullscreen-on",// Включили режим фулскрина
7
+ fullscreenOff = "fullscreen-off",// Выключили режим фулскрина
8
+ modalRefill = "modalRefill",// Показать модалку пополнения баланса
9
+ changeBalance = "changeBalance",// Баланс изменился
10
+ leaveTheGame = "leaveTheGame"
11
+ }
12
+ /**
13
+ * @deprecated
14
+ * Use IntegrationService instead
15
+ * Сервис для кастомной обработки событий типа
16
+ */
17
+ export declare class IFrameService extends Emitter implements IService {
18
+ protected _casinoUrl: string;
19
+ protected _returnUrl: string;
20
+ available: boolean;
21
+ /** @constructor */
22
+ constructor();
23
+ /** */
24
+ leaveTheGameEvent(): void;
25
+ /** */
26
+ eventEmit(event: ECasinoEvent): void;
27
+ }
@@ -0,0 +1,31 @@
1
+ import { TGenericObject, TLangsReplace } from '../extends/short.types';
2
+ /**
3
+ * Сервис языков
4
+ */
5
+ export declare class LangsService {
6
+ protected collection: Map<string, string>;
7
+ /**
8
+ * Добавление перевода в коллекцию
9
+ * @param slug слаг перевода
10
+ * @param text перевод
11
+ */
12
+ set(slug: string, text?: string): LangsService;
13
+ /**
14
+ * Установить множество переводов за раз
15
+ * @param {TGenericObject <string>} langs
16
+ */
17
+ setMany(langs: TGenericObject<string>): LangsService;
18
+ /**
19
+ * Получение текста метки с подстановками если они заданы
20
+ * @param slug текстовая метка
21
+ * @param def значение по умолчанию если метка отсутствует в коллекции
22
+ * @param replaces объект подстановок в шаблон строки
23
+ */
24
+ get(slug: string, def?: string, replaces?: TLangsReplace): string;
25
+ /**
26
+ * Метод замены подстрок в текстовой метке
27
+ * @param text входной текст
28
+ * @param replaces объект подстановок
29
+ */
30
+ replace(text: string, replaces?: TLangsReplace): string;
31
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Сервис реестра данных в приложении.
3
+ */
4
+ export declare class RegistryService {
5
+ protected _collection: Map<string, unknown>;
6
+ /**
7
+ * Регистрация объекта в реестре
8
+ * @param name идентификатор
9
+ * @param compiled собранный объект
10
+ */
11
+ set<T = unknown>(name: string, compiled: T): T;
12
+ /**
13
+ * Получить объект из реестра
14
+ * @param name
15
+ */
16
+ get<T>(name: string): T;
17
+ /**
18
+ * Узнать есть ли объект в реестре
19
+ * @param name
20
+ */
21
+ exists(name: string): boolean;
22
+ /**
23
+ * Удалить объект/объекты из реестра
24
+ * registry().remove(['one'])
25
+ * registry().remove(['one', 'two', 'three'])
26
+ * @param names
27
+ */
28
+ remove(names: string[]): RegistryService;
29
+ }
@@ -0,0 +1,51 @@
1
+ import { Emitter } from '../classes/emitter.class';
2
+ import { TMixedObject } from '../extends/short.types';
3
+ import { TEngineSettings } from '../extends/struct.types';
4
+ /**
5
+ * Сервис настроек
6
+ *
7
+ * @rules
8
+ * - названия настроек именовать camelCase.
9
+ */
10
+ export declare class SettingsService extends Emitter {
11
+ protected defaults: Map<string, unknown>;
12
+ protected currents: Map<string, unknown>;
13
+ /**
14
+ * Установить значение настройки
15
+ * Выбрасывается событие settings.{name}:set
16
+ * @param {string} name param name
17
+ * @param {mixed} value param value
18
+ * @param autoemit флаг выбрасывания событий settings.set - заглушить чтобы избежать циклического вызова
19
+ */
20
+ set(name: string, value?: unknown, autoemit?: boolean): SettingsService;
21
+ /**
22
+ * Установить множество настроек за раз
23
+ * @param {TEngineSettings} settings
24
+ */
25
+ setMany(settings: TEngineSettings): SettingsService;
26
+ /**
27
+ * Получить значение настройки
28
+ * @param {string} name
29
+ * @param {any} def
30
+ */
31
+ get<T = string>(name: string, def?: T): T;
32
+ /**
33
+ * Узнать есть ли такая настройка
34
+ * @param {string} name
35
+ */
36
+ has(name: string): boolean;
37
+ /**
38
+ * Получить настройки по переданным ключам
39
+ * @param names
40
+ */
41
+ pull(names: string[]): TMixedObject;
42
+ /**
43
+ * Сбросить все настройки до дефолтных (если есть)
44
+ */
45
+ reset(): SettingsService;
46
+ /**
47
+ * Метод сохраняет все текущие настройки как default
48
+ * - в дальнейшем при сбросе будут использоваться они
49
+ */
50
+ asDefault(): SettingsService;
51
+ }
@@ -0,0 +1,51 @@
1
+ import { Emitter } from '../classes/emitter.class';
2
+ import { IService } from '../extends/interfaces';
3
+ /**
4
+ * Сервис скипов
5
+ * Дока по механике https://www.notion.so/truelab/Fast-play-778d052d65e246e596b2e05b1389d918
6
+ */
7
+ export declare class SkipService extends Emitter implements IService {
8
+ private name;
9
+ protected _isActive: boolean;
10
+ protected _isEnabled: boolean;
11
+ protected _isInitialized: boolean;
12
+ protected _tags: Set<string>;
13
+ /** Активирован ли скип */
14
+ get isActive(): boolean;
15
+ /** Разрешен ли скип в данный момент */
16
+ get isEnabled(): boolean;
17
+ /**
18
+ * Инициализировать сервис
19
+ */
20
+ init(): SkipService;
21
+ /**
22
+ * Активировать скип
23
+ * - Функция должна вызываться во время нажатия кнопки скипа, или кликов по экрану.
24
+ * - Бросит событие о активации режима скипа - 'skip:active'.
25
+ * - Бросит события о кастомных скипах, если такие указаны - 'skip.[tag]:active', затем очистит их.
26
+ */
27
+ start(): void;
28
+ /**
29
+ * Разрешить скип
30
+ * - Должен вызываться в начале каждого спина.
31
+ * - Может вызываться внутри спина, если передан кастомный тэг.
32
+ * - При переданном тэге запишет для него слушатель и бросит событие вида 'skip.[tag]:active' с ним при скипе.
33
+ */
34
+ enable(tag?: string): boolean;
35
+ /**
36
+ * Отключить возможность скипа.
37
+ * @rules
38
+ * - Должен вызываться в конце каждого спина.
39
+ * - Переключит режим скипа в неактивный.
40
+ * - При вызове без тэга запретит дальнейшую возможность скипа.
41
+ * - При вызове с тэгом удалит тэг из ожидания скипа без запрета.
42
+ * @param tag - удалить кастомный тэг из ожидания скипа
43
+ */
44
+ disable(tag?: string): void;
45
+ /** Переключить возможность скипа */
46
+ protected _toggleEnabled(enabled: boolean): void;
47
+ /** Переключить состояние скипа */
48
+ protected _toggleActive(isActive: boolean): void;
49
+ /** Включить слушателей */
50
+ protected _startListeners(): void;
51
+ }
@@ -0,0 +1,111 @@
1
+ import { IMediaInstance, Sound, SoundSprite } from '@pixi/sound';
2
+ import { Emitter } from '../../classes/emitter.class';
3
+ import { IService } from '../../extends/interfaces';
4
+ import { TGsapTimeline } from '../../extends/short.types';
5
+ export type TSoundType = 'ambience' | 'effects' | 'dealer';
6
+ export type TSample = {
7
+ name: string;
8
+ type: TSoundType;
9
+ sprite?: string;
10
+ };
11
+ export type TSounds = Record<string, TSample>;
12
+ type TLoopTracks = {
13
+ sound: SoundSprite;
14
+ sample: TSample;
15
+ crossfade: number;
16
+ timeline: TGsapTimeline;
17
+ };
18
+ type TSingleTracks = {
19
+ sample: TSample;
20
+ instance: IMediaInstance;
21
+ };
22
+ /**
23
+ * Сервис управления звуками.
24
+ * По умолчанию все звуки включены и громкость 1,
25
+ * поэтому при старте игры надо задать эти параметры из настроек
26
+ *
27
+ * @rules
28
+ * - звуки должны быть заранее правильно подобраны, по тональности, по громкости, по длине
29
+ * - допускается программное управление громкостью звуков принадлежащих одному типу, а не отдельных звуков
30
+ * - регулярно повторяющиеся звуки должны иметь несколько вариантов звучания
31
+ * - не объединять звуки разных событий в один джингл (мешает управлять таймингами)
32
+ * - если анимация не имеет конкретной длины то звук должен формироваться программно (набиваясь, повторяясь и тп)
33
+ */
34
+ export declare class SoundsService extends Emitter implements IService {
35
+ getSoundsCustom: (sample: TSample) => Sound;
36
+ protected _soundsSprites: Map<string, Sound>;
37
+ protected _loopTracks: Map<string, TLoopTracks>;
38
+ protected _singleTracks: Map<string, TSingleTracks>;
39
+ protected _values: {
40
+ [key in TSoundType]: number;
41
+ };
42
+ /** Глобальная громкость */
43
+ set sounds(value: number);
44
+ /** Глобальная громкость */
45
+ get sounds(): number;
46
+ /** Включена ли музыка */
47
+ get ambience(): number;
48
+ /** Глобально включить или отключить музыку */
49
+ set ambience(value: number);
50
+ /** Включены ли эффекты */
51
+ get effects(): number;
52
+ /** Глобально включить или отключить эффекты */
53
+ set effects(value: number);
54
+ /** Глобально включить или отключить дилера */
55
+ set dealer(value: number);
56
+ /** Включен ли дилер */
57
+ get dealer(): number;
58
+ /**
59
+ * Запуск проигрывания звукового спрайта
60
+ * - сэмплы, которые уже проигрываются, не будут запущены повторно
61
+ * - если нужно запустить один сэмпл несколько раз одновременно - передаем tag
62
+ * @param sound
63
+ * @param tag
64
+ */
65
+ play(sample: TSample, tag?: string): TSample;
66
+ /**
67
+ * Остановить проигрывание звукового спрайта
68
+ * @param sound
69
+ * @param tag
70
+ */
71
+ stop(sample: TSample, tag?: string): TSample;
72
+ /**
73
+ * Запуск лупа на таймлайне
74
+ * @param track имя трека для сведения с другими лупами
75
+ * @param sample семпл для петли
76
+ * @param crossfade время плавного перехода из текущего в переданный семпл (включает fadein начального)
77
+ */
78
+ loop(track: string, sample: TSample, crossfade?: number, volume?: number): TGsapTimeline;
79
+ /**
80
+ * Все текущие треки в состоянии loop запустить заново,
81
+ * т.к. их звуковые спрайты могли изменится
82
+ */
83
+ refreshLoops(): void;
84
+ /**
85
+ * Очистка и остановка трека
86
+ */
87
+ delete(track: string, crossfade?: number): Promise<void>;
88
+ /** */
89
+ current(track: string): TLoopTracks;
90
+ /** */
91
+ somePlaying(someof: TSample[], tag?: string): boolean;
92
+ /**
93
+ * Получить sound из альтернативных возможных источников
94
+ */
95
+ protected _getSound(sample: TSample): Sound;
96
+ /**
97
+ * получить sound из предзагруженных ассетов
98
+ */
99
+ protected _getSoundDefault({ sprite }: TSample): Sound;
100
+ /**
101
+ * Получить строку-ключ, по которой звук будет сохранен в проигрываемых сейчас звуках
102
+ * @param sample
103
+ * @param tag
104
+ */
105
+ protected _getKey(sample: TSample, tag?: string): string;
106
+ /**
107
+ * Установить значение соответствующему типу
108
+ */
109
+ protected _setValue(value: number, type: TSoundType): void;
110
+ }
111
+ export {};
@@ -0,0 +1,38 @@
1
+ import { IService } from '../extends/interfaces';
2
+ import { TGenericObject, TMixedObject } from '../extends/short.types';
3
+ export type TSupportStorage = boolean | number | string | TMixedObject | number[] | string[];
4
+ /**
5
+ * Сервис для работы с localStorage.
6
+ * Хранит в себе копию объекта из localStorage
7
+ * и при записи нового значения переводит этот объект в строку JSON
8
+ * и сохраняет в localStorage
9
+ */
10
+ export declare class StorageService implements IService {
11
+ protected _key: string;
12
+ protected _cached: TGenericObject<TSupportStorage>;
13
+ protected _isAvailable: boolean;
14
+ /**
15
+ * Установить ключ, по которому хранить объект с настройками в localStorage.
16
+ * Важно вызвать этот метод до использования других методов сервиса.
17
+ * @param key
18
+ */
19
+ setKey(key: string): void;
20
+ /**
21
+ * Получить значение.
22
+ *
23
+ * Если такое значение есть и оно валидно, то возвращаем его,
24
+ * Иначе возвращаем дефолтное значение.
25
+ *
26
+ * @param {*} name
27
+ * @param {*} value
28
+ * @param {*} validator
29
+ */
30
+ get(name: string, def: TSupportStorage, validator: (value: TSupportStorage) => boolean): TSupportStorage;
31
+ /**
32
+ * Установить новое значение настройки.
33
+ *
34
+ * @param {*} name
35
+ * @param {*} value
36
+ */
37
+ set(name: string, value: TSupportStorage): TSupportStorage;
38
+ }
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vite').UserConfig;
2
+ export default _default;
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@truelab/truengine",
3
+ "version": "0.0.1-0",
4
+ "main": "dist/truengine.umd.js",
5
+ "module": "dist/truengine.esm.js",
6
+ "types": "dist/types/index.d.ts",
7
+ "files": [
8
+ "dist/"
9
+ ],
10
+ "type": "module",
11
+ "scripts": {
12
+ "dev": "vite",
13
+ "build": "vite build",
14
+ "preview": "vite preview",
15
+ "build:watch": "vite build --watch"
16
+ },
17
+ "dependencies": {
18
+ "@pixi-spine/loader-4.1": "^3.1.0",
19
+ "@pixi/particle-emitter": "5.0.7",
20
+ "@pixi/sound": "^4.0.4",
21
+ "@truelab/truelogic": "^3.2.2",
22
+ "@types/gsap": "^1.20.2",
23
+ "@types/modernizr": "^3.5.3",
24
+ "@types/webfontloader": "^1.6.29",
25
+ "decimal.js-light": "^2.5.1",
26
+ "gsap": "^3.12.7",
27
+ "lil-gui": "^0.17.0",
28
+ "pixi-particles": "^4.3.0",
29
+ "pixi-spine": "^3.1.0",
30
+ "pixi.js": "^6.5.10",
31
+ "webfontloader": "^1.6.28"
32
+ }
33
+ }