plinkit 1.0.0-dev.0 → 1.0.0-dev.2

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/index.d.ts CHANGED
@@ -43,15 +43,32 @@ export declare class Plinkit {
43
43
  private accumulatorMs;
44
44
  private lastFrameTime;
45
45
  private readonly callbacks;
46
- private readonly ballCost;
46
+ private ballCost;
47
47
  private readonly showGuidePegs;
48
48
  private balance;
49
49
  private lastSpawnAtMs;
50
+ private readonly audio;
50
51
  constructor(options: PlinkitOptions);
51
52
  spawnBall(): SpawnResult;
52
53
  resize(): void;
53
54
  destroy(): void;
54
55
  getState(): PlinkitStateSnapshot;
56
+ setBallCost(value: number): void;
57
+ setMuted(value: boolean): void;
58
+ /**
59
+ * Возвращает `true`, если звук выключен или аудио не сконфигурировано
60
+ * (`options.audio` не передан). Так UI-код может единообразно опираться на
61
+ * `isMuted()` без проверки наличия аудио.
62
+ */
63
+ isMuted(): boolean;
64
+ setVolume(value: number): void;
65
+ /**
66
+ * Проигрывает UI-сэмпл, заданный через `options.audio.uiTapUrl`. Удобно
67
+ * вызывать из click/pointerup-обработчиков на кнопках продукта, чтобы UI-звук
68
+ * разделял mute/volume/auto-unlock с физическими звуками поля.
69
+ */
70
+ playUiTap(): void;
71
+ private handleCollision;
55
72
  private frame;
56
73
  private renderSnapshot;
57
74
  private emitBalanceChange;
@@ -73,6 +90,22 @@ export declare interface PlinkitAppearanceOptions {
73
90
  textureCrossOrigin?: string | null;
74
91
  }
75
92
 
93
+ export declare interface PlinkitAudioOptions {
94
+ /** URL короткого сэмпла для столкновения шарика с пегом (peg/guide). */
95
+ pegHitUrl?: string;
96
+ /** URL короткого сэмпла для попадания шарика в корзину (момент settle). */
97
+ bucketHitUrl?: string;
98
+ /** URL короткого сэмпла UI-клика (для использования через `Plinkit.playUiTap()`). */
99
+ uiTapUrl?: string;
100
+ /** Общая громкость 0..1. По умолчанию 1. */
101
+ masterVolume?: number;
102
+ /**
103
+ * Стартовое состояние mute. По умолчанию `false`. Web Audio автоматически
104
+ * разблокируется на первом user gesture (см. секцию «Звуки» в README).
105
+ */
106
+ muted?: boolean;
107
+ }
108
+
76
109
  export declare interface PlinkitCallbacks {
77
110
  onBalanceChange?: (state: PlinkitStateSnapshot) => void;
78
111
  onBallSettled?: (settlement: BallSettlement, state: PlinkitStateSnapshot) => void;
@@ -109,6 +142,7 @@ export declare interface PlinkitOptions {
109
142
  showGuidePegs: boolean;
110
143
  houseEdge?: number;
111
144
  appearance?: PlinkitAppearanceOptions;
145
+ audio?: PlinkitAudioOptions;
112
146
  onBalanceChange?: (state: PlinkitStateSnapshot) => void;
113
147
  onBallSettled?: (settlement: BallSettlement, state: PlinkitStateSnapshot) => void;
114
148
  }