@gamepark/react-game 6.34.1 → 6.34.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/components/material/ComponentDescription.d.ts +6 -0
- package/dist/components/material/ComponentDescription.js.map +1 -1
- package/dist/components/material/animations/MaterialGameAnimations.d.ts +4 -0
- package/dist/components/material/animations/MaterialGameAnimations.js +15 -0
- package/dist/components/material/animations/MaterialGameAnimations.js.map +1 -1
- package/dist/components/material/index.d.ts +1 -0
- package/dist/components/material/index.js +1 -0
- package/dist/components/material/index.js.map +1 -1
- package/dist/components/material/sound/AudioLoader.d.ts +20 -0
- package/dist/components/material/sound/AudioLoader.js +119 -0
- package/dist/components/material/sound/AudioLoader.js.map +1 -0
- package/dist/components/material/sound/MaterialGameSounds.d.ts +7 -0
- package/dist/components/material/sound/MaterialGameSounds.js +93 -0
- package/dist/components/material/sound/MaterialGameSounds.js.map +1 -0
- package/dist/components/material/sound/MaterialSoundConfig.d.ts +10 -0
- package/dist/components/material/sound/MaterialSoundConfig.js +11 -0
- package/dist/components/material/sound/MaterialSoundConfig.js.map +1 -0
- package/dist/components/material/sound/MaterialSoundLoader.d.ts +9 -0
- package/dist/components/material/sound/MaterialSoundLoader.js +34 -0
- package/dist/components/material/sound/MaterialSoundLoader.js.map +1 -0
- package/dist/components/material/sound/index.d.ts +2 -0
- package/dist/components/material/sound/index.js +19 -0
- package/dist/components/material/sound/index.js.map +1 -0
- package/dist/components/material/sound/sound.utils.d.ts +2 -0
- package/dist/components/material/sound/sound.utils.js +15 -0
- package/dist/components/material/sound/sound.utils.js.map +1 -0
- package/dist/components/menus/SoundButton/SoundButton.d.ts +1 -1
- package/dist/components/menus/SoundButton/SoundButton.js +1 -7
- package/dist/components/menus/SoundButton/SoundButton.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,9 +1,15 @@
|
|
|
1
|
+
import { ItemMoveType } from '@gamepark/rules-api';
|
|
2
|
+
import { MaterialSoundConfig } from './sound';
|
|
1
3
|
/**
|
|
2
4
|
* Base class for components displayed on the game table by the framework.
|
|
3
5
|
* Contains all features common to items and locations display.
|
|
4
6
|
*/
|
|
5
7
|
export declare abstract class ComponentDescription<Id = any> {
|
|
6
8
|
constructor(clone?: Partial<Pick<ComponentDescription, 'height' | 'width' | 'ratio' | 'borderRadius'>>);
|
|
9
|
+
/**
|
|
10
|
+
* All the sounds for each move type
|
|
11
|
+
*/
|
|
12
|
+
sounds?: Partial<Record<ItemMoveType, string | MaterialSoundConfig>>;
|
|
7
13
|
/**
|
|
8
14
|
* All the images that can be used to display the component, and therefore should be preloaded with the web page.
|
|
9
15
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentDescription.js","sourceRoot":"","sources":["../../../src/components/material/ComponentDescription.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ComponentDescription.js","sourceRoot":"","sources":["../../../src/components/material/ComponentDescription.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH;IAEE,8BAAY,KAA0F;;QACpG,IAAI,CAAC,MAAM,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAA;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAA;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,CAAA;QACzB,IAAI,CAAC,YAAY,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,YAAY,mCAAI,CAAC,CAAA;IAC9C,CAAC;IA2BD;;;;OAIG;IACH,sCAAO,GAAP,UAAQ,GAAO;QACb,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;QAChF,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;QAC3F,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;QAC9F,MAAM,IAAI,KAAK,CAAC,UAAG,IAAI,CAAC,WAAW,CAAC,IAAI,4GAAiG,CAAC,CAAA;IAC5I,CAAC;IAOD;;;;OAIG;IACH,8CAAe,GAAf,UAAgB,GAAO;QACrB,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;IACH,2BAAC;AAAD,CAAC,AA3DD,IA2DC;AA3DqB,oDAAoB"}
|
|
@@ -3,6 +3,7 @@ import { Animation, AnimationContext, Animations, DisplayedAction } from '@gamep
|
|
|
3
3
|
import { MaterialGame, MaterialMove } from '@gamepark/rules-api';
|
|
4
4
|
import { ItemContext, MaterialContext } from '../../../locators';
|
|
5
5
|
import { GameContext } from '../../GameProvider';
|
|
6
|
+
import { MaterialSoundConfig } from '../sound/MaterialSoundConfig';
|
|
6
7
|
import { ItemAnimations } from './ItemAnimations';
|
|
7
8
|
export type MaterialGameAnimationContext<P extends number = number, M extends number = number, L extends number = number> = AnimationContext<MaterialGame<P, M, L>, MaterialMove<P, M, L>, P> & Omit<GameContext<MaterialGame<P, M, L>, MaterialMove<P, M, L>, P, M, L>, 'game'>;
|
|
8
9
|
export type MaterialAnimationContext<P extends number = number, M extends number = number, L extends number = number> = MaterialContext<P, M, L> & {
|
|
@@ -14,14 +15,17 @@ export declare class MaterialGameAnimations<P extends number = number, M extends
|
|
|
14
15
|
when(): AnimationConfig<P, M, L>;
|
|
15
16
|
getDuration(move: MaterialMove<P, M, L>, context: MaterialGameAnimationContext<P, M, L>): number;
|
|
16
17
|
getAnimationConfig(move: MaterialMove<P, M, L>, context: MaterialAnimationContext<P, M, L>): AnimationConfig<P, M, L>;
|
|
18
|
+
getSounds(): string[];
|
|
17
19
|
}
|
|
18
20
|
declare class AnimationConfig<P extends number = number, M extends number = number, L extends number = number> extends ItemAnimations<P, M, L> {
|
|
19
21
|
filters: ((move: MaterialMove<P, M, L>, context: MaterialAnimationContext<P, M, L>) => boolean)[];
|
|
20
22
|
d: number;
|
|
23
|
+
s?: string | MaterialSoundConfig | false;
|
|
21
24
|
rule<RuleId extends number>(ruleId: RuleId): this;
|
|
22
25
|
move(predicate: (move: MaterialMove<P, M, L>, context: MaterialAnimationContext<P, M, L>) => boolean): this;
|
|
23
26
|
mine(): this;
|
|
24
27
|
duration(duration: number): this;
|
|
28
|
+
sound(sound: string | MaterialSoundConfig | false): this;
|
|
25
29
|
none(): this;
|
|
26
30
|
getDuration(move: MaterialMove<P, M, L>, context: MaterialGameAnimationContext<P, M, L>): number;
|
|
27
31
|
getItemAnimation(context: ItemContext<P, M, L>, animation: Animation<MaterialMove<P, M, L>>): Interpolation<Theme>;
|
|
@@ -14,10 +14,15 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
14
14
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
15
|
};
|
|
16
16
|
})();
|
|
17
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
18
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
19
|
+
};
|
|
17
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
21
|
exports.MaterialGameAnimations = void 0;
|
|
19
22
|
var react_client_1 = require("@gamepark/react-client");
|
|
20
23
|
var rules_api_1 = require("@gamepark/rules-api");
|
|
24
|
+
var uniq_1 = __importDefault(require("lodash/uniq"));
|
|
25
|
+
var sound_utils_1 = require("../sound/sound.utils");
|
|
21
26
|
var ItemAnimations_1 = require("./ItemAnimations");
|
|
22
27
|
var MaterialAnimations_1 = require("./MaterialAnimations");
|
|
23
28
|
var MaterialGameAnimations = /** @class */ (function (_super) {
|
|
@@ -52,6 +57,11 @@ var MaterialGameAnimations = /** @class */ (function (_super) {
|
|
|
52
57
|
}
|
|
53
58
|
return this.defaultAnimationConfig;
|
|
54
59
|
};
|
|
60
|
+
MaterialGameAnimations.prototype.getSounds = function () {
|
|
61
|
+
return (0, uniq_1.default)(this.animationConfigs
|
|
62
|
+
.filter(function (animationConfig) { return !!animationConfig.s; })
|
|
63
|
+
.map(function (animationConfig) { return (0, sound_utils_1.ensureMaterialSoundConfig)(animationConfig.s).sound; }));
|
|
64
|
+
};
|
|
55
65
|
return MaterialGameAnimations;
|
|
56
66
|
}(react_client_1.Animations));
|
|
57
67
|
exports.MaterialGameAnimations = MaterialGameAnimations;
|
|
@@ -61,6 +71,7 @@ var AnimationConfig = /** @class */ (function (_super) {
|
|
|
61
71
|
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
62
72
|
_this.filters = [];
|
|
63
73
|
_this.d = 1;
|
|
74
|
+
_this.s = undefined;
|
|
64
75
|
return _this;
|
|
65
76
|
}
|
|
66
77
|
AnimationConfig.prototype.rule = function (ruleId) {
|
|
@@ -79,6 +90,10 @@ var AnimationConfig = /** @class */ (function (_super) {
|
|
|
79
90
|
this.d = duration;
|
|
80
91
|
return this;
|
|
81
92
|
};
|
|
93
|
+
AnimationConfig.prototype.sound = function (sound) {
|
|
94
|
+
this.s = sound;
|
|
95
|
+
return this;
|
|
96
|
+
};
|
|
82
97
|
AnimationConfig.prototype.none = function () {
|
|
83
98
|
return this.duration(0);
|
|
84
99
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MaterialGameAnimations.js","sourceRoot":"","sources":["../../../../src/components/material/animations/MaterialGameAnimations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MaterialGameAnimations.js","sourceRoot":"","sources":["../../../../src/components/material/animations/MaterialGameAnimations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA,uDAAiG;AACjG,iDAAyF;AACzF,qDAA8B;AAI9B,oDAAgE;AAChE,mDAAiD;AACjD,2DAAyD;AASzD;IACU,0CAA2D;IADrE;QAAA,qEAsCC;QAnCU,sBAAgB,GAA+B,EAAE,CAAA;QAC1D,4BAAsB,GAAG,IAAI,eAAe,EAAW,CAAA;;IAkCzD,CAAC;IAhCC,qCAAI,GAAJ;QACE,IAAM,eAAe,GAAG,IAAI,eAAe,EAAW,CAAA;QACtD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC3C,OAAO,eAAe,CAAA;IACxB,CAAC;IAEQ,4CAAW,GAApB,UAAqB,IAA2B,EAAE,OAA8C;QAC9F,IAAM,eAAe,GAAsC;YACzD,KAAK,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAA2B;YAChE,QAAQ,EAAE,OAAO,CAAC,QAAS;YAC3B,QAAQ,EAAE,OAAO,CAAC,QAAS;YAC3B,MAAM,EAAE,OAAO,CAAC,QAAQ;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAA;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClF,CAAC;IAED,mDAAkB,GAAlB,UAAmB,IAA2B,EAAE,OAA0C;QACxF,KAA8B,UAAqB,EAArB,KAAA,IAAI,CAAC,gBAAgB,EAArB,cAAqB,EAArB,IAAqB,EAAE;YAAhD,IAAM,eAAe,SAAA;YACxB,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,EAArB,CAAqB,CAAC,EAAE;gBAClE,OAAO,eAAe,CAAA;aACvB;SACF;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAA;IACpC,CAAC;IAED,0CAAS,GAAT;QACE,OAAO,IAAA,cAAI,EAAC,IAAI,CAAC,gBAAgB;aAC9B,MAAM,CAAC,UAAA,eAAe,IAAI,OAAA,CAAC,CAAC,eAAe,CAAC,CAAC,EAAnB,CAAmB,CAAC;aAC9C,GAAG,CAAC,UAAA,eAAe,IAAI,OAAA,IAAA,uCAAyB,EAAC,eAAe,CAAC,CAAE,CAAE,CAAC,KAAK,EAApD,CAAoD,CAAC,CAC9E,CAAA;IACH,CAAC;IACH,6BAAC;AAAD,CAAC,AAtCD,CACU,yBAAU,GAqCnB;AAtCY,wDAAsB;AAwCnC;IACU,mCAAuB;IADjC;QAAA,qEA2CC;QAzCC,aAAO,GAA6F,EAAE,CAAA;QACtG,OAAC,GAAW,CAAC,CAAA;QACb,OAAC,GAA0C,SAAS,CAAA;;IAuCtD,CAAC;IArCC,8BAAI,GAAJ,UAA4B,MAAc;QACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,OAAO,YAAK,OAAA,CAAA,MAAA,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,0CAAE,EAAE,MAAK,MAAM,CAAA,EAAA,CAAC,CAAA;QACzE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,8BAAI,GAAJ,UAAK,SAA+F;QAClG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAC,IAAI,EAAE,OAAO,IAAK,OAAA,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,EAAxB,CAAwB,CAAC,CAAA;QAC9D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,8BAAI,GAAJ;QACE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,OAAO,IAAK,OAAA,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,QAAQ,EAA1C,CAA0C,CAAC,CAAA;QAC7E,OAAO,IAAI,CAAA;IACb,CAAC;IAED,kCAAQ,GAAR,UAAS,QAAgB;QACvB,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAA;QACjB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,+BAAK,GAAL,UAAM,KAA2C;QAC/C,IAAI,CAAC,CAAC,GAAG,KAAK,CAAA;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAED,8BAAI,GAAJ;QACE,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IACzB,CAAC;IAED,qCAAW,GAAX,UAAY,IAA2B,EAAE,OAA8C;QACrF,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAQ,CAAC,QAAQ;YAAE,OAAO,CAAC,CAAA;QAC7C,OAAO,IAAI,uCAAkB,CAAU,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC3E,CAAC;IAED,0CAAgB,GAAhB,UAAiB,OAA6B,EAAE,SAA2C;QACzF,OAAO,IAAI,uCAAkB,CAAU,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IACrF,CAAC;IACH,sBAAC;AAAD,CAAC,AA3CD,CACU,+BAAc,GA0CvB"}
|
|
@@ -28,4 +28,5 @@ __exportStar(require("./MaterialComponentType"), exports);
|
|
|
28
28
|
__exportStar(require("./MaterialDescription"), exports);
|
|
29
29
|
__exportStar(require("./ImageLoader"), exports);
|
|
30
30
|
__exportStar(require("./utils"), exports);
|
|
31
|
+
__exportStar(require("./sound"), exports);
|
|
31
32
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/material/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,8CAA2B;AAC3B,yDAAsC;AACtC,0CAAuB;AACvB,0CAAuB;AACvB,4CAAyB;AACzB,iDAA8B;AAC9B,8CAA2B;AAC3B,mDAAgC;AAChC,sDAAmC;AACnC,0DAAuC;AACvC,wDAAqC;AACrC,gDAA6B;AAC7B,0CAAuB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/material/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,8CAA2B;AAC3B,yDAAsC;AACtC,0CAAuB;AACvB,0CAAuB;AACvB,4CAAyB;AACzB,iDAA8B;AAC9B,8CAA2B;AAC3B,mDAAgC;AAChC,sDAAmC;AACnC,0DAAuC;AACvC,wDAAqC;AACrC,gDAA6B;AAC7B,0CAAuB;AACvB,0CAAuB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { MaterialSoundConfig } from './MaterialSoundConfig';
|
|
2
|
+
export declare class AudioLoader {
|
|
3
|
+
private readonly audioContext;
|
|
4
|
+
private sources;
|
|
5
|
+
private readonly buffers;
|
|
6
|
+
private readonly sounds;
|
|
7
|
+
private muted;
|
|
8
|
+
constructor();
|
|
9
|
+
load(sources: (string | MaterialSoundConfig)[]): Promise<any>;
|
|
10
|
+
play(soundConfig: string | MaterialSoundConfig): void;
|
|
11
|
+
status(): AudioContextState;
|
|
12
|
+
loop(sound: string | MaterialSoundConfig): void;
|
|
13
|
+
volume(id: string, volume: number): void;
|
|
14
|
+
resume(): void;
|
|
15
|
+
/**
|
|
16
|
+
* Mute is a simple volume = 0 because suspending the audio context only create a "pause" on sound
|
|
17
|
+
*/
|
|
18
|
+
mute(): void;
|
|
19
|
+
unmute(): void;
|
|
20
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.AudioLoader = void 0;
|
|
40
|
+
var MaterialSoundConfig_1 = require("./MaterialSoundConfig");
|
|
41
|
+
var AudioLoader = /** @class */ (function () {
|
|
42
|
+
function AudioLoader() {
|
|
43
|
+
this.sources = [];
|
|
44
|
+
this.muted = false;
|
|
45
|
+
this.audioContext = new (window.AudioContext || window.webkitAudioContext)();
|
|
46
|
+
this.buffers = {};
|
|
47
|
+
this.sounds = {};
|
|
48
|
+
}
|
|
49
|
+
AudioLoader.prototype.load = function (sources) {
|
|
50
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
51
|
+
var _this = this;
|
|
52
|
+
return __generator(this, function (_a) {
|
|
53
|
+
this.sources = sources.map(function (s) { return typeof s === 'string' ? { id: s, url: s } : { id: s.sound, url: s.sound }; });
|
|
54
|
+
if (!sources.length)
|
|
55
|
+
return [2 /*return*/, Promise.resolve()];
|
|
56
|
+
return [2 /*return*/, Promise.all(this.sources.map(function (source) { return __awaiter(_this, void 0, void 0, function () {
|
|
57
|
+
var _this = this;
|
|
58
|
+
return __generator(this, function (_a) {
|
|
59
|
+
return [2 /*return*/, fetch(new Request(source.url))
|
|
60
|
+
.then(function (response) { return response.arrayBuffer(); })
|
|
61
|
+
.then(function (buffer) { return _this.audioContext.decodeAudioData(buffer, function (b) {
|
|
62
|
+
_this.buffers[source.id] = b;
|
|
63
|
+
}); })];
|
|
64
|
+
});
|
|
65
|
+
}); }))];
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
AudioLoader.prototype.play = function (soundConfig) {
|
|
70
|
+
var _a, _b, _c, _d;
|
|
71
|
+
if (this.muted)
|
|
72
|
+
return;
|
|
73
|
+
var config = typeof soundConfig === 'string' ? new MaterialSoundConfig_1.MaterialSoundConfig(soundConfig) : soundConfig;
|
|
74
|
+
var id = config.sound;
|
|
75
|
+
this.sounds[id] = this.sounds[id] || {};
|
|
76
|
+
var sound = this.sounds[id];
|
|
77
|
+
sound.sourceNode = this.audioContext.createBufferSource();
|
|
78
|
+
sound.sourceNode.buffer = this.buffers[id];
|
|
79
|
+
sound.sourceNode.loop = (_a = config.loop) !== null && _a !== void 0 ? _a : false;
|
|
80
|
+
sound.sourceNode.playbackRate.value = (_b = config.speed) !== null && _b !== void 0 ? _b : 1;
|
|
81
|
+
if (!sound.gainNode) {
|
|
82
|
+
sound.gainNode = this.audioContext.createGain();
|
|
83
|
+
sound.gainNode.connect(this.audioContext.destination);
|
|
84
|
+
}
|
|
85
|
+
sound.sourceNode.connect(sound.gainNode);
|
|
86
|
+
sound.gainNode.gain.value = (_c = config.volume) !== null && _c !== void 0 ? _c : 1;
|
|
87
|
+
sound.sourceNode.start(0, (_d = config.startsAt) !== null && _d !== void 0 ? _d : 0, config.duration);
|
|
88
|
+
};
|
|
89
|
+
AudioLoader.prototype.status = function () {
|
|
90
|
+
return this.audioContext.state;
|
|
91
|
+
};
|
|
92
|
+
AudioLoader.prototype.loop = function (sound) {
|
|
93
|
+
return this.play(sound);
|
|
94
|
+
};
|
|
95
|
+
AudioLoader.prototype.volume = function (id, volume) {
|
|
96
|
+
this.sounds[id].gainNode.gain.value = volume;
|
|
97
|
+
};
|
|
98
|
+
AudioLoader.prototype.resume = function () {
|
|
99
|
+
this.audioContext.resume();
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Mute is a simple volume = 0 because suspending the audio context only create a "pause" on sound
|
|
103
|
+
*/
|
|
104
|
+
AudioLoader.prototype.mute = function () {
|
|
105
|
+
this.muted = true;
|
|
106
|
+
Object.values(this.sounds).forEach(function (sound) {
|
|
107
|
+
sound.gainNode.gain.value = 0;
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
AudioLoader.prototype.unmute = function () {
|
|
111
|
+
this.muted = false;
|
|
112
|
+
Object.values(this.sounds).forEach(function (sound) {
|
|
113
|
+
sound.gainNode.gain.value = (sound.volume || 1);
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
return AudioLoader;
|
|
117
|
+
}());
|
|
118
|
+
exports.AudioLoader = AudioLoader;
|
|
119
|
+
//# sourceMappingURL=AudioLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioLoader.js","sourceRoot":"","sources":["../../../../src/components/material/sound/AudioLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA2D;AAE3D;IAOE;QALQ,YAAO,GAAkC,EAAE,CAAA;QAG3C,UAAK,GAAY,KAAK,CAAA;QAG5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAK,MAAc,CAAC,kBAAkB,CAAC,EAAE,CAAA;QACrF,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACjB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;IAClB,CAAC;IAEY,0BAAI,GAAjB,UAAkB,OAAyC;;;;gBACzD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,EAAzE,CAAyE,CAAC,CAAA;gBAC5G,IAAI,CAAC,OAAO,CAAC,MAAM;oBAAE,sBAAO,OAAO,CAAC,OAAO,EAAE,EAAA;gBAC7C,sBAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAM,MAAM;;;4BAC9C,sBAAA,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;qCAC3B,IAAI,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,WAAW,EAAE,EAAtB,CAAsB,CAAC;qCACxC,IAAI,CAAC,UAAC,MAAM,IAAK,OAAA,KAAI,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,EAAE,UAAC,CAAC;oCAC5D,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;gCAC7B,CAAC,CAAC,EAFgB,CAEhB,CAAC,EAAA;;yBAAA,CACN,CAAC,EAAA;;;KACH;IAEM,0BAAI,GAAX,UAAY,WAAyC;;QACnD,IAAI,IAAI,CAAC,KAAK;YAAE,OAAM;QACtB,IAAM,MAAM,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,yCAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAA;QACnG,IAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;QACvB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;QAEvC,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC7B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAA;QACzD,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC1C,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,MAAA,MAAM,CAAC,IAAI,mCAAI,KAAK,CAAA;QAC5C,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,GAAG,MAAA,MAAM,CAAC,KAAK,mCAAI,CAAC,CAAA;QAEvD,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACnB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAA;YAC/C,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;SACtD;QAED,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACxC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,MAAA,MAAM,CAAC,MAAM,mCAAI,CAAC,CAAA;QAE9C,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,MAAA,MAAM,CAAC,QAAQ,mCAAI,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;IAClE,CAAC;IAEM,4BAAM,GAAb;QACE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAA;IAChC,CAAC;IAEM,0BAAI,GAAX,UAAY,KAAmC;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAEM,4BAAM,GAAb,UAAc,EAAU,EAAE,MAAc;QACtC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAA;IAC9C,CAAC;IAEM,4BAAM,GAAb;QACE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAA;IAC5B,CAAC;IAED;;OAEG;IACI,0BAAI,GAAX;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK;YACtC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAA;QAC/B,CAAC,CAAC,CAAA;IACJ,CAAC;IAEM,4BAAM,GAAb;QACE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK;YACtC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;IACJ,CAAC;IACH,kBAAC;AAAD,CAAC,AAhFD,IAgFC;AAhFY,kCAAW"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.MaterialGameSounds = void 0;
|
|
15
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
16
|
+
var rules_api_1 = require("@gamepark/rules-api");
|
|
17
|
+
var react_1 = require("react");
|
|
18
|
+
var react_redux_1 = require("react-redux");
|
|
19
|
+
var hooks_1 = require("../../../hooks");
|
|
20
|
+
var GameProvider_1 = require("../../GameProvider");
|
|
21
|
+
var AudioLoader_1 = require("./AudioLoader");
|
|
22
|
+
var MaterialSoundLoader_1 = require("./MaterialSoundLoader");
|
|
23
|
+
var sound_utils_1 = require("./sound.utils");
|
|
24
|
+
var MaterialGameSounds = function (_a) {
|
|
25
|
+
var onSoundsLoad = _a.onSoundsLoad, ambiance = _a.ambiance;
|
|
26
|
+
var context = (0, hooks_1.useMaterialContext)();
|
|
27
|
+
var _b = (0, react_1.useState)(false), ambianceEnabled = _b[0], setAmbianceEnabled = _b[1];
|
|
28
|
+
var _c = (0, react_1.useState)(false), ambianceFail = _c[0], setAmbianceFail = _c[1];
|
|
29
|
+
var animationsConfig = (0, react_1.useContext)(GameProvider_1.gameContext).animations;
|
|
30
|
+
var material = (0, react_1.useContext)(GameProvider_1.gameContext).material;
|
|
31
|
+
var animation = (0, hooks_1.useAnimation)();
|
|
32
|
+
var muted = (0, react_redux_1.useSelector)(function (state) { return state.soundsMuted; });
|
|
33
|
+
var audioLoader = (0, react_1.useMemo)(function () { return new AudioLoader_1.AudioLoader(); }, []);
|
|
34
|
+
(0, react_1.useEffect)(function () {
|
|
35
|
+
var _a, _b, _c;
|
|
36
|
+
if (!animation)
|
|
37
|
+
return;
|
|
38
|
+
var config = animationsConfig.getAnimationConfig(animation.move, __assign(__assign({}, context), { action: animation.action }));
|
|
39
|
+
if ((config === null || config === void 0 ? void 0 : config.s) !== undefined) {
|
|
40
|
+
var materialSound = (0, sound_utils_1.ensureMaterialSoundConfig)(config.s);
|
|
41
|
+
if (!materialSound)
|
|
42
|
+
return;
|
|
43
|
+
materialSound.duration = (_a = animation.duration) !== null && _a !== void 0 ? _a : materialSound.duration;
|
|
44
|
+
audioLoader.play(materialSound);
|
|
45
|
+
}
|
|
46
|
+
else if (animation.move.kind === rules_api_1.MoveKind.ItemMove) {
|
|
47
|
+
var materialSound = (_c = (_b = material[animation.move.itemType]) === null || _b === void 0 ? void 0 : _b.sounds) === null || _c === void 0 ? void 0 : _c[animation.move.type];
|
|
48
|
+
if (materialSound) {
|
|
49
|
+
audioLoader.play(materialSound);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}, [animation === null || animation === void 0 ? void 0 : animation.move]);
|
|
53
|
+
(0, react_1.useEffect)(function () {
|
|
54
|
+
if (!muted) {
|
|
55
|
+
audioLoader.unmute();
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
audioLoader.mute();
|
|
59
|
+
}
|
|
60
|
+
// eslint-disable-next-line
|
|
61
|
+
}, [muted]);
|
|
62
|
+
(0, react_1.useEffect)(function () {
|
|
63
|
+
if (!ambiance)
|
|
64
|
+
return;
|
|
65
|
+
// If the user hasn't click on the page before the audio context is loaded, the ambiance sound won't be run.
|
|
66
|
+
// Then we add an event on the document to enable the ambiance only if it has failed.
|
|
67
|
+
if (audioLoader.status() === 'suspended') {
|
|
68
|
+
setAmbianceFail(true);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
audioLoader.loop(ambiance);
|
|
72
|
+
}
|
|
73
|
+
// eslint-disable-next-line
|
|
74
|
+
}, [ambiance]);
|
|
75
|
+
(0, react_1.useEffect)(function () {
|
|
76
|
+
var enableAmbiance = function () {
|
|
77
|
+
if (!ambiance)
|
|
78
|
+
return;
|
|
79
|
+
audioLoader.loop(ambiance);
|
|
80
|
+
setAmbianceEnabled(true);
|
|
81
|
+
};
|
|
82
|
+
if (ambianceFail && !ambianceEnabled) {
|
|
83
|
+
document.addEventListener('click', enableAmbiance);
|
|
84
|
+
}
|
|
85
|
+
return function () {
|
|
86
|
+
document.removeEventListener('click', enableAmbiance);
|
|
87
|
+
};
|
|
88
|
+
// eslint-disable-next-line
|
|
89
|
+
}, [ambianceFail, ambianceEnabled]);
|
|
90
|
+
return ((0, jsx_runtime_1.jsx)(MaterialSoundLoader_1.MaterialSoundLoader, { onSoundsLoad: onSoundsLoad, audioLoader: audioLoader, ambiance: ambiance }));
|
|
91
|
+
};
|
|
92
|
+
exports.MaterialGameSounds = MaterialGameSounds;
|
|
93
|
+
//# sourceMappingURL=MaterialGameSounds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaterialGameSounds.js","sourceRoot":"","sources":["../../../../src/components/material/sound/MaterialGameSounds.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MaterialSoundConfig = void 0;
|
|
4
|
+
var MaterialSoundConfig = /** @class */ (function () {
|
|
5
|
+
function MaterialSoundConfig(sound) {
|
|
6
|
+
this.sound = sound;
|
|
7
|
+
}
|
|
8
|
+
return MaterialSoundConfig;
|
|
9
|
+
}());
|
|
10
|
+
exports.MaterialSoundConfig = MaterialSoundConfig;
|
|
11
|
+
//# sourceMappingURL=MaterialSoundConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaterialSoundConfig.js","sourceRoot":"","sources":["../../../../src/components/material/sound/MaterialSoundConfig.ts"],"names":[],"mappings":";;;AAAA;IASE,6BAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IAEpB,CAAC;IACH,0BAAC;AAAD,CAAC,AAbD,IAaC;AAbY,kDAAmB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AudioLoader } from './AudioLoader';
|
|
3
|
+
type MaterialSoundLoaderProps = {
|
|
4
|
+
audioLoader: AudioLoader;
|
|
5
|
+
onSoundsLoad?: () => void;
|
|
6
|
+
ambiance?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const MaterialSoundLoader: React.FunctionComponent<MaterialSoundLoaderProps>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MaterialSoundLoader = void 0;
|
|
7
|
+
var uniqBy_1 = __importDefault(require("lodash/uniqBy"));
|
|
8
|
+
var react_1 = require("react");
|
|
9
|
+
var GameProvider_1 = require("../../GameProvider");
|
|
10
|
+
var MaterialSoundLoader = function (_a) {
|
|
11
|
+
var audioLoader = _a.audioLoader, onSoundsLoad = _a.onSoundsLoad, ambiance = _a.ambiance;
|
|
12
|
+
var context = (0, react_1.useContext)(GameProvider_1.gameContext);
|
|
13
|
+
var animationsConfig = context.animations;
|
|
14
|
+
var sounds = (0, react_1.useMemo)(function () {
|
|
15
|
+
var _a, _b;
|
|
16
|
+
var sounds = ambiance ? [ambiance] : [];
|
|
17
|
+
for (var _i = 0, _c = Object.values((_a = context.material) !== null && _a !== void 0 ? _a : {}); _i < _c.length; _i++) {
|
|
18
|
+
var description = _c[_i];
|
|
19
|
+
if (description)
|
|
20
|
+
sounds.push.apply(sounds, Object.values((_b = description.sounds) !== null && _b !== void 0 ? _b : {}));
|
|
21
|
+
}
|
|
22
|
+
sounds.push.apply(sounds, animationsConfig.getSounds());
|
|
23
|
+
return (0, uniqBy_1.default)(sounds, function (s) { return typeof s === 'string' ? s : s.sound; });
|
|
24
|
+
}, [context.material, context.animations]);
|
|
25
|
+
(0, react_1.useEffect)(function () {
|
|
26
|
+
audioLoader.load(sounds).then(function () {
|
|
27
|
+
onSoundsLoad === null || onSoundsLoad === void 0 ? void 0 : onSoundsLoad();
|
|
28
|
+
});
|
|
29
|
+
// eslint-disable-next-line
|
|
30
|
+
}, [sounds]);
|
|
31
|
+
return null;
|
|
32
|
+
};
|
|
33
|
+
exports.MaterialSoundLoader = MaterialSoundLoader;
|
|
34
|
+
//# sourceMappingURL=MaterialSoundLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MaterialSoundLoader.js","sourceRoot":"","sources":["../../../../src/components/material/sound/MaterialSoundLoader.ts"],"names":[],"mappings":";;;;;;AAAA,yDAAkC;AAClC,+BAA6D;AAC7D,mDAAgD;AAWzC,IAAM,mBAAmB,GAAsD,UAAC,EAAuC;QAArC,WAAW,iBAAA,EAAE,YAAY,kBAAA,EAAE,QAAQ,cAAA;IAC1H,IAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,0BAAW,CAAC,CAAA;IACvC,IAAM,gBAAgB,GAAG,OAAO,CAAC,UAAoC,CAAA;IAErE,IAAM,MAAM,GAAG,IAAA,eAAO,EAAC;;QACrB,IAAM,MAAM,GAAqC,QAAQ,CAAA,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAC,EAAE,CAAA;QACzE,KAA0B,UAAqC,EAArC,KAAA,MAAM,CAAC,MAAM,CAAC,MAAA,OAAO,CAAC,QAAQ,mCAAI,EAAE,CAAC,EAArC,cAAqC,EAArC,IAAqC,EAAE;YAA5D,IAAM,WAAW,SAAA;YACpB,IAAI,WAAW;gBAAE,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,MAAM,CAAC,MAAM,CAAC,MAAA,WAAW,CAAC,MAAM,mCAAI,EAAE,CAAC,EAAC;SACzE;QAED,MAAM,CAAC,IAAI,OAAX,MAAM,EAAS,gBAAgB,CAAC,SAAS,EAAE,EAAC;QAC5C,OAAO,IAAA,gBAAM,EAAC,MAAM,EAAE,UAAC,CAAC,IAAK,OAAA,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAnC,CAAmC,CAAC,CAAA;IACnE,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;IAE1C,IAAA,iBAAS,EAAC;QACR,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;YAC5B,YAAY,aAAZ,YAAY,uBAAZ,YAAY,EAAI,CAAA;QAClB,CAAC,CAAC,CAAA;QACF,2BAA2B;IAC7B,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAtBY,QAAA,mBAAmB,uBAsB/B"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./MaterialGameSounds"), exports);
|
|
18
|
+
__exportStar(require("./MaterialSoundConfig"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/material/sound/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAoC;AACpC,wDAAqC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ensureMaterialSoundConfig = void 0;
|
|
4
|
+
var ensureMaterialSoundConfig = function (sound) {
|
|
5
|
+
if (sound === false)
|
|
6
|
+
return;
|
|
7
|
+
if (typeof sound === 'string') {
|
|
8
|
+
return { sound: sound };
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
return sound;
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
exports.ensureMaterialSoundConfig = ensureMaterialSoundConfig;
|
|
15
|
+
//# sourceMappingURL=sound.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sound.utils.js","sourceRoot":"","sources":["../../../../src/components/material/sound/sound.utils.ts"],"names":[],"mappings":";;;AAGO,IAAM,yBAAyB,GAAG,UAAC,KAA2C;IACnF,IAAI,KAAK,KAAK,KAAK;QAAE,OAAM;IAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;KACxB;SAAM;QACL,OAAO,KAAK,CAAA;KACb;AACH,CAAC,CAAA;AAPY,QAAA,yBAAyB,6BAOrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SoundButton: () => import("@emotion/react/jsx-runtime").JSX.Element
|
|
1
|
+
export declare const SoundButton: () => import("@emotion/react/jsx-runtime").JSX.Element;
|
|
@@ -18,17 +18,11 @@ var faVolumeMute_1 = require("@fortawesome/free-solid-svg-icons/faVolumeMute");
|
|
|
18
18
|
var faVolumeUp_1 = require("@fortawesome/free-solid-svg-icons/faVolumeUp");
|
|
19
19
|
var react_fontawesome_1 = require("@fortawesome/react-fontawesome");
|
|
20
20
|
var react_client_1 = require("@gamepark/react-client");
|
|
21
|
-
var react_1 = require("react");
|
|
22
21
|
var react_i18next_1 = require("react-i18next");
|
|
23
22
|
var menuCss_1 = require("../menuCss");
|
|
24
|
-
var GameProvider_1 = require("../../GameProvider");
|
|
25
23
|
var SoundButton = function () {
|
|
26
|
-
var _a;
|
|
27
24
|
var t = (0, react_i18next_1.useTranslation)().t;
|
|
28
|
-
var
|
|
29
|
-
var hasSounds = (_a = (0, react_1.useContext)(GameProvider_1.gameContext)) === null || _a === void 0 ? void 0 : _a.hasSounds;
|
|
30
|
-
if (!hasSounds)
|
|
31
|
-
return null;
|
|
25
|
+
var _a = (0, react_client_1.useSoundControls)(), mute = _a.mute, unmute = _a.unmute, muted = _a.muted;
|
|
32
26
|
return ((0, jsx_runtime_1.jsxs)("button", __assign({ css: menuCss_1.menuButtonCss, onClick: function () { return muted ? unmute() : mute(); } }, { children: [(0, jsx_runtime_1.jsx)(react_fontawesome_1.FontAwesomeIcon, { icon: muted ? faVolumeMute_1.faVolumeMute : faVolumeUp_1.faVolumeUp }), muted ? t('Enable sound') : t('Mute sound')] })));
|
|
33
27
|
};
|
|
34
28
|
exports.SoundButton = SoundButton;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SoundButton.js","sourceRoot":"","sources":["../../../../src/components/menus/SoundButton/SoundButton.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sCAAsC;AACtC,+EAA6E;AAC7E,2EAAyE;AACzE,oEAAgE;AAChE,uDAAyD;AACzD,+
|
|
1
|
+
{"version":3,"file":"SoundButton.js","sourceRoot":"","sources":["../../../../src/components/menus/SoundButton/SoundButton.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,sCAAsC;AACtC,+EAA6E;AAC7E,2EAAyE;AACzE,oEAAgE;AAChE,uDAAyD;AACzD,+CAA8C;AAC9C,sCAA0C;AAEnC,IAAM,WAAW,GAAG;IACjB,IAAA,CAAC,GAAK,IAAA,8BAAc,GAAE,EAArB,CAAqB;IACxB,IAAA,KAA0B,IAAA,+BAAgB,GAAE,EAA1C,IAAI,UAAA,EAAE,MAAM,YAAA,EAAE,KAAK,WAAuB,CAAA;IAClD,OAAO,CACL,6CAAQ,GAAG,EAAE,uBAAa,EAAE,OAAO,EAAE,cAAM,OAAA,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAzB,CAAyB,iBAClE,uBAAC,mCAAe,IAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,2BAAY,CAAC,CAAC,CAAC,uBAAU,GAAG,EAC1D,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KACrC,CACV,CAAA;AACH,CAAC,CAAA;AATY,QAAA,WAAW,eASvB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gamepark/react-game",
|
|
3
|
-
"version": "6.34.
|
|
3
|
+
"version": "6.34.2",
|
|
4
4
|
"description": "React components & tools to create a Board Game user interface for Game Park",
|
|
5
5
|
"author": "Romain Fromi <romain@game-park.com> (https://game-park.com/)",
|
|
6
6
|
"license": "ISC",
|