@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.
- package/dist/truengine.es.js +35354 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/src/classes/assets.class.d.ts +89 -0
- package/dist/types/src/classes/bitmap.text.class.d.ts +77 -0
- package/dist/types/src/classes/borderview.class.d.ts +204 -0
- package/dist/types/src/classes/color.class.d.ts +72 -0
- package/dist/types/src/classes/container.class.d.ts +111 -0
- package/dist/types/src/classes/di.class.d.ts +110 -0
- package/dist/types/src/classes/emitter.class.d.ts +64 -0
- package/dist/types/src/classes/engine.class.d.ts +75 -0
- package/dist/types/src/classes/loaders.class.d.ts +28 -0
- package/dist/types/src/classes/preloader.class.d.ts +15 -0
- package/dist/types/src/classes/producer.class.d.ts +135 -0
- package/dist/types/src/classes/sequence.class.d.ts +30 -0
- package/dist/types/src/classes/skipable.class.d.ts +15 -0
- package/dist/types/src/classes/spine.assets.class.d.ts +42 -0
- package/dist/types/src/classes/tile.class.d.ts +38 -0
- package/dist/types/src/components/abstract.component.d.ts +52 -0
- package/dist/types/src/components/abstract.html.component.d.ts +43 -0
- package/dist/types/src/components/bigwin.component.d.ts +109 -0
- package/dist/types/src/components/blackout.component.d.ts +32 -0
- package/dist/types/src/components/button.component.d.ts +113 -0
- package/dist/types/src/components/button.faded.component.d.ts +29 -0
- package/dist/types/src/components/button.text.component.d.ts +49 -0
- package/dist/types/src/components/cheat.component.d.ts +63 -0
- package/dist/types/src/components/fillframe.component.d.ts +37 -0
- package/dist/types/src/components/fps.component.d.ts +39 -0
- package/dist/types/src/components/grid.component.d.ts +28 -0
- package/dist/types/src/components/link.component.d.ts +78 -0
- package/dist/types/src/components/particles.component.d.ts +30 -0
- package/dist/types/src/components/progress.component.d.ts +42 -0
- package/dist/types/src/components/slideshow/slides.reel.component.d.ts +65 -0
- package/dist/types/src/components/slideshow/slideshow.component.d.ts +27 -0
- package/dist/types/src/components/slideshow/slideshow.ui.component.d.ts +28 -0
- package/dist/types/src/components/slideshow/slideshow.ui.pagination.d.ts +30 -0
- package/dist/types/src/components/slot/coefficient/coefficient.component.d.ts +66 -0
- package/dist/types/src/components/slot/frames/frames.component.d.ts +39 -0
- package/dist/types/src/components/slot/frames/frames.sequence.component.d.ts +17 -0
- package/dist/types/src/components/slot/frames/frames.spine.component.d.ts +21 -0
- package/dist/types/src/components/slot/hints/hints.component.d.ts +102 -0
- package/dist/types/src/components/slot/intrigue/intrigue.component.d.ts +41 -0
- package/dist/types/src/components/slot/intrigue/intrigue.spine.component.d.ts +18 -0
- package/dist/types/src/components/slot/lines/lines.component.d.ts +29 -0
- package/dist/types/src/components/slot/lines/lines.static.component.d.ts +38 -0
- package/dist/types/src/components/slot/reel.component.d.ts +253 -0
- package/dist/types/src/components/slot/slot.cheats.d.ts +22 -0
- package/dist/types/src/components/slot/slot.component.d.ts +132 -0
- package/dist/types/src/components/slot/slot.config.d.ts +82 -0
- package/dist/types/src/components/slot/symbol/symbol.component.d.ts +84 -0
- package/dist/types/src/components/slot/symbol/symbol.sequence.component.d.ts +18 -0
- package/dist/types/src/components/slot/symbol/symbol.spine.component.d.ts +18 -0
- package/dist/types/src/components/switch.component.d.ts +62 -0
- package/dist/types/src/components/text.component.d.ts +101 -0
- package/dist/types/src/components/volatility/volatility.component.d.ts +55 -0
- package/dist/types/src/components/volatility/volatility.symbol.component.d.ts +20 -0
- package/dist/types/src/extends/enum.types.d.ts +36 -0
- package/dist/types/src/extends/interfaces.d.ts +74 -0
- package/dist/types/src/extends/javascript.d.ts +5 -0
- package/dist/types/src/extends/short.types.d.ts +68 -0
- package/dist/types/src/extends/struct.types.d.ts +260 -0
- package/dist/types/src/functions/agent.funcs.d.ts +84 -0
- package/dist/types/src/functions/animate/counter.func.d.ts +10 -0
- package/dist/types/src/functions/animate/fadein.func.d.ts +8 -0
- package/dist/types/src/functions/animate/fadeout.func.d.ts +8 -0
- package/dist/types/src/functions/animate/from.func.d.ts +10 -0
- package/dist/types/src/functions/animate/fromto.func.d.ts +11 -0
- package/dist/types/src/functions/animate/to.func.d.ts +10 -0
- package/dist/types/src/functions/array/indexofall.func.d.ts +2 -0
- package/dist/types/src/functions/array/position.func.d.ts +6 -0
- package/dist/types/src/functions/array/unique.func.d.ts +6 -0
- package/dist/types/src/functions/arraysintersect.func.d.ts +2 -0
- package/dist/types/src/functions/cache.funcs.d.ts +20 -0
- package/dist/types/src/functions/cheats.func.d.ts +2 -0
- package/dist/types/src/functions/convert/tofixed.func.d.ts +9 -0
- package/dist/types/src/functions/debug/container.func.d.ts +7 -0
- package/dist/types/src/functions/debug/line.func.d.ts +10 -0
- package/dist/types/src/functions/demotexture.func.d.ts +3 -0
- package/dist/types/src/functions/dom.funcs.d.ts +6 -0
- package/dist/types/src/functions/draw/canvasExtract.func.d.ts +16 -0
- package/dist/types/src/functions/draw/gradient.texture.func.d.ts +14 -0
- package/dist/types/src/functions/draw/radialGradient.func.d.ts +20 -0
- package/dist/types/src/functions/draw/rect.func.d.ts +12 -0
- package/dist/types/src/functions/draw/reel.func.d.ts +9 -0
- package/dist/types/src/functions/engine.funcs.d.ts +63 -0
- package/dist/types/src/functions/is.funcs.d.ts +16 -0
- package/dist/types/src/functions/math.funcs.d.ts +38 -0
- package/dist/types/src/functions/number/between.func.d.ts +7 -0
- package/dist/types/src/functions/object/deepMerge.d.ts +7 -0
- package/dist/types/src/functions/random/exclude.func.d.ts +6 -0
- package/dist/types/src/functions/random/inrange.func.d.ts +6 -0
- package/dist/types/src/functions/random/value.func.d.ts +10 -0
- package/dist/types/src/functions/range.func.d.ts +3 -0
- package/dist/types/src/functions/speed/duration.func.d.ts +6 -0
- package/dist/types/src/functions/speed/mode.func.d.ts +7 -0
- package/dist/types/src/functions/time/full.func.d.ts +4 -0
- package/dist/types/src/functions/time/nowfull.func.d.ts +4 -0
- package/dist/types/src/functions/time/nowshort.func.d.ts +5 -0
- package/dist/types/src/functions/time/short.func.d.ts +7 -0
- package/dist/types/src/functions/timeline/create.funcs.d.ts +8 -0
- package/dist/types/src/functions/timeline/taps.func.d.ts +4 -0
- package/dist/types/src/functions/window/add.func.d.ts +7 -0
- package/dist/types/src/functions/window/get.func.d.ts +6 -0
- package/dist/types/src/index.d.ts +62 -0
- package/dist/types/src/plugins/dragon.bones/functions.d.ts +18 -0
- package/dist/types/src/plugins/dragon.bones/library.d.ts +875 -0
- package/dist/types/src/plugins/gsap/custom.ease.plugin.d.ts +2 -0
- package/dist/types/src/plugins/gsap/motion.path.plugin.d.ts +2 -0
- package/dist/types/src/plugins/modernizr/modernizr-custom.d.ts +1 -0
- package/dist/types/src/references.d.ts +4 -0
- package/dist/types/src/scenes/abstract.scene.d.ts +73 -0
- package/dist/types/src/scenes/background.scene.d.ts +35 -0
- package/dist/types/src/scenes/masked.scene.d.ts +15 -0
- package/dist/types/src/services/focus.services.d.ts +17 -0
- package/dist/types/src/services/iframe.service.d.ts +27 -0
- package/dist/types/src/services/langs.service.d.ts +31 -0
- package/dist/types/src/services/registry.service.d.ts +29 -0
- package/dist/types/src/services/settings.service.d.ts +51 -0
- package/dist/types/src/services/skip.service.d.ts +51 -0
- package/dist/types/src/services/sounds/sounds.service.d.ts +111 -0
- package/dist/types/src/services/storage.service.d.ts +38 -0
- package/dist/types/vite.config.d.ts +2 -0
- package/package.json +33 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
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
|
+
}
|
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
|
+
}
|