@truelab/truengine 4.1.0 → 4.2.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 (32) hide show
  1. package/dist/truengine.js +5454 -5868
  2. package/dist/tweakpane-chunk.js +5600 -0
  3. package/dist/tweakpane-plugin-essentials-chunk.js +5991 -0
  4. package/dist/types/src/components/animation.catalog.d.ts +74 -0
  5. package/dist/types/src/components/animation.catalog.d.ts.map +1 -0
  6. package/dist/types/src/components/cheat.component.d.ts +101 -60
  7. package/dist/types/src/components/cheat.component.d.ts.map +1 -1
  8. package/dist/types/src/components/cheat.panel.animations.d.ts +46 -0
  9. package/dist/types/src/components/cheat.panel.animations.d.ts.map +1 -0
  10. package/dist/types/src/components/cheat.panel.server.d.ts +45 -0
  11. package/dist/types/src/components/cheat.panel.server.d.ts.map +1 -0
  12. package/dist/types/src/components/cheat.panel.settings.d.ts +81 -0
  13. package/dist/types/src/components/cheat.panel.settings.d.ts.map +1 -0
  14. package/dist/types/src/components/cheat.types.d.ts +27 -0
  15. package/dist/types/src/components/cheat.types.d.ts.map +1 -0
  16. package/dist/types/src/components/slot/intrigue/intrigue.blaze.component.d.ts +72 -0
  17. package/dist/types/src/components/slot/intrigue/intrigue.blaze.component.d.ts.map +1 -0
  18. package/dist/types/src/components/slot/intrigue/intrigue.component.d.ts +31 -0
  19. package/dist/types/src/components/slot/intrigue/intrigue.component.d.ts.map +1 -1
  20. package/dist/types/src/components/slot/intrigue/intrigue.switch.component.d.ts +57 -0
  21. package/dist/types/src/components/slot/intrigue/intrigue.switch.component.d.ts.map +1 -0
  22. package/dist/types/src/components/slot/slot.cheats.d.ts +3 -1
  23. package/dist/types/src/components/slot/slot.cheats.d.ts.map +1 -1
  24. package/dist/types/src/components/slot/slot.component.d.ts.map +1 -1
  25. package/dist/types/src/extends/events.types.d.ts +5 -0
  26. package/dist/types/src/extends/events.types.d.ts.map +1 -1
  27. package/dist/types/src/index.d.ts +7 -0
  28. package/dist/types/src/index.d.ts.map +1 -1
  29. package/dist/types/src/version.d.ts +3 -0
  30. package/dist/types/src/version.d.ts.map +1 -0
  31. package/dist/types/vite.config.d.ts.map +1 -1
  32. package/package.json +4 -2
@@ -0,0 +1,74 @@
1
+ import { TMixedObject } from '../extends/short.types';
2
+ import { TCheatMeta, TCustomValue } from './cheat.types';
3
+ /** Настраиваемый параметр анимации: аксессоры к полю конфига + метаданные контрола */
4
+ export type TAnimationParam = {
5
+ name: string;
6
+ group?: string;
7
+ get: () => TCustomValue;
8
+ set: (value: TCustomValue) => void;
9
+ meta?: TCheatMeta;
10
+ };
11
+ /** Вариант анимации: стиль/реализация одного эффекта (например, цветовой пресет интриги) */
12
+ export type TAnimationVariant = {
13
+ id: string;
14
+ title?: string;
15
+ };
16
+ /**
17
+ * Запись каталога программных анимаций: эффект, который можно выбрать, настроить и проиграть
18
+ * из чит-панели (вкладка Animations).
19
+ */
20
+ export type TAnimationEntry = {
21
+ /** Уникальный идентификатор, например 'slot.intrigue' */
22
+ id: string;
23
+ /** Заголовок в панели */
24
+ title: string;
25
+ /** Варианты эффекта; если их нет, панель показывает только параметры */
26
+ variants?: TAnimationVariant[];
27
+ getVariant?: () => string;
28
+ setVariant?: (id: string) => void;
29
+ /** Параметры текущего варианта — панель запрашивает заново после смены варианта */
30
+ params?: () => TAnimationParam[];
31
+ /** Превью: проиграть эффект вне игровой ситуации */
32
+ play?: () => void;
33
+ /** Остановить превью */
34
+ stop?: () => void;
35
+ /**
36
+ * Снимок настроек в форме конфига игры — панель отдаёт его кнопкой «Copy config»,
37
+ * чтобы подобранные значения можно было перенести в код.
38
+ */
39
+ exportConfig?: () => TMixedObject;
40
+ /** Путь к конфигу для подсказки в скопированном фрагменте, например 'components.intrigue' */
41
+ configPath?: string;
42
+ };
43
+ /**
44
+ * Каталог программных (кодовых) анимаций.
45
+ *
46
+ * Компоненты регистрируют свои эффекты при создании и снимают при уничтожении; чит-панель
47
+ * показывает каталог отдельной вкладкой: выбор варианта, настройка параметров, превью.
48
+ *
49
+ * @example
50
+ * animationCatalog.register({
51
+ * id: 'slot.intrigue',
52
+ * title: 'Reel intrigue',
53
+ * variants: [{ id: 'gold' }, { id: 'ice' }],
54
+ * getVariant: () => config.preset,
55
+ * setVariant: (id) => (config.preset = id),
56
+ * params: () => [{ name: 'pulsePeriod', get: () => config.pulse, set: (v) => (config.pulse = v as number) }],
57
+ * play: () => component.start(2),
58
+ * stop: () => component.stop(),
59
+ * })
60
+ */
61
+ declare class AnimationCatalog {
62
+ protected _entries: Map<string, TAnimationEntry>;
63
+ /** Регистрирует (или заменяет) эффект в каталоге */
64
+ register(entry: TAnimationEntry): void;
65
+ /** Убирает эффект из каталога (например, при уничтожении компонента) */
66
+ unregister(id: string): void;
67
+ /** Все зарегистрированные эффекты в порядке регистрации */
68
+ list(): TAnimationEntry[];
69
+ /** Эффект по идентификатору */
70
+ get(id: string): TAnimationEntry;
71
+ }
72
+ export declare const animationCatalog: AnimationCatalog;
73
+ export {};
74
+ //# sourceMappingURL=animation.catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animation.catalog.d.ts","sourceRoot":"","sources":["../../../../src/components/animation.catalog.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAExD,sFAAsF;AACtF,MAAM,MAAM,eAAe,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,YAAY,CAAA;IACvB,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;IAClC,IAAI,CAAC,EAAE,UAAU,CAAA;CACpB,CAAA;AAED,4FAA4F;AAC5F,MAAM,MAAM,iBAAiB,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAA;IACV,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,wEAAwE;IACxE,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC9B,UAAU,CAAC,EAAE,MAAM,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,eAAe,EAAE,CAAA;IAChC,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,IAAI,CAAA;IACjB,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,IAAI,CAAA;IACjB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,YAAY,CAAA;IACjC,6FAA6F;IAC7F,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,cAAM,gBAAgB;IAClB,SAAS,CAAC,QAAQ,+BAAqC;IAEvD,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAKtC,wEAAwE;IACxE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI5B,2DAA2D;IAC3D,IAAI,IAAI,eAAe,EAAE;IAIzB,+BAA+B;IAC/B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe;CAGnC;AAED,eAAO,MAAM,gBAAgB,kBAAyB,CAAA"}
@@ -1,102 +1,143 @@
1
- import { Controller, GUI } from 'lil-gui';
1
+ import { BindingApi } from '@tweakpane/core';
2
+ import { FpsGraphBladeApi } from '@tweakpane/plugin-essentials';
3
+ import { FolderApi, Pane } from 'tweakpane';
2
4
  import { TGenericObject } from '../extends/short.types';
3
5
  import { AbstractHtmlComponent } from './abstract.html.component';
6
+ import { AnimationsPanel } from './cheat.panel.animations';
7
+ import { ServerCheatsPanel } from './cheat.panel.server';
8
+ import { LiveSettingsPanel } from './cheat.panel.settings';
9
+ import { TCheat, TCheatMeta, TCustomCheatParams, TCustomValue } from './cheat.types';
4
10
  import { FpsMeterComponent } from './fpsmeter.component';
5
- export type TCheatSection = {
6
- name: string;
7
- value: string;
8
- values?: string[];
9
- };
10
- export type TCheat = TGenericObject<TCheatSection>;
11
- export type TCustomValue = number | string | boolean;
12
- export type TCustomCheatParams = {
13
- scope: string;
14
- name: string;
15
- value: TCustomValue;
16
- group?: string;
17
- default?: TCustomValue;
11
+ import type * as PIXI from 'pixi.js';
12
+ export * from './cheat.types';
13
+ /** Сохраняемое UI-состояние панели: свёрнутость, активная вкладка, позиция и ширина на десктопе */
14
+ type TPanelUiState = {
15
+ expanded?: boolean;
16
+ tab?: number;
17
+ x?: number;
18
+ y?: number;
19
+ w?: number;
18
20
  };
19
21
  /**
20
- * Добавляет читинг тул
22
+ * Дебаг-панель игры (tweakpane): вкладка Cheats — серверные форс-исходы,
23
+ * вкладка Settings — живые настройки клиента. Вкладки создаются независимо,
24
+ * каждая по своему условию доступности; tweakpane грузится динамическим импортом
25
+ * и не попадает в основной бандл.
26
+ *
27
+ * Хоткей ` (Backquote) сворачивает/разворачивает панель; на десктопе панель
28
+ * перетаскивается за тайтл-бар. Состояние UI переживает перезагрузку.
21
29
  */
22
30
  export declare class CheatComponent extends AbstractHtmlComponent {
23
- protected _cheat: TCheat;
24
- protected _cheatOriginal: string;
25
- protected _panel: GUI;
26
- protected _cheatFolder: GUI;
27
- protected _controllers: TGenericObject<Controller>;
31
+ protected _pane: Pane;
32
+ protected _serverPanel: ServerCheatsPanel;
33
+ protected _settingsPanel: LiveSettingsPanel;
34
+ protected _animationsPanel: AnimationsPanel;
28
35
  protected _fpsMeter: FpsMeterComponent;
36
+ protected _fpsGraph: FpsGraphBladeApi;
37
+ protected _fpsTicker: PIXI.Ticker;
38
+ protected _fpsGraphTick: () => void;
39
+ protected _info: TGenericObject<string>;
40
+ protected _infoFolder: FolderApi;
41
+ protected _pendingCustom: TCustomCheatParams[];
42
+ protected _initStarted: boolean;
29
43
  private static _isTestMode;
44
+ private static _isDebugMode;
30
45
  private static _cheatInstance;
46
+ private static _uiStorageKey;
31
47
  /**
32
48
  * Инициализирует статические параметры для проверки доступности читов
33
49
  *
34
50
  * @param gameId слаг игры — разводит сохранённые читы разных игр в localStorage
35
51
  * (localStorage общий для всех игр на одном origin, например на localhost)
52
+ * @param isDebugMode открывает вкладку Settings без серверных читов (дев-окружения)
36
53
  */
37
- static initialize(isTestMode: boolean, cheatInstance: unknown, gameId: string): void;
38
- /** Проверяет доступность читов */
54
+ static initialize(isTestMode: boolean, cheatInstance: unknown, gameId: string, isDebugMode?: boolean): void;
55
+ /** Доступны ли серверные читы (вкладка Cheats) */
56
+ static isCheatsAvailable(): boolean;
57
+ /** Доступны ли живые настройки клиента (вкладка Settings) */
58
+ static isSettingsAvailable(): boolean;
59
+ /** Проверяет доступность панели в целом */
39
60
  static isAvailable(): boolean;
40
61
  customPresets: string[];
41
62
  customScopeOrder: string[];
42
- protected _custom: TGenericObject<TCustomValue>;
43
- protected _defaults: TGenericObject<TCustomValue>;
44
- protected _customFolder: GUI;
45
- protected _customGroupDelimiter: string;
46
- protected _customScopes: Map<string, GUI>;
47
- protected _customGroups: Map<string, GUI>;
48
- protected _customPresetNumber: Controller;
49
- protected _customPresetValue: Controller;
50
- protected _customPresetCopy: Controller;
51
- protected _customPresetPaste: Controller;
52
- protected _customControllers: Map<string, Controller>;
53
63
  onChange: () => void;
54
64
  /**
55
- * Если нужно сделать тонкую настройку какого-то кастомного чита (step, min/max, выпадающий список и тд)
65
+ * Тонкая настройка контрола после создания (refresh/hidden/disabled), ключ scope__group__name.
66
+ * Диапазоны и выпадающие списки задаются через meta дескриптора при регистрации чита.
56
67
  *
57
68
  * @example
58
- * cheatComponent.customControllers.get('regular__Slot spinning__spinVelocity').min(10).max(150).step(1)
59
- * cheatComponent.customControllers.get('regular__Intrigue__jingle').options(['intrigue.mp3', 'intrigue_final (03).mp3'])
69
+ * cheatComponent.customBindings.get('regular.scene__Slot spinning__spinVelocity').hidden = true
60
70
  */
61
- get customControllers(): Map<string, Controller>;
71
+ get customBindings(): Map<string, BindingApi<unknown, TCustomValue>>;
62
72
  /** */
63
73
  draw(): Promise<this>;
64
- /** */
65
- setCheat(cheat: TCheat): Promise<this>;
74
+ /**
75
+ * Создаёт панель. cheat — серверные читы из clientData (null, если доступны только Settings).
76
+ */
77
+ setCheat(cheat?: TCheat): Promise<this>;
78
+ /**
79
+ * Информационный блок внизу панели (readonly): слаг игры, версии, флаги окружения.
80
+ * Вызывать до setCheat (значения отрисуются при создании панели).
81
+ */
82
+ setInfo(info: TGenericObject<string>): void;
83
+ /** RNG последнего раунда — проксирует во вкладку Cheats (см. ServerCheatsPanel.setLastRng) */
84
+ setLastRng(value: string): void;
66
85
  /** */
67
86
  getCheat(): string;
68
87
  /**
69
88
  * добавить чит тайминга в панель
70
89
  * функция вызывается через слушатель в любом компоненте
71
- * добавить чит - emitter.emit('cheat.custom:add', { scope, name, value, group })
90
+ * добавить чит - emitter.emit('cheat.custom:add', { scope, name, value, group, meta })
72
91
  * подписаться на изменение с панели - emitter.on('cheat.custom:changed', this.name, ({ scope, name, value }) => value )
73
92
  *
74
- * scope (обычно имя сцены) разводит читы по подвкладкам: Custom -> [scope] -> [group] -> контролы.
75
- */
76
- setCustomCheat(scope: string, name: string, value: TCustomValue, group?: string, defaultValue?: TCustomValue): void;
77
- /**
78
- * FPS-метр с тумблером в панели (Settings -> general -> Performance).
79
- * Тикер берётся из реестра ('ticker', кладёт Engine.init), включённость персистится в cheatStore.
93
+ * scope (обычно имя сцены) разводит читы по подвкладкам: Settings -> [scope] -> [group] -> контролы.
80
94
  */
81
- protected _setupFpsMeter(): Promise<void>;
82
- /** Лейбл подвкладки сцены: regular.scene -> regular */
83
- protected _scopeLabel(scope: string): string;
84
- /** Создаёт (один раз) папку scope с кнопками Reset/Copy/Paste и возвращает её */
85
- protected _ensureScopeFolder(scope: string): GUI;
95
+ setCustomCheat(scope: string, name: string, value: TCustomValue, group?: string, defaultValue?: TCustomValue, meta?: TCheatMeta): void;
86
96
  /**
87
97
  * Задаёт порядок подвкладок (scope) в панели и заранее создаёт их папки в этом порядке.
88
98
  * Scope, не указанные здесь, добавляются после в порядке появления.
89
99
  */
90
100
  setCustomScopeOrder(order: string[]): void;
91
- /** Сбрасывает все значения scope к дефолтам: восстанавливает отображение, чистит стор, перезаливает в живой конфиг */
92
- protected _resetScope(scope: string): void;
93
- /** JSON только значений данного scope */
94
- protected _scopePreset(scope: string): string;
95
- /** обновить сгенерированный строковый пресет в поле ввода */
96
- protected _updatePreset(): void;
97
- /** создать подпапку с читами таймингов */
98
- protected _createCustomFolder(): void;
101
+ /**
102
+ * Уничтожить компонент
103
+ */
104
+ destroy(): Promise<this>;
105
+ /** Сохранённое UI-состояние панели */
106
+ protected _loadUi(): TPanelUiState;
107
+ /** Дописывает изменения в сохранённое UI-состояние */
108
+ protected _saveUi(patch: TPanelUiState): void;
109
+ /**
110
+ * Хоткей свернуть/развернуть панель (кроме фокуса в полях ввода).
111
+ * Backquote — физическая клавиша `/~/ё, IntlBackslash — §/± на ISO-клавиатурах мака.
112
+ */
113
+ protected _onHotkey: (event: KeyboardEvent) => void;
99
114
  /** */
100
- protected _updateCustomValues(preset: string): void;
115
+ protected _setupHotkey(): void;
116
+ /**
117
+ * Перетаскивание панели за тайтл-бар (только реальный десктоп).
118
+ * Сдвиг меньше 5px считается кликом (сворачивание), больше — переносом;
119
+ * клик после переноса гасится, позиция сохраняется.
120
+ */
121
+ protected _setupDrag(): void;
122
+ /**
123
+ * Ресайз панели за правый край (только реальный десктоп): невидимый хэндл-полоска,
124
+ * ширина сохраняется и переживает перезагрузку. Колонка значений tweakpane фиксированная —
125
+ * при расширении растёт колонка лейблов.
126
+ */
127
+ protected _setupResize(): void;
128
+ /** Восстанавливает сохранённую ширину панели (только развёрнутой, только десктоп) */
129
+ protected _applyWidth(): void;
130
+ /** Ставит панель в координаты, не выпуская тайтл-бар за пределы вьюпорта */
131
+ protected _applyPosition(left: number, top: number, width?: number): void;
132
+ /** Блок Info внизу панели (создаётся один раз) */
133
+ protected _renderInfo(): void;
134
+ /**
135
+ * FPS-инструменты в Settings -> general -> Performance: тумблер DOM-оверлея
136
+ * (FpsMeterComponent, персистится в cheatStore) и график FPS (плагин essentials).
137
+ * Тикер берётся из реестра ('ticker', кладёт Engine.init).
138
+ */
139
+ protected _setupFps(): Promise<void>;
140
+ /** График FPS из плагина essentials (зарегистрирован при создании панели) */
141
+ protected _setupFpsGraph(): void;
101
142
  }
102
143
  //# sourceMappingURL=cheat.component.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cheat.component.d.ts","sourceRoot":"","sources":["../../../../src/components/cheat.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cheat.component.d.ts","sourceRoot":"","sources":["../../../../src/components/cheat.component.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { BindingApi, BindingParams } from '@tweakpane/core';
2
+ import { FolderApi, Pane, TabPageApi } from 'tweakpane';
3
+ import { TGenericObject } from '../extends/short.types';
4
+ import { TAnimationEntry, TAnimationParam } from './animation.catalog';
5
+ import { TCustomValue } from './cheat.types';
6
+ export type TAnimationsPage = Pane | TabPageApi;
7
+ /**
8
+ * Вкладка Animations: каталог программных анимаций — выбор варианта эффекта, живая настройка
9
+ * параметров и превью (Play/Stop). Содержимое строится из animationCatalog и пересобирается,
10
+ * когда компоненты регистрируют или снимают свои эффекты.
11
+ *
12
+ * Значения параметров персистятся в cheatStore (scope 'animations', group — id эффекта),
13
+ * поэтому подобранная настройка переживает перезагрузку, как и остальные читы.
14
+ */
15
+ export declare class AnimationsPanel {
16
+ protected _page: TAnimationsPage;
17
+ protected _folders: FolderApi[];
18
+ protected _values: TGenericObject<TCustomValue>;
19
+ protected _empty: BindingApi<unknown, string>;
20
+ protected _emptyText: {
21
+ info: string;
22
+ };
23
+ protected _renderScheduled: boolean;
24
+ /** Строит вкладку и подписывается на изменения каталога */
25
+ build(page: TAnimationsPage, listenerName: string): void;
26
+ /** Откладывает пересборку до конца текущего события (несколько вызовов схлопываются в один) */
27
+ protected _scheduleRender(): void;
28
+ /** Пересобирает содержимое вкладки из каталога */
29
+ protected _render(): void;
30
+ /** Один эффект: выбор варианта, параметры, кнопки превью */
31
+ protected _renderEntry(entry: TAnimationEntry): void;
32
+ /** Действия записи одной строкой: превью и выгрузка конфига */
33
+ protected _renderActions(folder: FolderApi, entry: TAnimationEntry): void;
34
+ /**
35
+ * Кладёт подобранные значения в буфер обмена готовым фрагментом конфига и дублирует
36
+ * их в консоль (буфер недоступен без разрешения и вне https).
37
+ */
38
+ protected _copyConfig(entry: TAnimationEntry): void;
39
+ /** Убирает хвосты двоичного представления: 1.2000000000000002 -> 1.2 */
40
+ protected _round(value: number): number;
41
+ /** Контрол одного параметра с персистентностью значения */
42
+ protected _renderParam(folder: FolderApi, entry: TAnimationEntry, param: TAnimationParam): void;
43
+ /** Переводит meta параметра в опции биндинга tweakpane (options принимает только словарь или пары) */
44
+ protected _bindingParams(param: TAnimationParam): BindingParams;
45
+ }
46
+ //# sourceMappingURL=cheat.panel.animations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cheat.panel.animations.d.ts","sourceRoot":"","sources":["../../../../src/components/cheat.panel.animations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmB,UAAU,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEjF,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAG5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AACvD,OAAO,EAAoB,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAExF,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,UAAU,CAAA;AAK/C;;;;;;;GAOG;AACH,qBAAa,eAAe;IACxB,SAAS,CAAC,KAAK,EAAE,eAAe,CAAO;IACvC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAK;IACpC,SAAS,CAAC,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,CAAK;IACpD,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAO;IACpD,SAAS,CAAC,UAAU;;MAA8C;IAClE,SAAS,CAAC,gBAAgB,UAAQ;IAElC,2DAA2D;IAC3D,KAAK,CAAC,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAQxD,+FAA+F;IAC/F,SAAS,CAAC,eAAe,IAAI,IAAI;IAWjC,kDAAkD;IAClD,SAAS,CAAC,OAAO,IAAI,IAAI;IAgBzB,4DAA4D;IAC5D,SAAS,CAAC,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAyCpD,+DAA+D;IAC/D,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI;IAwBzE;;;OAGG;IACH,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAuBnD,wEAAwE;IACxE,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIvC,2DAA2D;IAC3D,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI;IAsB/F,sGAAsG;IACtG,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,aAAa;CAiBlE"}
@@ -0,0 +1,45 @@
1
+ import { BindingApi, FolderApi } from '@tweakpane/core';
2
+ import { Pane, TabPageApi } from 'tweakpane';
3
+ import { TCheat, TCheatSection } from './cheat.types';
4
+ export type TCheatPage = Pane | TabPageApi;
5
+ /**
6
+ * Вкладка Cheats: серверные форс-исходы.
7
+ * Секции с values рисуются радиогридом (форс исхода одним кликом, «—» сбрасывает выбор),
8
+ * остальные (randomNumbers) — текстовым полем. Изменения уходят на сервер через onChange
9
+ * (обычно truelogic.setTest), где подменяют RNG раунда.
10
+ * Требует зарегистрированного плагина @tweakpane/plugin-essentials (radiogrid).
11
+ */
12
+ export declare class ServerCheatsPanel {
13
+ onChange: () => void;
14
+ protected _cheat: TCheat;
15
+ protected _original: string;
16
+ protected _page: TCheatPage;
17
+ protected _bindings: Map<string, BindingApi<unknown, string, import('@tweakpane/core/dist/blade/binding/controller/binding').BindingController<unknown, import('@tweakpane/core').ValueController<unknown, import('@tweakpane/core').View, import('@tweakpane/core').Value<unknown>>, import('@tweakpane/core').BindingValue<unknown>>>>;
18
+ protected _rngFolder: FolderApi;
19
+ protected _lastRng: {
20
+ value: string;
21
+ };
22
+ protected _lastRngBinding: BindingApi<unknown, string>;
23
+ /** Создаёт контролы секций читов на переданной странице панели */
24
+ build(page: TCheatPage, cheat: TCheat): void;
25
+ /**
26
+ * Показывает RNG последнего раунда (папка «Last round RNG»):
27
+ * числа можно скопировать или одним кликом подставить в randomNumbers,
28
+ * чтобы точно воспроизвести раунд.
29
+ */
30
+ setLastRng(value: string): void;
31
+ /** JSON читов, если они отличаются от исходного снапшота, иначе null */
32
+ getCheat(): string;
33
+ /** Радиогрид секции в собственной папке */
34
+ protected _buildGrid(page: TCheatPage, key: string, section: TCheatSection): BindingApi<unknown, string>;
35
+ /** Нормализует values секции (массив или словарь) в ячейки сетки */
36
+ protected _entries(values: TCheatSection['values']): {
37
+ title: string;
38
+ value: string;
39
+ }[];
40
+ /** Создаёт (один раз) папку с RNG последнего раунда */
41
+ protected _ensureRngFolder(): void;
42
+ /** Подставляет RNG последнего раунда в randomNumbers (refresh биндинга триггерит onChange) */
43
+ protected _applyLastRng(): void;
44
+ }
45
+ //# sourceMappingURL=cheat.panel.server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cheat.panel.server.d.ts","sourceRoot":"","sources":["../../../../src/components/cheat.panel.server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAiB,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEjD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAErD,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,UAAU,CAAA;AAM1C;;;;;;GAMG;AACH,qBAAa,iBAAiB;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAA;IAE3B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAO;IAC/B,SAAS,CAAC,SAAS,SAAK;IACxB,SAAS,CAAC,KAAK,EAAE,UAAU,CAAO;IAClC,SAAS,CAAC,SAAS,sTAAiD;IAEpE,SAAS,CAAC,UAAU,EAAE,SAAS,CAAO;IACtC,SAAS,CAAC,QAAQ;;MAAgB;IAClC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAO;IAE7D,kEAAkE;IAClE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAiB5C;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS/B,wEAAwE;IACxE,QAAQ,IAAI,MAAM;IAIlB,2CAA2C;IAC3C,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC;IA+BxG,oEAAoE;IACpE,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE;IAMvF,uDAAuD;IACvD,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAuBlC,8FAA8F;IAC9F,SAAS,CAAC,aAAa,IAAI,IAAI;CAQlC"}
@@ -0,0 +1,81 @@
1
+ import { BindingApi, BindingParams } from '@tweakpane/core';
2
+ import { FolderApi, Pane, TabPageApi } from 'tweakpane';
3
+ import { TGenericObject } from '../extends/short.types';
4
+ import { TCheatMeta, TCustomCheatParams, TCustomValue } from './cheat.types';
5
+ export type TSettingsPage = Pane | TabPageApi;
6
+ type TSettingBinding = BindingApi<unknown, TCustomValue>;
7
+ /**
8
+ * Вкладка Settings: живые настройки клиента (тайминги, звук, перформанс).
9
+ * Значения пишутся напрямую в конфиги через события cheat.custom:* и персистятся
10
+ * в cheatStore. Структура: [scope] -> [group] -> контрол, плюс пресеты с copy/paste.
11
+ */
12
+ export declare class LiveSettingsPanel {
13
+ protected _page: TSettingsPage;
14
+ protected _custom: TGenericObject<TCustomValue>;
15
+ protected _defaults: TGenericObject<TCustomValue>;
16
+ protected _delimiter: string;
17
+ protected _scopes: Map<string, FolderApi>;
18
+ protected _groups: Map<string, FolderApi>;
19
+ protected _bindings: Map<string, TSettingBinding>;
20
+ protected _presets: string[];
21
+ protected _presetField: {
22
+ list: number;
23
+ value: string;
24
+ };
25
+ protected _presetValueBinding: BindingApi<unknown, string>;
26
+ protected _filterField: {
27
+ query: string;
28
+ };
29
+ protected _expandedSnapshot: Map<string, boolean>;
30
+ protected _hiddenSnapshot: Map<string, boolean>;
31
+ protected _silent: boolean;
32
+ /**
33
+ * Тонкая настройка контрола после создания (refresh/hidden/disabled), ключ scope__group__name.
34
+ * Диапазоны и списки значений задаются через meta дескриптора при регистрации чита.
35
+ */
36
+ get bindings(): Map<string, TSettingBinding>;
37
+ /** Создаёт заголовок с фильтром и пресетами и заранее заказанные scope-папки */
38
+ build(page: TSettingsPage, presets: string[], scopeOrder: string[]): void;
39
+ /**
40
+ * Добавляет контрол чита: Settings -> [scope] -> [group].
41
+ * Изменение пишется в cheatStore и рассылается событием cheat.custom:changed.
42
+ */
43
+ addSetting({ scope, name, value, group, default: defaultValue, meta }: TCustomCheatParams): void;
44
+ /** Создаёт (один раз) папку scope с кнопками Reset/Copy/Paste и возвращает её */
45
+ ensureScope(scope: string): FolderApi;
46
+ /** Создаёт (один раз) папку группы внутри scope и возвращает её */
47
+ ensureGroup(scope: string, group: string): FolderApi;
48
+ /** Лейбл подвкладки сцены: regular.scene -> regular */
49
+ protected _scopeLabel(scope: string): string;
50
+ /** Переводит meta дескриптора в параметры биндинга tweakpane */
51
+ protected _bindingParams(meta: TCheatMeta): BindingParams;
52
+ /** Контролы пресетов в заголовке вкладки */
53
+ protected _createPresetControls(): void;
54
+ /**
55
+ * Фильтр по читам: скрывает не подходящие под запрос контролы и пустые папки,
56
+ * подходящие scope разворачивает. Ищет по ключу scope__group__name.
57
+ * change у текстового инпута tweakpane срабатывает только на blur/enter,
58
+ * поэтому слушаем нативный input.
59
+ */
60
+ protected _createFilterControl(): void;
61
+ /** */
62
+ protected _applyFilter(query: string): void;
63
+ /** Есть ли видимые (не скрытые фильтром) контролы с данным префиксом ключа */
64
+ protected _hasVisible(prefix: string): boolean;
65
+ /** Показывает пресет в поле ввода и применяет его */
66
+ protected _applyPreset(preset: string): void;
67
+ /** Сбрасывает все значения scope к дефолтам: восстанавливает отображение, чистит стор, перезаливает в живой конфиг */
68
+ protected _resetScope(scope: string): void;
69
+ /** JSON только значений данного scope */
70
+ protected _scopePreset(scope: string): string;
71
+ /** обновить сгенерированный строковый пресет в поле ввода */
72
+ protected _updatePresetField(): void;
73
+ /** */
74
+ protected _updateCustomValues(preset: string): void;
75
+ /** Перечитывает значения своих контролов после программного изменения (только вкладка Settings) */
76
+ protected _refreshBindings(): void;
77
+ /** Выполняет fn с подавленными обработчиками change */
78
+ protected _silently(fn: () => void): void;
79
+ }
80
+ export {};
81
+ //# sourceMappingURL=cheat.panel.settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cheat.panel.settings.d.ts","sourceRoot":"","sources":["../../../../src/components/cheat.panel.settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { TGenericObject } from '../extends/short.types';
2
+ export type TCheatSection = {
3
+ name: string;
4
+ value: string;
5
+ values?: string[] | TGenericObject<string>;
6
+ };
7
+ export type TCheat = TGenericObject<TCheatSection>;
8
+ export type TCustomValue = number | string | boolean;
9
+ /**
10
+ * Метаданные контрола чита: min/max превращают числовое поле в слайдер,
11
+ * options — в выпадающий список.
12
+ */
13
+ export type TCheatMeta = {
14
+ min?: number;
15
+ max?: number;
16
+ step?: number;
17
+ options?: TCustomValue[] | TGenericObject<TCustomValue>;
18
+ };
19
+ export type TCustomCheatParams = {
20
+ scope: string;
21
+ name: string;
22
+ value: TCustomValue;
23
+ group?: string;
24
+ default?: TCustomValue;
25
+ meta?: TCheatMeta;
26
+ };
27
+ //# sourceMappingURL=cheat.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cheat.types.d.ts","sourceRoot":"","sources":["../../../../src/components/cheat.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAEvD,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;CAC7C,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,cAAc,CAAC,aAAa,CAAC,CAAA;AAClD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAEpD;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,cAAc,CAAC,YAAY,CAAC,CAAA;CAC1D,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,YAAY,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,IAAI,CAAC,EAAE,UAAU,CAAA;CACpB,CAAA"}
@@ -0,0 +1,72 @@
1
+ import { TGsapTimeline, TSupportContainer } from '../../../extends/short.types';
2
+ import { TAnimationParam } from '../../animation.catalog';
3
+ import { FWIntrigueComponent, TConfigIntrigueBlaze, TConfigIntrigueComponent } from './intrigue.component';
4
+ import * as PIXI from 'pixi.js';
5
+ /** Цветовой пресет эффекта: аура, ядро и палитра штрихов */
6
+ export type TBlazePreset = {
7
+ id: string;
8
+ title: string;
9
+ back: number;
10
+ front: number;
11
+ streaks: number[];
12
+ };
13
+ export declare const BLAZE_PRESETS: TBlazePreset[];
14
+ /** Один запуск эффекта: слой, живые таймлайны и текущий fade */
15
+ type TBlazeRun = {
16
+ layer: PIXI.Container;
17
+ timelines: Set<TGsapTimeline>;
18
+ fade: TGsapTimeline;
19
+ };
20
+ /**
21
+ * Программная интрига «Колонна пламени»: на барабане, который может дать следующий scatter,
22
+ * загорается вертикальный луч (широкая аура + светлое ядро, дышат в разном темпе), сквозь него
23
+ * сверху вниз летят штрихи скорости. Ассеты не нужны — текстуры рисуются в рантайме.
24
+ *
25
+ * Эффект живёт в собственном слое интриги (под символами), поэтому читается как бэклайт.
26
+ * При смене барабана прошлый запуск не гасится мгновенно, а уходит в самостоятельный fade-out —
27
+ * получается кросс-фейд.
28
+ *
29
+ * Регистрируется в animationCatalog: цветовой пресет, параметры и превью доступны из чит-панели.
30
+ */
31
+ export declare class FWIntrigueBlazeComponent extends FWIntrigueComponent {
32
+ protected _blaze: Required<TConfigIntrigueBlaze>;
33
+ protected _run: TBlazeRun;
34
+ protected _fading: Set<TBlazeRun>;
35
+ protected _isProcessing: boolean;
36
+ protected _iReel: number;
37
+ /** @constructor */
38
+ constructor(config: TConfigIntrigueComponent);
39
+ /** Текущий цветовой пресет */
40
+ get preset(): TBlazePreset;
41
+ /** @inheritdoc */
42
+ create(instance?: TSupportContainer): Promise<this>;
43
+ /** Зажигает эффект над барабаном iReel */
44
+ start(iReel: number): Promise<void>;
45
+ /** Гасит эффект (fade-out с полной зачисткой) */
46
+ stop(): Promise<void>;
47
+ /** @inheritdoc */
48
+ destroy(): Promise<this>;
49
+ /** Ширина клетки барабана — база для всех размеров эффекта */
50
+ protected get _pitch(): number;
51
+ /** Высота колонки барабана */
52
+ protected get _columnHeight(): number;
53
+ /** Собирает лучи и штрихи одного запуска */
54
+ protected _buildEffect(run: TBlazeRun): void;
55
+ /** Штрихи скорости: пул спрайтов, летящих сверху вниз сквозь луч */
56
+ protected _buildStreaks(run: TBlazeRun, track: (timeline: TGsapTimeline) => TGsapTimeline): void;
57
+ /** Отправляет запуск в самостоятельный fade-out; по завершении он уничтожает себя сам */
58
+ protected _releaseRun(run: TBlazeRun): void;
59
+ /** Полная зачистка запуска: таймлайны и слой */
60
+ protected _destroyRun(run: TBlazeRun): void;
61
+ /** Пересобирает активный эффект — применяет изменённые из панели параметры на лету */
62
+ protected _restart(): void;
63
+ /**
64
+ * Параметры эффекта для чит-панели (вкладка Anim). Хост интриги
65
+ * (FWIntrigueSwitchComponent) отдаёт их каталогу, когда выбран этот вариант.
66
+ */
67
+ animationParams(): TAnimationParam[];
68
+ /** Текущие настройки эффекта в форме конфига (components.intrigue.blaze) */
69
+ exportConfig(): Required<TConfigIntrigueBlaze>;
70
+ }
71
+ export {};
72
+ //# sourceMappingURL=intrigue.blaze.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intrigue.blaze.component.d.ts","sourceRoot":"","sources":["../../../../../../src/components/slot/intrigue/intrigue.blaze.component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAA;AAI/B,OAAO,EAAE,aAAa,EAAgB,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAG7F,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAE1G,4DAA4D;AAC5D,MAAM,MAAM,YAAY,GAAG;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,EAAE,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,YAAY,EA6BvC,CAAA;AAgBD,gEAAgE;AAChE,KAAK,SAAS,GAAG;IACb,KAAK,EAAE,IAAI,CAAC,SAAS,CAAA;IACrB,SAAS,EAAE,GAAG,CAAC,aAAa,CAAC,CAAA;IAC7B,IAAI,EAAE,aAAa,CAAA;CACtB,CAAA;AA0DD;;;;;;;;;;GAUG;AACH,qBAAa,wBAAyB,SAAQ,mBAAmB;IAC7D,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAChD,SAAS,CAAC,IAAI,EAAE,SAAS,CAAO;IAChC,SAAS,CAAC,OAAO,iBAAuB;IACxC,SAAS,CAAC,aAAa,UAAQ;IAC/B,SAAS,CAAC,MAAM,SAAI;IAEpB,mBAAmB;gBACP,MAAM,EAAE,wBAAwB;IAM5C,8BAA8B;IAC9B,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,kBAAkB;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlE,0CAA0C;IACpC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCzC,iDAAiD;IAC3C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB3B,kBAAkB;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvC,8DAA8D;IAC9D,SAAS,KAAK,MAAM,IAAI,MAAM,CAW7B;IAED,8BAA8B;IAC9B,SAAS,KAAK,aAAa,IAAI,MAAM,CAIpC;IAED,4CAA4C;IAC5C,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAqD5C,oEAAoE;IACpE,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,aAAa,GAAG,IAAI;IAmDhG,yFAAyF;IACzF,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAW3C,gDAAgD;IAChD,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAU3C,sFAAsF;IACtF,SAAS,CAAC,QAAQ,IAAI,IAAI;IAY1B;;;OAGG;IACH,eAAe,IAAI,eAAe,EAAE;IA8BpC,4EAA4E;IAC5E,YAAY,IAAI,QAAQ,CAAC,oBAAoB,CAAC;CAGjD"}