@gamepark/react-game 6.34.0 → 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.
Files changed (32) hide show
  1. package/dist/components/material/ComponentDescription.d.ts +6 -0
  2. package/dist/components/material/ComponentDescription.js.map +1 -1
  3. package/dist/components/material/animations/MaterialGameAnimations.d.ts +4 -0
  4. package/dist/components/material/animations/MaterialGameAnimations.js +15 -0
  5. package/dist/components/material/animations/MaterialGameAnimations.js.map +1 -1
  6. package/dist/components/material/index.d.ts +1 -0
  7. package/dist/components/material/index.js +1 -0
  8. package/dist/components/material/index.js.map +1 -1
  9. package/dist/components/material/sound/AudioLoader.d.ts +20 -0
  10. package/dist/components/material/sound/AudioLoader.js +119 -0
  11. package/dist/components/material/sound/AudioLoader.js.map +1 -0
  12. package/dist/components/material/sound/MaterialGameSounds.d.ts +7 -0
  13. package/dist/components/material/sound/MaterialGameSounds.js +93 -0
  14. package/dist/components/material/sound/MaterialGameSounds.js.map +1 -0
  15. package/dist/components/material/sound/MaterialSoundConfig.d.ts +10 -0
  16. package/dist/components/material/sound/MaterialSoundConfig.js +11 -0
  17. package/dist/components/material/sound/MaterialSoundConfig.js.map +1 -0
  18. package/dist/components/material/sound/MaterialSoundLoader.d.ts +9 -0
  19. package/dist/components/material/sound/MaterialSoundLoader.js +34 -0
  20. package/dist/components/material/sound/MaterialSoundLoader.js.map +1 -0
  21. package/dist/components/material/sound/index.d.ts +2 -0
  22. package/dist/components/material/sound/index.js +19 -0
  23. package/dist/components/material/sound/index.js.map +1 -0
  24. package/dist/components/material/sound/sound.utils.d.ts +2 -0
  25. package/dist/components/material/sound/sound.utils.js +15 -0
  26. package/dist/components/material/sound/sound.utils.js.map +1 -0
  27. package/dist/components/menus/SoundButton/SoundButton.d.ts +1 -1
  28. package/dist/components/menus/SoundButton/SoundButton.js +1 -7
  29. package/dist/components/menus/SoundButton/SoundButton.js.map +1 -1
  30. package/dist/hooks/useResultText.js +28 -28
  31. package/dist/hooks/useResultText.js.map +1 -1
  32. 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":";;;AAAA;;;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;IAsBD;;;;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,AAtDD,IAsDC;AAtDqB,oDAAoB"}
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":"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"}
1
+ {"version":3,"file":"MaterialGameAnimations.js","sourceRoot":"","sources":["../../../../src/components/material/animations/MaterialGameAnimations.ts"],"names":[],"mappings":"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"}
@@ -12,3 +12,4 @@ export * from './MaterialComponentType';
12
12
  export * from './MaterialDescription';
13
13
  export * from './ImageLoader';
14
14
  export * from './utils';
15
+ export * from './sound';
@@ -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":"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"}
@@ -0,0 +1,7 @@
1
+ import { FC } from 'react';
2
+ type MaterialGameSoundsProps = {
3
+ onSoundsLoad?: () => void;
4
+ ambiance?: string;
5
+ };
6
+ export declare const MaterialGameSounds: FC<MaterialGameSoundsProps>;
7
+ export {};
@@ -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,10 @@
1
+ export declare class MaterialSoundConfig {
2
+ sound: string;
3
+ volume?: number;
4
+ loop?: boolean;
5
+ startsAt?: number;
6
+ endsAt?: number;
7
+ duration?: number;
8
+ speed?: number;
9
+ constructor(sound: string);
10
+ }
@@ -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,2 @@
1
+ export * from './MaterialGameSounds';
2
+ export * from './MaterialSoundConfig';
@@ -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,2 @@
1
+ import { MaterialSoundConfig } from './MaterialSoundConfig';
2
+ export declare const ensureMaterialSoundConfig: (sound: string | MaterialSoundConfig | false) => MaterialSoundConfig | undefined;
@@ -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 | null;
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 _b = (0, react_client_1.useSoundControls)(), mute = _b.mute, unmute = _b.unmute, muted = _b.muted;
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,+BAAkC;AAClC,+CAA8C;AAC9C,sCAA0C;AAC1C,mDAAgD;AAEzC,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,IAAM,SAAS,GAAG,MAAA,IAAA,kBAAU,EAAC,0BAAW,CAAC,0CAAE,SAAS,CAAA;IACpD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAA;IAC3B,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;AAXY,QAAA,WAAW,eAWvB"}
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"}
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useResultText = void 0;
4
4
  /** @jsxImportSource @emotion/react */
5
5
  var rules_api_1 = require("@gamepark/rules-api");
6
+ var react_1 = require("react");
6
7
  var react_i18next_1 = require("react-i18next");
7
8
  var index_1 = require("./index");
8
- var react_1 = require("react");
9
9
  var useResultText = function () {
10
10
  var t = (0, react_i18next_1.useTranslation)().t;
11
11
  var rules = (0, index_1.useRules)();
@@ -28,43 +28,43 @@ var useResultText = function () {
28
28
  if (rules && (0, rules_api_1.isCompetitive)(rules)) {
29
29
  if ((0, rules_api_1.isCompetitiveScore)(rules)) {
30
30
  var score = rules.getScore(winners[0]);
31
- if (winners.length === 1) {
32
- if (winners[0] === player) {
33
- return t('result.score.victory', { score: score });
31
+ if (score !== undefined) {
32
+ if (winners.length === 1) {
33
+ if (winners[0] === player) {
34
+ return t('result.score.victory', { score: score });
35
+ }
36
+ else {
37
+ return t('result.score.winner', { player: winnerName, score: score });
38
+ }
34
39
  }
35
- else {
36
- return t('result.score.winner', { player: winnerName, score: score });
40
+ else if (winners.length === players.length) {
41
+ return t('result.score.tie.all', { score: score });
37
42
  }
38
- }
39
- else if (winners.length === players.length) {
40
- return t('result.score.tie.all', { score: score });
41
- }
42
- else if (player !== undefined && winners.includes(player)) {
43
- return t('result.score.tie.you', { score: score, tied: winners.length - 1 });
44
- }
45
- else {
46
- return t('result.score.tie.other', { score: score, tied: winners.length });
47
- }
48
- }
49
- else {
50
- if (winners.length === 1) {
51
- if (winners[0] === player) {
52
- return t('result.comp.victory');
43
+ else if (player !== undefined && winners.includes(player)) {
44
+ return t('result.score.tie.you', { score: score, tied: winners.length - 1 });
53
45
  }
54
46
  else {
55
- return t('result.comp.winner', { player: winnerName });
47
+ return t('result.score.tie.other', { score: score, tied: winners.length });
56
48
  }
57
49
  }
58
- else if (winners.length === players.length) {
59
- return t('result.comp.tie.all');
60
- }
61
- else if (player !== undefined && winners.includes(player)) {
62
- return t('result.comp.tie.you', { tied: winners.length - 1 });
50
+ }
51
+ if (winners.length === 1) {
52
+ if (winners[0] === player) {
53
+ return t('result.comp.victory');
63
54
  }
64
55
  else {
65
- return t('result.comp.tie.other', { tied: winners.length });
56
+ return t('result.comp.winner', { player: winnerName });
66
57
  }
67
58
  }
59
+ else if (winners.length === players.length) {
60
+ return t('result.comp.tie.all');
61
+ }
62
+ else if (player !== undefined && winners.includes(player)) {
63
+ return t('result.comp.tie.you', { tied: winners.length - 1 });
64
+ }
65
+ else {
66
+ return t('result.comp.tie.other', { tied: winners.length });
67
+ }
68
68
  }
69
69
  return t('result.default');
70
70
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useResultText.js","sourceRoot":"","sources":["../../src/hooks/useResultText.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useResultText.js","sourceRoot":"","sources":["../../src/hooks/useResultText.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gamepark/react-game",
3
- "version": "6.34.0",
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",