plinkit 1.0.0-dev.1 → 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
@@ -47,12 +47,28 @@ export declare class Plinkit {
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;
55
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;
56
72
  private frame;
57
73
  private renderSnapshot;
58
74
  private emitBalanceChange;
@@ -74,6 +90,22 @@ export declare interface PlinkitAppearanceOptions {
74
90
  textureCrossOrigin?: string | null;
75
91
  }
76
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
+
77
109
  export declare interface PlinkitCallbacks {
78
110
  onBalanceChange?: (state: PlinkitStateSnapshot) => void;
79
111
  onBallSettled?: (settlement: BallSettlement, state: PlinkitStateSnapshot) => void;
@@ -110,6 +142,7 @@ export declare interface PlinkitOptions {
110
142
  showGuidePegs: boolean;
111
143
  houseEdge?: number;
112
144
  appearance?: PlinkitAppearanceOptions;
145
+ audio?: PlinkitAudioOptions;
113
146
  onBalanceChange?: (state: PlinkitStateSnapshot) => void;
114
147
  onBallSettled?: (settlement: BallSettlement, state: PlinkitStateSnapshot) => void;
115
148
  }