@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,89 @@
|
|
|
1
|
+
import { Sound } from '@pixi/sound';
|
|
2
|
+
import { EAssetType } from '../extends/enum.types';
|
|
3
|
+
import { TGenericObject, TMixedObject, TPixiAnimatedSprite, TPixiAnimations, TPixiSprite, TPixiTexture, TPixiTextures } from '../extends/short.types';
|
|
4
|
+
import { Loaders } from './loaders.class';
|
|
5
|
+
import * as PIXI from 'pixi.js';
|
|
6
|
+
export type TPathType = {
|
|
7
|
+
desktop?: string;
|
|
8
|
+
desktopWebp?: string;
|
|
9
|
+
desktopRetina?: string;
|
|
10
|
+
desktopRetinaWebp?: string;
|
|
11
|
+
mobile?: string;
|
|
12
|
+
mobileWebp?: string;
|
|
13
|
+
mobileRetina?: string;
|
|
14
|
+
mobileRetinaWebp?: string;
|
|
15
|
+
};
|
|
16
|
+
export type TAsset = {
|
|
17
|
+
type: EAssetType;
|
|
18
|
+
src?: string | TPathType;
|
|
19
|
+
srcResource?: string;
|
|
20
|
+
tex?: string | TPathType;
|
|
21
|
+
texResource?: string;
|
|
22
|
+
ske?: string | TPathType;
|
|
23
|
+
skeResource?: string;
|
|
24
|
+
fonts?: string[];
|
|
25
|
+
config?: unknown;
|
|
26
|
+
};
|
|
27
|
+
export type TAssets = TGenericObject<TAsset>;
|
|
28
|
+
/**
|
|
29
|
+
* Класс для загрузки и хранения ассетов
|
|
30
|
+
*/
|
|
31
|
+
export declare class Assets extends Loaders {
|
|
32
|
+
static assets: Map<string, TAsset>;
|
|
33
|
+
/**
|
|
34
|
+
* Добавить ассеты (не загружать)
|
|
35
|
+
* @param assets
|
|
36
|
+
*/
|
|
37
|
+
add(assets: TAssets): Assets;
|
|
38
|
+
/**
|
|
39
|
+
* Загрузить раннее добавленные ассеты, которые еще не были загружены
|
|
40
|
+
*/
|
|
41
|
+
load(tag?: string, timeout?: number): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Получить путь к ассету на основе текущего режима
|
|
44
|
+
* @param src
|
|
45
|
+
*/
|
|
46
|
+
static getPath(src: string | TPathType, useRealDevice?: boolean): string;
|
|
47
|
+
/**
|
|
48
|
+
* Получить конфиг ассета по имени
|
|
49
|
+
* @param assetName
|
|
50
|
+
*/
|
|
51
|
+
static getConfig(assetName: string): TMixedObject;
|
|
52
|
+
/**
|
|
53
|
+
* Получить значение конфига ассета по имени и ключу
|
|
54
|
+
* @param assetName
|
|
55
|
+
* @param configKey
|
|
56
|
+
* @param def
|
|
57
|
+
*/
|
|
58
|
+
static getConfigValue<T = string>(assetName: string, configKey: string, def?: T): T;
|
|
59
|
+
/**
|
|
60
|
+
* Получить текстуру спрайта по имени
|
|
61
|
+
* @param assetName
|
|
62
|
+
* @param textureName
|
|
63
|
+
*/
|
|
64
|
+
static getTexture(assetName: string, textureName?: string): TPixiTexture;
|
|
65
|
+
/**
|
|
66
|
+
* Получить спрайт по имени ассета и тестуры
|
|
67
|
+
* @param assetName ключ ассета в конфиге
|
|
68
|
+
* @param textureName имя текстуры в спрайте
|
|
69
|
+
*/
|
|
70
|
+
static getSprite(assetName: string, textureName?: string): TPixiSprite;
|
|
71
|
+
/**
|
|
72
|
+
* Получить анимированный спрайт по имени ассета
|
|
73
|
+
* @param assetName
|
|
74
|
+
* @param animation ?
|
|
75
|
+
*/
|
|
76
|
+
static getAnimatedSprite(assetName: string, animation: string): TPixiAnimatedSprite;
|
|
77
|
+
/** */
|
|
78
|
+
static getSpritesheet(assetName: string, animation: string): TPixiTextures | TPixiAnimations;
|
|
79
|
+
/**
|
|
80
|
+
* Получить звуковой спрайт
|
|
81
|
+
* @param assetName
|
|
82
|
+
*/
|
|
83
|
+
static getSound(assetName: string): Sound;
|
|
84
|
+
/**
|
|
85
|
+
* Получить bitmap шрифт
|
|
86
|
+
* @param assetName
|
|
87
|
+
*/
|
|
88
|
+
static getBitmapFont(assetName: string): PIXI.BitmapFont;
|
|
89
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import * as PIXI from 'pixi.js';
|
|
2
|
+
type TBitmapTextOptionsRequired = {
|
|
3
|
+
/** Название ассета из конфига, например ./src/configs/assets.fonts.ts */
|
|
4
|
+
assetName: string;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Убираем fontName
|
|
8
|
+
* Обязательное поле assetName
|
|
9
|
+
* Дополнительные необязательные поля currency и space
|
|
10
|
+
*/
|
|
11
|
+
export type TBitmapTextOptions = TBitmapTextOptionsRequired & Partial<Omit<PIXI.IBitmapTextStyle, 'fontName'> & {
|
|
12
|
+
/** Валюта для форматирования */
|
|
13
|
+
currency?: string;
|
|
14
|
+
/** Символ или набор символов для замены пробела */
|
|
15
|
+
space?: string;
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Расширение класса bitmap текста для обработки пробелов, валютных значений, проверки нехватки алфавита, и тд
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
*
|
|
22
|
+
* // Арт может собрать шрифт, где пробел заменяется нижним подчеркиванием
|
|
23
|
+
* // Если пробел оказался слишком узким - можно задать больше обычных пробелов {space: ' '})
|
|
24
|
+
* const bitmapText = new BitmapText('Any text', { assetName: 'fontWin', space: '_' })
|
|
25
|
+
*
|
|
26
|
+
* console.log(bitmapText.text) // 'Any_text', но будет отображаться как 'Any text'
|
|
27
|
+
*
|
|
28
|
+
* // Работа с валютой
|
|
29
|
+
*
|
|
30
|
+
* const bitmapText = new BitmapText('', { assetName: 'fontWin', currency: '%btc' })
|
|
31
|
+
* bitmapText.currencyFormat(100, true)
|
|
32
|
+
*
|
|
33
|
+
* console.log(bitmapText.text) // '100,00' - валюта будет проигнорировна, потому что в шрифте нет символа "%"
|
|
34
|
+
*
|
|
35
|
+
* // Предупреждения
|
|
36
|
+
*
|
|
37
|
+
* const bitmapText = new BitmapText('∑∑∑∑∆∆∆', { assetName: 'fontWin' }) // Будет предупреждение в консоли о нехватке алфавита
|
|
38
|
+
* bitmapText.text = 'µµµµ∫∫√√√√' // Будет предупреждение в консоли о нехватке алфавита
|
|
39
|
+
*/
|
|
40
|
+
export declare class BitmapText extends PIXI.BitmapText {
|
|
41
|
+
/** Название ассета шрифта */
|
|
42
|
+
protected _assetName: string;
|
|
43
|
+
/** Данные шрифта из .fnt файла **/
|
|
44
|
+
protected _fontFace: PIXI.BitmapFont;
|
|
45
|
+
/** Замена для пробелов ("_", " ", etc.) */
|
|
46
|
+
protected _space: string;
|
|
47
|
+
/** Валюта, используемая в шрифте */
|
|
48
|
+
protected _currency: string;
|
|
49
|
+
/** Следует ли показывать валюту */
|
|
50
|
+
protected _withCurrency: boolean;
|
|
51
|
+
protected _maxWidthCustom: number;
|
|
52
|
+
/** Догступ к fontFace, на всякий случай */
|
|
53
|
+
get fontFace(): PIXI.BitmapFont;
|
|
54
|
+
/** @inheritdoc */
|
|
55
|
+
get text(): string;
|
|
56
|
+
/**
|
|
57
|
+
* @inheritdoc
|
|
58
|
+
* Пожалуйста, используйте this.currencyFormat() и this.coinsFormat() для валютных значений
|
|
59
|
+
*/
|
|
60
|
+
set text(value: string);
|
|
61
|
+
/** @constructor */
|
|
62
|
+
constructor(text: string, options: TBitmapTextOptions);
|
|
63
|
+
/** Форматирование для валютного значения */
|
|
64
|
+
currencyFormat(value: number, withCurrency?: boolean): void;
|
|
65
|
+
/** Форматирование для значения в монетах */
|
|
66
|
+
coinsFormat(value: number, withCurrency?: boolean): void;
|
|
67
|
+
/** Проверка текста на нехватку алфавита */
|
|
68
|
+
hasMissing(text: string): boolean;
|
|
69
|
+
/** Замена пробелов и проверка отсутствия символов в алфавите */
|
|
70
|
+
refresh(): void;
|
|
71
|
+
/**
|
|
72
|
+
* Установить ограничения для размера компонента
|
|
73
|
+
* Одновременная установка width и height возможна только при isWordWrapMode=true
|
|
74
|
+
*/
|
|
75
|
+
setMaxWidth(maxWidth: number): void;
|
|
76
|
+
}
|
|
77
|
+
export {};
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
export declare enum EDevice {
|
|
2
|
+
desktop = "desktop",
|
|
3
|
+
mobile = "mobile"
|
|
4
|
+
}
|
|
5
|
+
export declare enum EOrientation {
|
|
6
|
+
landscape = "landscape",
|
|
7
|
+
portrait = "portrait"
|
|
8
|
+
}
|
|
9
|
+
export type TUiConfig = {
|
|
10
|
+
checkpointMobile: [number, number];
|
|
11
|
+
};
|
|
12
|
+
export type TGameConfig = {
|
|
13
|
+
device: EDevice;
|
|
14
|
+
orientation?: EOrientation;
|
|
15
|
+
size: [number, number];
|
|
16
|
+
align: [string, string];
|
|
17
|
+
};
|
|
18
|
+
export type TModalVariant = {
|
|
19
|
+
checkpoint?: [number, number];
|
|
20
|
+
size: [number, number];
|
|
21
|
+
classes?: string[];
|
|
22
|
+
};
|
|
23
|
+
export type TModalsConfig = {
|
|
24
|
+
device: EDevice;
|
|
25
|
+
orientation?: EOrientation;
|
|
26
|
+
variants: TModalVariant[];
|
|
27
|
+
};
|
|
28
|
+
export type TGameConfigs = TGameConfig[];
|
|
29
|
+
export type TGame = {
|
|
30
|
+
config: TGameConfig;
|
|
31
|
+
scale: number;
|
|
32
|
+
outerWidth: number;
|
|
33
|
+
outerHeight: number;
|
|
34
|
+
innerWidth: number;
|
|
35
|
+
innerHeight: number;
|
|
36
|
+
innerTop: number;
|
|
37
|
+
innerLeft: number;
|
|
38
|
+
innerRight: number;
|
|
39
|
+
innerBottom: number;
|
|
40
|
+
};
|
|
41
|
+
export type TModals = {
|
|
42
|
+
config: TModalsConfig;
|
|
43
|
+
variant: TModalVariant;
|
|
44
|
+
scale: number;
|
|
45
|
+
width: number;
|
|
46
|
+
height: number;
|
|
47
|
+
};
|
|
48
|
+
export type TModalsConfigs = TModalsConfig[];
|
|
49
|
+
export type TUi = {
|
|
50
|
+
config: TUiConfig;
|
|
51
|
+
mobile: boolean;
|
|
52
|
+
};
|
|
53
|
+
export type TUiConfigs = {
|
|
54
|
+
[key in EDevice]?: TUiConfig;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Класс BorderView содержит в себе заранее подсчитанные значения для адаптивки сцены, модалок и ui.
|
|
58
|
+
* Объект borderView создается один на всю игру (в самом конце модуля), экспортируется из этого модуля и используется всеми компонентами сразу.
|
|
59
|
+
* Перед запуском игры надо выполнить у borderView.init с нужными конфигами.
|
|
60
|
+
*/
|
|
61
|
+
export declare class BorderView {
|
|
62
|
+
/** высота верхней полосы */
|
|
63
|
+
topBar: number;
|
|
64
|
+
/** высота нижней полосы */
|
|
65
|
+
bottomBar: number;
|
|
66
|
+
/** Классы модального окна для устройств */
|
|
67
|
+
protected _modalDeviceClasses: {
|
|
68
|
+
[key in EDevice]: string;
|
|
69
|
+
};
|
|
70
|
+
/** Классы модального окна для ориентации */
|
|
71
|
+
protected _modalOrientationClasses: {
|
|
72
|
+
[key in EOrientation]: string;
|
|
73
|
+
};
|
|
74
|
+
/** Конфиги для сцены игры (задаются из геймплея через метод init) */
|
|
75
|
+
protected _gameConfigs: TGameConfigs;
|
|
76
|
+
/** Конфиги для модалок (задаются из геймплея через метод init) */
|
|
77
|
+
protected _modalsConfigs: TModalsConfigs;
|
|
78
|
+
/** Конфиги для ui (задаются из геймплея через метод init) */
|
|
79
|
+
protected _uiConfigs: TUiConfigs;
|
|
80
|
+
/** Активный на данный момент конфиг для сцены игры (вместе с подсчитанными значениями) */
|
|
81
|
+
protected _game: TGame;
|
|
82
|
+
/** Активный на данный момент конфиг для модалок (вместе с подсчитанными значениями) */
|
|
83
|
+
protected _modals: TModals;
|
|
84
|
+
/** Активный на данный момент конфиг для ui (вместе с подсчитанными значениями) */
|
|
85
|
+
protected _ui: TUi;
|
|
86
|
+
/** Флаг ретины (задается один раз и не меняется) */
|
|
87
|
+
protected _retina: boolean;
|
|
88
|
+
/** hardcoded value to display mobile version always */
|
|
89
|
+
protected _device: EDevice;
|
|
90
|
+
/** real device value to load appropriate assets */
|
|
91
|
+
protected _realDevice: EDevice;
|
|
92
|
+
/**
|
|
93
|
+
* Плотность пикселей девайса (задается один раз и не меняется)
|
|
94
|
+
* Так как TrueLogic использует конфиги мобильных устройств для десктопа удваиваем devicePixelRatio,
|
|
95
|
+
* иначе падает качество при рендере.
|
|
96
|
+
*/
|
|
97
|
+
protected _devicePixelRatio: number;
|
|
98
|
+
/** Ориентация экрана landscape или portrait (может меняться) */
|
|
99
|
+
protected _orientation: EOrientation;
|
|
100
|
+
/** Ширина видимой области экрана */
|
|
101
|
+
protected _width: number;
|
|
102
|
+
/** Высота видимой области экрана */
|
|
103
|
+
protected _height: number;
|
|
104
|
+
/** Соотношение сторон экрана */
|
|
105
|
+
protected _aspectRatio: number;
|
|
106
|
+
/** mobile */
|
|
107
|
+
get device(): EDevice;
|
|
108
|
+
/** desktop, mobile */
|
|
109
|
+
get realDevice(): EDevice;
|
|
110
|
+
/** Плотность пикселей девайса */
|
|
111
|
+
get devicePixelRatio(): number;
|
|
112
|
+
/** Ориентация экрана: landscape, portrait */
|
|
113
|
+
get orientation(): EOrientation;
|
|
114
|
+
/** Соотношение сторон экрана */
|
|
115
|
+
get aspectRatio(): number;
|
|
116
|
+
/** Ширина видимой области экрана */
|
|
117
|
+
get width(): number;
|
|
118
|
+
/** Высота видимой области экрана */
|
|
119
|
+
get height(): number;
|
|
120
|
+
/** Ретина или нет */
|
|
121
|
+
get isRetina(): boolean;
|
|
122
|
+
/** Десктоп или нет (планшет считается десктопом) */
|
|
123
|
+
get isDesktop(): boolean;
|
|
124
|
+
/** */
|
|
125
|
+
get isReallyDesktop(): boolean;
|
|
126
|
+
/** Мобильный или нет */
|
|
127
|
+
get isMobile(): boolean;
|
|
128
|
+
/** Мобильный в альбомной ориентации */
|
|
129
|
+
get isMobileLandscape(): boolean;
|
|
130
|
+
/** Мобильный в портретной ориентации */
|
|
131
|
+
get isMobilePortrait(): boolean;
|
|
132
|
+
/** Альбомная ориентация или нет */
|
|
133
|
+
get isLandscape(): boolean;
|
|
134
|
+
/** Портретная ориентация или нет */
|
|
135
|
+
get isPortrait(): boolean;
|
|
136
|
+
/** Режим сцены (меняется при изменении конфига) */
|
|
137
|
+
get gameMode(): string;
|
|
138
|
+
/** Ширина сцены */
|
|
139
|
+
get gameWidth(): number;
|
|
140
|
+
/** Высота сцены */
|
|
141
|
+
get gameHeight(): number;
|
|
142
|
+
/** Выравнивание сцены по X - left, center, right */
|
|
143
|
+
get gameAlignX(): string;
|
|
144
|
+
/** Выравнивание сцены по Y - left, center, right */
|
|
145
|
+
get gameAlignY(): string;
|
|
146
|
+
/** Скейл сцены, который применен к ней, чтобы она уместилась в видимой области экрана */
|
|
147
|
+
get gameScale(): number;
|
|
148
|
+
/** Реальная ширина всего канваса (равна ширине видимой области экрана) */
|
|
149
|
+
get gameOuterWidth(): number;
|
|
150
|
+
/** Реальная высота всего канваса (равна высоте видимой области экрана) */
|
|
151
|
+
get gameOuterHeight(): number;
|
|
152
|
+
/** Реальная ширина сцены (после применения скейла) */
|
|
153
|
+
get gameInnerWidth(): number;
|
|
154
|
+
/** Реальная высота сцены (после применения скейла) */
|
|
155
|
+
get gameInnerHeight(): number;
|
|
156
|
+
/** Реальный отступ сверху от сцены до края экрана */
|
|
157
|
+
get gameInnerTop(): number;
|
|
158
|
+
/** Реальный отступ слева от сцены до края экрана */
|
|
159
|
+
get gameInnerLeft(): number;
|
|
160
|
+
/** Реальный отступ справа от сцены до края экрана */
|
|
161
|
+
get gameInnerRight(): number;
|
|
162
|
+
/** Реальный отступ снизу от сцены до края экрана */
|
|
163
|
+
get gameInnerBottom(): number;
|
|
164
|
+
/** Ширина внутреннего контейнера модалок */
|
|
165
|
+
get modalsWidth(): number;
|
|
166
|
+
/** Высота внутреннего контейнера модалок */
|
|
167
|
+
get modalsHeight(): number;
|
|
168
|
+
/** CSS классы модалок */
|
|
169
|
+
get modalsClasses(): string[];
|
|
170
|
+
/** Масштаб модалок, который применен к ним, чтобы они уместились в видимой области экрана */
|
|
171
|
+
get modalsScale(): number;
|
|
172
|
+
/** Ширина внешнего контейнера модалок */
|
|
173
|
+
get modalsOuterWidth(): number;
|
|
174
|
+
/** Высота внешнего контейнера модалок */
|
|
175
|
+
get modalsOuterHeight(): number;
|
|
176
|
+
/** Мобильная ли сейчас версия ui или нет */
|
|
177
|
+
get uiMobile(): boolean;
|
|
178
|
+
/** Десктопная ли сейчас версия ui или нет */
|
|
179
|
+
get uiDesktop(): boolean;
|
|
180
|
+
/**
|
|
181
|
+
* Установить конфиги и пересчитать все значения
|
|
182
|
+
* @param gameConfigs
|
|
183
|
+
* @param modalsConfigs
|
|
184
|
+
* @param uiConfigs
|
|
185
|
+
*/
|
|
186
|
+
init(gameConfigs: TGameConfigs, modalsConfigs: TModalsConfigs, uiConfigs: TUiConfigs): void;
|
|
187
|
+
/**
|
|
188
|
+
* Пересчитать все значения
|
|
189
|
+
*/
|
|
190
|
+
recalc(): void;
|
|
191
|
+
/**
|
|
192
|
+
* Пересчитать все значения для сцены игры
|
|
193
|
+
*/
|
|
194
|
+
protected recalcGame(): void;
|
|
195
|
+
/**
|
|
196
|
+
* Пересчитать все значения для модалок
|
|
197
|
+
*/
|
|
198
|
+
protected recalcModals(): void;
|
|
199
|
+
/**
|
|
200
|
+
* Пересчитать все значения для ui
|
|
201
|
+
*/
|
|
202
|
+
protected recalcUI(): void;
|
|
203
|
+
}
|
|
204
|
+
export declare const borderView: BorderView;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/** Цвет и методы его конвертации в разные форматы
|
|
2
|
+
* @example
|
|
3
|
+
* const c = Color.hex(0xff00ff)
|
|
4
|
+
* const style = c.getRGBAString()
|
|
5
|
+
*/
|
|
6
|
+
export declare class Color {
|
|
7
|
+
private r;
|
|
8
|
+
private g;
|
|
9
|
+
private b;
|
|
10
|
+
private a;
|
|
11
|
+
/** Создает объект с заданным цветом
|
|
12
|
+
* @param hex цвет в формате 0xffffff
|
|
13
|
+
* @returns новый объект цвета
|
|
14
|
+
*/
|
|
15
|
+
static hex(hex: number): Color;
|
|
16
|
+
/** Создает объект с заданным цветом
|
|
17
|
+
* @param hexString цвет в формате "0xffffff"
|
|
18
|
+
* @returns новый объект цвета
|
|
19
|
+
*/
|
|
20
|
+
static hexString(hexString: string): Color;
|
|
21
|
+
/** Создает объект с заданным цветом
|
|
22
|
+
* @param r значение красного канала [0..1]
|
|
23
|
+
* @param g значение зеленого канала [0..1]
|
|
24
|
+
* @param b значение синего канала [0..1]
|
|
25
|
+
* @returns новый объект цвета
|
|
26
|
+
*/
|
|
27
|
+
static rgb(r: number, g: number, b: number): Color;
|
|
28
|
+
/** Создает объект с заданным цветом
|
|
29
|
+
* @param r значение красного канала [0..1]
|
|
30
|
+
* @param g значение зеленого канала [0..1]
|
|
31
|
+
* @param b значение синего канала [0..1]
|
|
32
|
+
* @param a значение канала прозрачности [0..1]
|
|
33
|
+
* @returns новый объект цвета
|
|
34
|
+
*/
|
|
35
|
+
static rgba(r: number, g: number, b: number, a: number): Color;
|
|
36
|
+
/** Создает объкт с белым непрозрачным цветом по умолчанию */
|
|
37
|
+
constructor();
|
|
38
|
+
/** Задает значение цвета
|
|
39
|
+
* @param hex: цвет в формате 0xffffff
|
|
40
|
+
*/
|
|
41
|
+
setHex(hex: number): this;
|
|
42
|
+
/** Задает значение цвета
|
|
43
|
+
* @param hexString: цвет в формате "0xffffff"
|
|
44
|
+
*/
|
|
45
|
+
setHexString(hexString: string): this;
|
|
46
|
+
/** Задает значение цвета
|
|
47
|
+
* @param r значение красного канала [0..1]
|
|
48
|
+
* @param g значение зеленого канала [0..1]
|
|
49
|
+
* @param b значение синего канала [0..1]
|
|
50
|
+
*/
|
|
51
|
+
setRGB(r: number, g: number, b: number): this;
|
|
52
|
+
/** Задает значение цвета
|
|
53
|
+
* @param r значение красного канала [0..1]
|
|
54
|
+
* @param g значение зеленого канала [0..1]
|
|
55
|
+
* @param b значение синего канала [0..1]
|
|
56
|
+
* @param a значение канала прозрачности [0..1] */
|
|
57
|
+
setRGBA(r: number, g: number, b: number, a: number): this;
|
|
58
|
+
/** Возвращает цвет
|
|
59
|
+
* @return цвет в формате 0xffffff */
|
|
60
|
+
getHex(): number;
|
|
61
|
+
/** Возвращает цвет
|
|
62
|
+
* @return цвет в формате "0xffffff" */
|
|
63
|
+
getHexString(): string;
|
|
64
|
+
/** Возвращает цвет
|
|
65
|
+
* @return цвет в формате "rgb(255, 255, 255)"
|
|
66
|
+
*/
|
|
67
|
+
getRGBString(): string;
|
|
68
|
+
/** Возвращает цвет
|
|
69
|
+
* @return цвет в формате "rgba(255, 255, 255, 1)"
|
|
70
|
+
*/
|
|
71
|
+
getRGBAString(): string;
|
|
72
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { EPivot } from '../extends/enum.types';
|
|
2
|
+
import { IContainer } from '../extends/interfaces';
|
|
3
|
+
import { TCallbackVoid, TMixedObject, TPixiSprite, TSupportMask } from '../extends/short.types';
|
|
4
|
+
import * as PIXI from 'pixi.js';
|
|
5
|
+
/**
|
|
6
|
+
* Доступные варианты пивота
|
|
7
|
+
*/
|
|
8
|
+
export type TxPos = EPivot.LEFT | EPivot.RIGHT | EPivot.CENTER;
|
|
9
|
+
export type TyPos = EPivot.TOP | EPivot.BOTTOM | EPivot.CENTER;
|
|
10
|
+
/**
|
|
11
|
+
* Основной контейнер для всего фреймворка
|
|
12
|
+
*
|
|
13
|
+
* @example Заимствование методов и аксессоров:
|
|
14
|
+
* class Scene {
|
|
15
|
+
* constructor(sceneName) {
|
|
16
|
+
* this.instance = new Container(sceneName)
|
|
17
|
+
* this.instance.link(
|
|
18
|
+
* this,
|
|
19
|
+
* ['width', 'height', 'alpha', 'position', 'rotation', 'scale'], // properties
|
|
20
|
+
* ['show', 'hide'] // methods
|
|
21
|
+
* )
|
|
22
|
+
* this.alpha = 0.5
|
|
23
|
+
* }
|
|
24
|
+
* }
|
|
25
|
+
*/
|
|
26
|
+
export declare class Container extends PIXI.Container implements IContainer {
|
|
27
|
+
[prop: string]: unknown;
|
|
28
|
+
/**
|
|
29
|
+
* Установить scale X
|
|
30
|
+
*/
|
|
31
|
+
set scaleX(value: number);
|
|
32
|
+
/**
|
|
33
|
+
* Получить scale X
|
|
34
|
+
*/
|
|
35
|
+
get scaleX(): number;
|
|
36
|
+
/**
|
|
37
|
+
* Установить scale Y
|
|
38
|
+
*/
|
|
39
|
+
set scaleY(value: number);
|
|
40
|
+
/**
|
|
41
|
+
* Получить scale Y
|
|
42
|
+
*/
|
|
43
|
+
get scaleY(): number;
|
|
44
|
+
/**
|
|
45
|
+
* @constructor
|
|
46
|
+
* @param name
|
|
47
|
+
*/
|
|
48
|
+
constructor(name?: string);
|
|
49
|
+
/**
|
|
50
|
+
* Метод перелинковки сеттеров\геттеров
|
|
51
|
+
* @param to Куда передаем геттеры\сеттеры
|
|
52
|
+
* @param properties Список свойств для перелинковки
|
|
53
|
+
* @param methods Список методов для перелинковки (необязательный)
|
|
54
|
+
*/
|
|
55
|
+
link(to: TMixedObject, properties: string[], methods?: string[]): void;
|
|
56
|
+
/**
|
|
57
|
+
* Добавляет для disabled функционал getter и setter
|
|
58
|
+
* @param to
|
|
59
|
+
* @param onDisabled
|
|
60
|
+
* @param onEnabled
|
|
61
|
+
*/
|
|
62
|
+
disabled(to: TMixedObject, onDisabled: TCallbackVoid, onEnabled: TCallbackVoid): void;
|
|
63
|
+
/**
|
|
64
|
+
* Скрыть элемент
|
|
65
|
+
*/
|
|
66
|
+
hide(): IContainer;
|
|
67
|
+
/**
|
|
68
|
+
* Показать элемент
|
|
69
|
+
*/
|
|
70
|
+
show(): IContainer;
|
|
71
|
+
/**
|
|
72
|
+
* Установка маски в текущий контейнер
|
|
73
|
+
* @param graphics
|
|
74
|
+
*/
|
|
75
|
+
setMask(graphics: TSupportMask): TSupportMask;
|
|
76
|
+
/**
|
|
77
|
+
* Удаление маски из текущего контейнера
|
|
78
|
+
*/
|
|
79
|
+
removeMask(): IContainer;
|
|
80
|
+
/**
|
|
81
|
+
* Установить фон на контейнер
|
|
82
|
+
* @param sprite
|
|
83
|
+
* @param offsetX
|
|
84
|
+
* @param offsetY
|
|
85
|
+
* @param angle
|
|
86
|
+
*/
|
|
87
|
+
setBackground(sprite: TPixiSprite, offsetX?: number, offsetY?: number, angle?: number): IContainer;
|
|
88
|
+
/**
|
|
89
|
+
* Опорную точку в центр
|
|
90
|
+
*/
|
|
91
|
+
setCenterPivot(): IContainer;
|
|
92
|
+
/**
|
|
93
|
+
* Установка опорной точки
|
|
94
|
+
* @example this.setPivot(EPivot.CENTER, EPivot.BOTTOM)
|
|
95
|
+
* @param x
|
|
96
|
+
* @param y
|
|
97
|
+
*/
|
|
98
|
+
setPivot(xPos?: TxPos, yPos?: TyPos): IContainer;
|
|
99
|
+
/**
|
|
100
|
+
* Центрирование элемента в другом элементе
|
|
101
|
+
* @example this.character.centeredTo(this.scene, -100, -100)
|
|
102
|
+
* @param toContainer
|
|
103
|
+
* @param offsetX
|
|
104
|
+
* @param offsetY
|
|
105
|
+
*/
|
|
106
|
+
centeredTo(toContainer: Container, offsetX?: number, offsetY?: number): IContainer;
|
|
107
|
+
/**
|
|
108
|
+
* Центрирование элемента относительно своих размеров
|
|
109
|
+
*/
|
|
110
|
+
centered(): IContainer;
|
|
111
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { IService } from '../extends/interfaces';
|
|
2
|
+
import { TCallbackService, TLangsReplace } from '../extends/short.types';
|
|
3
|
+
import { LangsService } from '../services/langs.service';
|
|
4
|
+
import { RegistryService } from '../services/registry.service';
|
|
5
|
+
import { SettingsService } from '../services/settings.service';
|
|
6
|
+
import { Emitter, IEmitter } from './emitter.class';
|
|
7
|
+
/**
|
|
8
|
+
* Контейнер зависимостей
|
|
9
|
+
*
|
|
10
|
+
* @rules
|
|
11
|
+
* - изначально все сервисы регистрируются как колбэки
|
|
12
|
+
* - инициализация сервиса происходит в момент первого обращения к нему
|
|
13
|
+
* - все сервисы должны быть зарегистрированы в конструкторе геймплея
|
|
14
|
+
* - контекст this функции инициализации сервиса будет ссылкой на контейнер (по умолчанию стрелочные функции и контекста там нет)
|
|
15
|
+
* - любой сервис по умолчанию может быть перезаписан в конструкторе геймплея (перезапись колбэка)
|
|
16
|
+
* - после регистрации каждый сервис доступен как метод геймплея (однако он может быть переопределен)
|
|
17
|
+
* - синглтоны и колбэки вынесены в контекст модуля чтобы они были общими у всех объектов, расширяющих DI
|
|
18
|
+
* - общий эмиттер событий для всех объектов, расширяющих DI
|
|
19
|
+
* - основные зависимости не регистрируются здесь потому что контейнер может понадобиться с другим набором сервисов в других движках
|
|
20
|
+
*
|
|
21
|
+
* @rules
|
|
22
|
+
* Не перекрывать методы:
|
|
23
|
+
* - this.on()
|
|
24
|
+
* - this.one()
|
|
25
|
+
* - this.off()
|
|
26
|
+
* - this.clear()
|
|
27
|
+
* - this.emit()
|
|
28
|
+
* - this.get()
|
|
29
|
+
* - this.set()
|
|
30
|
+
*
|
|
31
|
+
* @rules
|
|
32
|
+
* Не перекрывать свойства:
|
|
33
|
+
* - this.settings
|
|
34
|
+
* - this.registry
|
|
35
|
+
* - this.langs
|
|
36
|
+
* - this.currency
|
|
37
|
+
*
|
|
38
|
+
* @extends Emitter
|
|
39
|
+
*
|
|
40
|
+
*/
|
|
41
|
+
export declare class DI extends Emitter implements IEmitter {
|
|
42
|
+
/** настройки приложения (общие на все контейнеры) */
|
|
43
|
+
settings: () => SettingsService;
|
|
44
|
+
/** реестр объектов (общий) */
|
|
45
|
+
registry: () => RegistryService;
|
|
46
|
+
/** сервис языков */
|
|
47
|
+
langs: () => LangsService;
|
|
48
|
+
/**
|
|
49
|
+
* @constructor
|
|
50
|
+
* @param autobind
|
|
51
|
+
*/
|
|
52
|
+
constructor(autobind?: string[]);
|
|
53
|
+
/**
|
|
54
|
+
* Получить значение настройки из сервиса настроек
|
|
55
|
+
* @param name
|
|
56
|
+
* @param def
|
|
57
|
+
*/
|
|
58
|
+
get<T = string>(name: string, def?: T): T;
|
|
59
|
+
/**
|
|
60
|
+
* Обновить значение настройки в сервисе настроек
|
|
61
|
+
* @param name
|
|
62
|
+
* @param value
|
|
63
|
+
*/
|
|
64
|
+
set(name: string, value?: unknown): SettingsService;
|
|
65
|
+
/**
|
|
66
|
+
* Регистрация сервиса
|
|
67
|
+
*
|
|
68
|
+
* @example this.register('manager', () => new Manager())
|
|
69
|
+
* @example this.manager().getData()
|
|
70
|
+
* @param serviceName service name
|
|
71
|
+
* @param depCallback constructor callback
|
|
72
|
+
* @param autoinit init service immediately
|
|
73
|
+
*/
|
|
74
|
+
register(serviceName: string, depCallback: TCallbackService, autoinit?: boolean): TCallbackService;
|
|
75
|
+
/**
|
|
76
|
+
* Возвращает собраный сервис
|
|
77
|
+
* @param serviceName name of registered service
|
|
78
|
+
*/
|
|
79
|
+
service(serviceName: string): IService;
|
|
80
|
+
/** Собран ли сервис */
|
|
81
|
+
serviceInited(serviceName: string): boolean;
|
|
82
|
+
/** Зарегистрирован ли сервис */
|
|
83
|
+
serviceRegistered(serviceName: string): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Биндит отдельный сервис
|
|
86
|
+
* @param serviceName name of registered service
|
|
87
|
+
*/
|
|
88
|
+
bind(serviceName: string): DI;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Прямой доступ к настройкам в любом месте кода
|
|
92
|
+
* @rules
|
|
93
|
+
* - используем этот метод только для того чтобы сделать конфигурируемый код
|
|
94
|
+
* - значение по умолчанию должно быть задано обязательно
|
|
95
|
+
* - код который использует настройку должен работать автономно на основе значения по умолчанию
|
|
96
|
+
*/
|
|
97
|
+
export declare const get: <T = string>(name: string, def: T) => T;
|
|
98
|
+
/**
|
|
99
|
+
* Прямой доступ к объект в реестре
|
|
100
|
+
* @example registry('renderer')
|
|
101
|
+
*/
|
|
102
|
+
export declare const registry: <T>(name: string) => T;
|
|
103
|
+
/**
|
|
104
|
+
* Прямой доступ к языковым меткам
|
|
105
|
+
* @rules
|
|
106
|
+
* - языковые метки должны быть загружены заранее и заданы в конструкторе геймплея
|
|
107
|
+
* - значение по умолчанию должно быть задано обязательно
|
|
108
|
+
* @example lang('rules', 'Rules @time@:', { @time@ : new Date() })
|
|
109
|
+
*/
|
|
110
|
+
export declare const lang: (slug: string, def: string, replaces?: TLangsReplace) => string;
|