pixi-rainman-game-engine 0.0.6 → 0.1.1

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 (210) hide show
  1. package/dist/ComponentRegistry/ComponentRegistry.d.ts +1 -0
  2. package/dist/ComponentRegistry/ComponentRegistry.js +4 -0
  3. package/dist/ComponentRegistry/types.d.ts +7 -7
  4. package/dist/ComponentRegistry/types.js +1 -1
  5. package/dist/DescribedPlayableAction/DescribedPlayableAction.d.ts +1 -1
  6. package/dist/Money/MoneyText.js +2 -2
  7. package/dist/Rainman/Rainman.js +2 -2
  8. package/dist/Rainman/appConfig.js +4 -3
  9. package/dist/Rainman/types.d.ts +1 -0
  10. package/dist/SettingsUI/SystemSettings/SystemSettingsComponent.d.ts +3 -0
  11. package/dist/SettingsUI/SystemSettings/SystemSettingsComponent.jsx +17 -0
  12. package/dist/SettingsUI/SystemSettings/systemSettings.css +35 -0
  13. package/dist/SettingsUI/components/AutoplaySettings/autoplaySettings.css +267 -0
  14. package/dist/SettingsUI/components/AutoplaySettings/index.d.ts +6 -0
  15. package/dist/SettingsUI/components/AutoplaySettings/index.jsx +121 -0
  16. package/dist/SettingsUI/components/Bet/bet.css +71 -0
  17. package/dist/SettingsUI/components/Bet/index.d.ts +5 -0
  18. package/dist/SettingsUI/components/Bet/index.jsx +21 -0
  19. package/dist/SettingsUI/components/BuyFreeSpins/buyFreeSpin.css +46 -0
  20. package/dist/SettingsUI/components/BuyFreeSpins/index.d.ts +3 -0
  21. package/dist/SettingsUI/components/BuyFreeSpins/index.jsx +25 -0
  22. package/dist/SettingsUI/components/CloseModalButton/closeModalButton.css +20 -0
  23. package/dist/SettingsUI/components/CloseModalButton/index.d.ts +8 -0
  24. package/dist/SettingsUI/components/CloseModalButton/index.jsx +13 -0
  25. package/dist/SettingsUI/components/GameRules/data.d.ts +3 -0
  26. package/dist/SettingsUI/components/GameRules/data.js +7 -0
  27. package/dist/SettingsUI/components/GameRules/gameRules.css +96 -0
  28. package/dist/SettingsUI/components/GameRules/index.d.ts +6 -0
  29. package/dist/SettingsUI/components/GameRules/index.jsx +41 -0
  30. package/dist/SettingsUI/components/OptionButton/index.d.ts +3 -0
  31. package/dist/SettingsUI/components/OptionButton/index.jsx +40 -0
  32. package/dist/SettingsUI/components/OptionButton/types.d.ts +7 -0
  33. package/dist/SettingsUI/components/OptionButton/types.js +1 -0
  34. package/dist/SettingsUI/components/RichLimitingSlider/index.d.ts +13 -0
  35. package/dist/SettingsUI/components/RichLimitingSlider/index.jsx +26 -0
  36. package/dist/SettingsUI/components/RichLimitingSlider/richLimitingSlider.css +39 -0
  37. package/dist/SettingsUI/components/SlidingSwitch/index.d.ts +10 -0
  38. package/dist/SettingsUI/components/SlidingSwitch/index.jsx +10 -0
  39. package/dist/SettingsUI/components/SlidingSwitch/slidingSwitch.css +126 -0
  40. package/dist/SettingsUI/components/SpeedSettingsPopup/index.d.ts +7 -0
  41. package/dist/SettingsUI/components/SpeedSettingsPopup/index.jsx +27 -0
  42. package/dist/SettingsUI/components/SpeedSettingsPopup/speedSettingsPopup.css +119 -0
  43. package/dist/SettingsUI/components/SpeedSwitchButton/index.d.ts +4 -0
  44. package/dist/SettingsUI/components/SpeedSwitchButton/index.jsx +19 -0
  45. package/dist/SettingsUI/components/SwitchWithHeader/headerStyle.css +28 -0
  46. package/dist/SettingsUI/components/SwitchWithHeader/index.d.ts +10 -0
  47. package/dist/SettingsUI/components/SwitchWithHeader/index.jsx +23 -0
  48. package/dist/SettingsUI/components/SwitchWithHeader/types.d.ts +14 -0
  49. package/dist/SettingsUI/components/SwitchWithHeader/types.js +1 -0
  50. package/dist/SettingsUI/components/SymbolMultiplierPopup/index.d.ts +5 -0
  51. package/dist/SettingsUI/components/SymbolMultiplierPopup/index.jsx +58 -0
  52. package/dist/SettingsUI/components/SymbolMultiplierPopup/symbolPopup.css +96 -0
  53. package/dist/SettingsUI/components/UXSettings/UXSettings.css +28 -0
  54. package/dist/SettingsUI/components/UXSettings/index.d.ts +5 -0
  55. package/dist/SettingsUI/components/UXSettings/index.jsx +30 -0
  56. package/dist/SettingsUI/components/VolumeSettings/index.d.ts +6 -0
  57. package/dist/SettingsUI/components/VolumeSettings/index.jsx +46 -0
  58. package/dist/SettingsUI/components/VolumeSettings/volume.css +54 -0
  59. package/dist/SettingsUI/components/index.d.ts +12 -0
  60. package/dist/SettingsUI/components/index.jsx +12 -0
  61. package/dist/SettingsUI/hooks/index.d.ts +2 -0
  62. package/dist/SettingsUI/hooks/index.js +2 -0
  63. package/dist/SettingsUI/hooks/useBuyFreeSpins/index.d.ts +2 -0
  64. package/dist/SettingsUI/hooks/useBuyFreeSpins/index.js +2 -0
  65. package/dist/SettingsUI/hooks/useBuyFreeSpins/types.d.ts +4 -0
  66. package/dist/SettingsUI/hooks/useBuyFreeSpins/types.js +1 -0
  67. package/dist/SettingsUI/hooks/useBuyFreeSpins/useBuyFreeSpins.d.ts +2 -0
  68. package/dist/SettingsUI/hooks/useBuyFreeSpins/useBuyFreeSpins.js +12 -0
  69. package/dist/SettingsUI/hooks/useStore.d.ts +5 -0
  70. package/dist/SettingsUI/hooks/useStore.js +7 -0
  71. package/dist/SettingsUI/index.css +150 -0
  72. package/dist/SettingsUI/index.d.ts +3 -0
  73. package/dist/SettingsUI/index.jsx +30 -0
  74. package/dist/application/ApiConfig/ApiConfig.d.ts +7 -4
  75. package/dist/application/ApiConfig/ApiConfig.js +14 -5
  76. package/dist/application/ButtonsEventManager/ButtonsEventManager.js +6 -8
  77. package/dist/application/SoundManager/SoundManager.js +3 -3
  78. package/dist/application/SoundManager/types.d.ts +5 -6
  79. package/dist/application/SoundManager/types.js +5 -6
  80. package/dist/application/SpinLogic/util.d.ts +1 -1
  81. package/dist/application/SpinLogic/util.js +5 -5
  82. package/dist/application/TimedActions/IncentiveComponent.js +1 -1
  83. package/dist/application/index.d.ts +1 -0
  84. package/dist/application/index.js +1 -0
  85. package/dist/application/setup.d.ts +1 -0
  86. package/dist/application/setup.js +22 -0
  87. package/dist/components/AbstractFreeSpinContainer/AbstractFreeSpinContainer.d.ts +1 -2
  88. package/dist/components/AbstractFreeSpinContainer/AbstractFreeSpinContainer.js +3 -5
  89. package/dist/components/AbstractMainContainer/AbstractMainContainer.d.ts +9 -9
  90. package/dist/components/AbstractMainContainer/AbstractMainContainer.js +20 -8
  91. package/dist/components/buttons/BaseButton/BaseButton.d.ts +1 -2
  92. package/dist/components/buttons/BaseButton/BaseButton.js +0 -3
  93. package/dist/components/buttons/BaseButton/types.d.ts +8 -1
  94. package/dist/components/buttons/BaseButton/types.js +1 -1
  95. package/dist/components/buttons/buttonGroups/AbstractLeftButtons.d.ts +5 -5
  96. package/dist/components/buttons/buttonGroups/AbstractLeftButtons.js +15 -0
  97. package/dist/components/buttons/buttonGroups/AbstractLeftButtonsLandscape.js +2 -0
  98. package/dist/components/buttons/buttonGroups/AbstractLeftButtonsMobile.d.ts +3 -4
  99. package/dist/components/buttons/buttonGroups/AbstractLeftButtonsMobile.js +9 -0
  100. package/dist/components/buttons/buttonGroups/AbstractMiddleButtons.d.ts +5 -6
  101. package/dist/components/buttons/buttonGroups/AbstractMiddleButtons.js +10 -1
  102. package/dist/components/buttons/buttonGroups/AbstractRightButtons.d.ts +8 -8
  103. package/dist/components/buttons/buttonGroups/AbstractRightButtons.js +18 -1
  104. package/dist/components/buttons/buttonGroups/AbstractRightButtonsLandscape.d.ts +6 -8
  105. package/dist/components/buttons/buttonGroups/AbstractRightButtonsLandscape.js +15 -1
  106. package/dist/components/buttons/buttonGroups/AbstractRightButtonsMobile.d.ts +5 -6
  107. package/dist/components/buttons/buttonGroups/AbstractRightButtonsMobile.js +11 -0
  108. package/dist/components/buttons/{AutoplayButton → default}/AutoplayButton.d.ts +3 -2
  109. package/dist/components/buttons/default/AutoplayButton.js +39 -0
  110. package/dist/components/buttons/default/InfoButton.d.ts +5 -0
  111. package/dist/components/buttons/default/InfoButton.js +17 -0
  112. package/dist/components/buttons/default/MoreButton.d.ts +5 -0
  113. package/dist/components/buttons/default/MoreButton.js +17 -0
  114. package/dist/components/buttons/default/NegButton.d.ts +5 -0
  115. package/dist/components/buttons/default/NegButton.js +15 -0
  116. package/dist/components/buttons/default/PlusButton.d.ts +5 -0
  117. package/dist/components/buttons/default/PlusButton.js +19 -0
  118. package/dist/components/buttons/default/RefreshButton.d.ts +15 -0
  119. package/dist/components/buttons/default/RefreshButton.js +93 -0
  120. package/dist/components/buttons/{SpeedControlButton → default}/SpeedControlButton.d.ts +1 -1
  121. package/dist/components/buttons/default/SpeedControlButton.js +24 -0
  122. package/dist/components/buttons/default/SpinConfirmationButton.d.ts +5 -0
  123. package/dist/components/buttons/default/SpinConfirmationButton.js +13 -0
  124. package/dist/components/buttons/default/VolumeButton.d.ts +8 -0
  125. package/dist/components/buttons/{VolumeButton → default}/VolumeButton.js +14 -3
  126. package/dist/components/buttons/default/index.d.ts +9 -0
  127. package/dist/components/buttons/default/index.js +9 -0
  128. package/dist/components/buttons/index.d.ts +1 -4
  129. package/dist/components/buttons/index.js +1 -4
  130. package/dist/components/buttons/registrynames.d.ts +1 -0
  131. package/dist/components/buttons/registrynames.js +1 -0
  132. package/dist/components/common/Background.js +5 -5
  133. package/dist/components/{buttons/FreeSpinBox → common}/FreeSpinBox.d.ts +1 -1
  134. package/dist/components/{buttons/FreeSpinBox → common}/FreeSpinBox.js +4 -4
  135. package/dist/components/common/LogoStatic.d.ts +6 -0
  136. package/dist/components/common/LogoStatic.js +19 -0
  137. package/dist/components/common/index.d.ts +2 -0
  138. package/dist/components/common/index.js +2 -0
  139. package/dist/components/dictionary/i18n.d.ts +2 -1
  140. package/dist/components/dictionary/i18n.js +3 -2
  141. package/dist/components/dictionary/locales/en.json +47 -24
  142. package/dist/components/dictionary/locales/index.d.ts +2 -2
  143. package/dist/components/dictionary/locales/index.js +2 -2
  144. package/dist/components/frame/AbstractColumnsContainer.d.ts +3 -5
  145. package/dist/components/frame/AbstractColumnsContainer.js +4 -6
  146. package/dist/components/frame/AbstractFrame.d.ts +8 -5
  147. package/dist/components/frame/AbstractFrame.js +23 -9
  148. package/dist/components/frame/AbstractInnerFrame.d.ts +1 -1
  149. package/dist/components/frame/AbstractInnerFrame.js +1 -1
  150. package/dist/components/index.d.ts +1 -0
  151. package/dist/components/index.js +1 -0
  152. package/dist/components/messageBox/MessageBox.d.ts +3 -2
  153. package/dist/components/messageBox/MessageBox.js +13 -10
  154. package/dist/components/symbols/AbstractSymbolBase.d.ts +9 -9
  155. package/dist/components/symbols/AbstractSymbolBase.js +14 -16
  156. package/dist/components/symbols/AbstractSymbolsColumn.d.ts +5 -4
  157. package/dist/components/symbols/AbstractSymbolsColumn.js +10 -23
  158. package/dist/components/updatable/StylefulUpdatableText.d.ts +2 -2
  159. package/dist/components/updatable/StylefulUpdatableText.js +2 -1
  160. package/dist/components/updatable/UpdatableTextComponent.d.ts +1 -1
  161. package/dist/components/updatable/UpdatableTextComponent.js +3 -3
  162. package/dist/components/winLineIndicator/WinLineIndicator.d.ts +3 -5
  163. package/dist/components/winLineIndicator/WinLineIndicator.js +5 -7
  164. package/dist/connectivity/ConnectionWrapper.d.ts +2 -1
  165. package/dist/connectivity/ConnectionWrapper.js +16 -2
  166. package/dist/connectivity/LocalConnectionWrapper.d.ts +1 -0
  167. package/dist/connectivity/LocalConnectionWrapper.js +20 -0
  168. package/dist/connectivity/apiQueue.d.ts +1 -1
  169. package/dist/connectivity/serverConnection.d.ts +1 -0
  170. package/dist/connectivity/serverData.d.ts +14 -6
  171. package/dist/connectivity/transformation.d.ts +6 -1
  172. package/dist/controllers/AbstractController.d.ts +12 -10
  173. package/dist/controllers/AbstractController.js +18 -8
  174. package/dist/controllers/UiController.d.ts +3 -3
  175. package/dist/controllers/UiController.js +4 -3
  176. package/dist/index.d.ts +2 -0
  177. package/dist/index.js +2 -0
  178. package/dist/loading/AbstractLoadingContainer.d.ts +12 -0
  179. package/dist/loading/AbstractLoadingContainer.js +22 -0
  180. package/dist/loading/SpriteLoadingContainer.js +3 -2
  181. package/dist/loading/index.d.ts +1 -0
  182. package/dist/loading/index.js +1 -0
  183. package/dist/stores/SettingsStore.d.ts +2 -0
  184. package/dist/stores/SettingsStore.js +6 -2
  185. package/dist/stores/index.d.ts +1 -0
  186. package/dist/stores/index.js +1 -0
  187. package/dist/utils/assets/assetGetter.d.ts +3 -0
  188. package/dist/utils/assets/assetGetter.js +14 -1
  189. package/dist/utils/common/functions.js +3 -3
  190. package/dist/utils/common/logger.d.ts +4 -4
  191. package/dist/utils/common/logger.js +7 -12
  192. package/dist/utils/common/screenHelpers.d.ts +1 -0
  193. package/dist/utils/common/screenHelpers.js +7 -0
  194. package/dist/utils/common/uiItems.d.ts +4 -5
  195. package/dist/utils/common/uiItems.js +3 -4
  196. package/dist/winComponents/winFactory.d.ts +2 -2
  197. package/package.json +14 -3
  198. package/dist/components/buttons/AutoplayButton/AutoplayButton.js +0 -21
  199. package/dist/components/buttons/AutoplayButton/index.d.ts +0 -1
  200. package/dist/components/buttons/AutoplayButton/index.js +0 -1
  201. package/dist/components/buttons/FreeSpinBox/index.d.ts +0 -1
  202. package/dist/components/buttons/FreeSpinBox/index.js +0 -1
  203. package/dist/components/buttons/SpeedControlButton/SpeedControlButton.js +0 -16
  204. package/dist/components/buttons/SpeedControlButton/index.d.ts +0 -1
  205. package/dist/components/buttons/SpeedControlButton/index.js +0 -1
  206. package/dist/components/buttons/VolumeButton/VolumeButton.d.ts +0 -8
  207. package/dist/components/buttons/VolumeButton/index.d.ts +0 -1
  208. package/dist/components/buttons/VolumeButton/index.js +0 -1
  209. package/dist/loading/LoadingContainer.d.ts +0 -10
  210. package/dist/loading/LoadingContainer.js +0 -34
@@ -18,6 +18,7 @@ export declare class ComponentRegistry {
18
18
  remove(component: Container): void;
19
19
  updateAllSpeedAdaptable(speedLevel: SpeedLevel): void;
20
20
  get<T extends keyof RegistryMap>(componentName: T): RegistryMap[T];
21
+ getIfExists<T extends keyof RegistryMap>(componentName: T): RegistryMap[T];
21
22
  has<T extends keyof RegistryMap>(componentName: T): boolean;
22
23
  addMany(components: Container[]): void;
23
24
  removeMany(components: Container[]): void;
@@ -85,6 +85,10 @@ export class ComponentRegistry {
85
85
  }
86
86
  return componentToReturn;
87
87
  }
88
+ getIfExists(componentName) {
89
+ const componentToReturn = this.registry.get(componentName);
90
+ return componentToReturn;
91
+ }
88
92
  has(componentName) {
89
93
  return this.registry.has(componentName);
90
94
  }
@@ -1,4 +1,4 @@
1
- import { AbstractColumnsContainer, AbstractFrame, AbstractInnerFrame, AutoplayButton, Background, BaseButton, BUTTONS, COMPONENTS, FreeSpinBox, MessageBox, SpeedControlButton, StylefulUpdatableText, UpdatableTextComponent, UpdatableValueComponent, VolumeButton } from "../components";
1
+ import { AbstractColumnsContainer, AbstractFrame, AbstractInnerFrame, AutoplayButton, Background, BaseButton, BUTTONS, COMPONENTS, FreeSpinBox, InfoButton, MessageBox, MoreButton, NegButton, PlusButton, RefreshButton, SpeedControlButton, StylefulUpdatableText, UpdatableTextComponent, UpdatableValueComponent, VolumeButton } from "../components";
2
2
  export interface RegistryMap {
3
3
  [MessageBox.autoSpinTextRegistryName]: UpdatableValueComponent;
4
4
  [MessageBox.currentWinTextRegistryName]: UpdatableTextComponent;
@@ -8,15 +8,15 @@ export interface RegistryMap {
8
8
  [Background.registryName]: Background;
9
9
  [VolumeButton.registryName]: VolumeButton;
10
10
  [AutoplayButton.registryName]: AutoplayButton;
11
- [FreeSpinBox.registryName]: FreeSpinBox;
11
+ [FreeSpinBox.registryName]?: FreeSpinBox;
12
12
  [AbstractFrame.registryName]: AbstractFrame;
13
13
  [AbstractInnerFrame.registryName]: AbstractInnerFrame;
14
14
  [AbstractColumnsContainer.registryName]: AbstractColumnsContainer;
15
- [BUTTONS.refresh]: BaseButton;
16
- [BUTTONS.plus]: BaseButton;
17
- [BUTTONS.neg]: BaseButton;
18
- [BUTTONS.info]: BaseButton;
19
- [BUTTONS.more]: BaseButton;
15
+ [RefreshButton.registryName]: RefreshButton;
16
+ [PlusButton.registryName]: PlusButton;
17
+ [NegButton.registryName]: NegButton;
18
+ [InfoButton.registryName]: InfoButton;
19
+ [MoreButton.registryName]: MoreButton;
20
20
  [BUTTONS.gamble]: BaseButton;
21
21
  [COMPONENTS.betText]: UpdatableTextComponent;
22
22
  [COMPONENTS.creditText]: UpdatableTextComponent;
@@ -1 +1 @@
1
- import { AbstractColumnsContainer, AbstractFrame, AbstractInnerFrame, AutoplayButton, Background, BUTTONS, COMPONENTS, FreeSpinBox, MessageBox, SpeedControlButton, VolumeButton, } from "../components";
1
+ import { AbstractColumnsContainer, AbstractFrame, AbstractInnerFrame, AutoplayButton, Background, BUTTONS, COMPONENTS, FreeSpinBox, InfoButton, MessageBox, MoreButton, NegButton, PlusButton, RefreshButton, SpeedControlButton, VolumeButton, } from "../components";
@@ -1,5 +1,5 @@
1
1
  import { Nullable, PlayableAction } from "../utils";
2
- export declare class DescribedPlayableAction<T = Record<string, never>> {
2
+ export declare class DescribedPlayableAction<T = number> {
3
3
  readonly type: T;
4
4
  action: PlayableAction;
5
5
  winAmount: Nullable<number>;
@@ -3,9 +3,9 @@ import { RainMan } from "../Rainman";
3
3
  export class MoneyText {
4
4
  money;
5
5
  constructor(amount) {
6
- this.money = Money.fromDecimal(amount, RainMan.config?.currency, Math.round);
6
+ this.money = Money.fromDecimal(amount, RainMan.config.currency, Math.round);
7
7
  }
8
8
  toString() {
9
- return `${this.money} ${RainMan.config.currency}`;
9
+ return `${this.money} ${RainMan.config.currency.symbol_native}`;
10
10
  }
11
11
  }
@@ -1,7 +1,7 @@
1
1
  import "../components/dictionary/i18n";
2
2
  import { merge } from "lodash";
3
3
  import { ComponentRegistry } from "../ComponentRegistry";
4
- import { SettingsStore } from "../stores";
4
+ import { settingStore } from "../SettingsUI/hooks";
5
5
  import { defaultAppConfig } from "./appConfig";
6
6
  export class RainMan {
7
7
  static app;
@@ -16,7 +16,7 @@ export class RainMan {
16
16
  RainMan.config = merge(defaultAppConfig, config);
17
17
  RainMan.symbolIds = symbolIds;
18
18
  RainMan.winTypeIds = winTypeIds;
19
- RainMan.settingsStore = new SettingsStore();
19
+ RainMan.settingsStore = settingStore;
20
20
  RainMan.componentRegistry = new ComponentRegistry(app);
21
21
  RainMan.spinLogicFactory = spinLogicFactory;
22
22
  }
@@ -1,10 +1,11 @@
1
1
  import { Color } from "pixi.js";
2
2
  import { Currencies } from "ts-money";
3
3
  export const defaultAppConfig = {
4
- gameHeight: 1920,
5
- gameWidth: 1080,
4
+ gameWidth: 1920,
5
+ gameHeight: 1080,
6
6
  idleTimeout: 10000,
7
7
  fontSize: 35,
8
+ mobileFontSize: 45,
8
9
  fontColor: new Color(0xfbd400).toHex(),
9
10
  updatableTextValueColor: new Color(0xffffff).toHex(),
10
11
  fontFace: "HelveticaNeueLTStd",
@@ -15,7 +16,7 @@ export const defaultAppConfig = {
15
16
  timeToSpeedUp: 200,
16
17
  timeToSlowDown: 10,
17
18
  symbolDropDownTime: 500,
18
- wiggleTweenDuration: 1000,
19
+ wiggleTweenDuration: 400,
19
20
  balloonFlyUpTime: 500,
20
21
  timeToSetResults: 10,
21
22
  bigWinDuration: 2000,
@@ -14,6 +14,7 @@ export type OptionalAppConfig = {
14
14
  idleTimeout: number;
15
15
  currency: Currency;
16
16
  fontSize: number;
17
+ mobileFontSize: number;
17
18
  fontColor: string;
18
19
  updatableTextValueColor: string;
19
20
  fontFace: string;
@@ -0,0 +1,3 @@
1
+ import "./systemSettings.css";
2
+ import React from "react";
3
+ export declare const SystemSettingsComponent: () => React.JSX.Element;
@@ -0,0 +1,17 @@
1
+ import "./systemSettings.css";
2
+ import i18next from "i18next";
3
+ import React from "react";
4
+ import { UI_ITEMS } from "../../utils";
5
+ import { BetComponent, CloseModalButton, UXSettings } from "../components";
6
+ export const SystemSettingsComponent = () => {
7
+ return (<div className="settings">
8
+ <div className="settings__title">
9
+ <h2>{i18next.t("systemSettings")}</h2>
10
+ </div>
11
+ <CloseModalButton layerId={UI_ITEMS.settings}/>
12
+ <div className="settings__column">
13
+ <BetComponent />
14
+ <UXSettings />
15
+ </div>
16
+ </div>);
17
+ };
@@ -0,0 +1,35 @@
1
+ .settings__title {
2
+ display: flex;
3
+ flex-direction: row;
4
+ justify-content: center;
5
+ }
6
+
7
+ .settings {
8
+ display: flex;
9
+ flex-direction: column;
10
+ height: 90%;
11
+ align-items: center;
12
+ width: 90%;
13
+ }
14
+
15
+ .settings__title h2 {
16
+ color: #ec5e27;
17
+ margin: 0px;
18
+ text-decoration: underline;
19
+ text-transform: uppercase;
20
+ }
21
+
22
+ .settings__column {
23
+ display: flex;
24
+ flex-direction: row;
25
+ overflow: auto;
26
+ align-items: center;
27
+ height: 100%;
28
+ width: 100%;
29
+ }
30
+
31
+ @media only screen and (max-width: 900px) {
32
+ .settings__column {
33
+ flex-direction: column-reverse;
34
+ }
35
+ }
@@ -0,0 +1,267 @@
1
+ .autoplay-settings {
2
+ display: flex;
3
+ flex-direction: column;
4
+ height: 90%;
5
+ align-items: center;
6
+ width: 70%;
7
+ max-width: 800px;
8
+ justify-content: space-between;
9
+ }
10
+
11
+ .autoplay-settings__title {
12
+ display: flex;
13
+ flex-direction: row;
14
+ justify-content: center;
15
+ }
16
+
17
+ .autoplay-settings__exit {
18
+ font-size: 30px;
19
+ color: white;
20
+ position: absolute;
21
+ right: 30px;
22
+ top: 15px;
23
+ background-color: #00000000;
24
+ border-style: none;
25
+ }
26
+
27
+ .autoplay-settings__title h2 {
28
+ color: #ec5e27;
29
+ margin: 0px;
30
+ text-decoration: underline;
31
+ text-transform: uppercase;
32
+ }
33
+
34
+ .autoplay-settings__sliders {
35
+ width: 100%;
36
+ }
37
+
38
+ .autoplay-settings__switch {
39
+ width: 300px;
40
+ }
41
+
42
+ .autoplay-settings__column {
43
+ display: flex;
44
+ flex-direction: row;
45
+ overflow: auto;
46
+ align-items: center;
47
+ height: 100%;
48
+ width: 100%;
49
+ }
50
+
51
+ .autoplay-settings__switches {
52
+ display: flex;
53
+ flex-direction: row;
54
+ justify-content: space-between;
55
+ align-items: center;
56
+ width: 100%;
57
+ margin: 10px 0px;
58
+ }
59
+
60
+ .autoplay-settings__stop-limits {
61
+ display: flex;
62
+ flex-direction: row;
63
+ width: 100%;
64
+ height: 50px;
65
+ justify-content: center;
66
+ }
67
+
68
+ .autoplay-settings__limit {
69
+ width: 40px;
70
+ border: solid 2px white;
71
+ display: flex;
72
+ align-items: center;
73
+ justify-content: center;
74
+ font-size: 20px;
75
+ font-weight: bolder;
76
+ margin: 0px 5px;
77
+ color: white;
78
+ }
79
+
80
+ .autoplay-settings__limit:hover {
81
+ background-color: #fdf42525;
82
+ border: 2px solid #fdf425;
83
+ color: #fdf425;
84
+ }
85
+
86
+ .autoplay-settings__limit--active {
87
+ background-color: #fdf42550;
88
+ border: 2px solid #fdf425;
89
+ color: #fdf425;
90
+ }
91
+
92
+ .autoplay-settings__limit--infinity {
93
+ border: 2px solid #5a5a5aad;
94
+ color: #5a5a5aad;
95
+ }
96
+
97
+ .left {
98
+ border-radius: 34px 0px 0px 34px;
99
+ }
100
+
101
+ .right {
102
+ border-radius: 0px 34px 34px 0px;
103
+ }
104
+
105
+ .middle {
106
+ width: 60px;
107
+ border-radius: 0px 0px 0px 0px;
108
+ background-color: #00000000;
109
+ }
110
+
111
+ .circle {
112
+ border-radius: 34px;
113
+ font-size: 40px;
114
+ }
115
+
116
+ .autoplay-settings__limit.circle p {
117
+ position: relative;
118
+ top: -4px;
119
+ }
120
+
121
+ .autoplay-settings__limit.left p {
122
+ position: relative;
123
+ top: -2px;
124
+ }
125
+
126
+ .autoplay-settings__limit.right p {
127
+ position: relative;
128
+ top: -2px;
129
+ }
130
+
131
+ .autoplay-settings__confirmation {
132
+ display: flex;
133
+ flex-direction: row;
134
+ justify-content: center;
135
+ align-items: center;
136
+ width: 100%;
137
+ margin-top: 20px;
138
+ }
139
+
140
+ .autoplay-settings__confirmation-button {
141
+ margin: 10px 0px 10px 10px;
142
+ width: 100px;
143
+ height: 40px;
144
+ border: solid white 2px;
145
+ background-color: black;
146
+ border-radius: 34px;
147
+ font-size: large;
148
+ font-weight: bold;
149
+ color: white;
150
+ display: flex;
151
+ justify-content: center;
152
+ align-items: center;
153
+ margin: 0px 10px;
154
+ }
155
+
156
+ .autoplay-settings__confirmation-button:hover {
157
+ background-color: #fdf42550;
158
+ border: 2px solid #fdf425;
159
+ color: #fdf425;
160
+ }
161
+
162
+ @media only screen and (max-width: 900px) {
163
+ .autoplay-settings {
164
+ width: 90%;
165
+ }
166
+
167
+ .autoplay-settings__column {
168
+ flex-direction: column-reverse;
169
+ }
170
+
171
+ .autoplay-settings__switches {
172
+ width: 100%;
173
+ flex-direction: column;
174
+ }
175
+
176
+ .autoplay-settings__switch {
177
+ width: 250px;
178
+ flex-direction: column;
179
+ margin: 5px 0px;
180
+ }
181
+
182
+ .left {
183
+ width: 40px;
184
+ border-radius: 34px 0px 0px 34px;
185
+ }
186
+
187
+ .right {
188
+ width: 40px;
189
+ border-radius: 0px 34px 34px 0px;
190
+ }
191
+
192
+ .middle {
193
+ width: 70px;
194
+ font-size: 12px;
195
+ border-radius: 0px 0px 0px 0px;
196
+ }
197
+
198
+ .circle {
199
+ border-radius: 34px;
200
+ font-size: 40px;
201
+ width: 30px;
202
+ }
203
+
204
+ .autoplay-settings__stop-limits {
205
+ height: 35px;
206
+ }
207
+
208
+ .autoplay-settings__limit.circle p {
209
+ position: relative;
210
+ top: -4px;
211
+ font-size: 20px;
212
+ }
213
+
214
+ .autoplay-settings__limit.left p {
215
+ position: relative;
216
+ top: -2px;
217
+ }
218
+
219
+ .autoplay-settings__limit.right p {
220
+ position: relative;
221
+ top: -2px;
222
+ }
223
+
224
+ .autoplay-settings__confirmation {
225
+ display: flex;
226
+ flex-direction: row;
227
+ justify-content: center;
228
+ align-items: center;
229
+ width: 100%;
230
+ margin-top: 0px;
231
+ }
232
+
233
+ .left {
234
+ border-radius: 34px 0px 0px 34px;
235
+ }
236
+
237
+ .right {
238
+ border-radius: 0px 34px 34px 0px;
239
+ }
240
+
241
+ .middle {
242
+ width: 60px;
243
+ border-radius: 0px 0px 0px 0px;
244
+ }
245
+
246
+ .circle {
247
+ border-radius: 34px;
248
+ font-size: 40px;
249
+ }
250
+
251
+ .autoplay-settings__limit.circle p {
252
+ top: -2px;
253
+ }
254
+
255
+ .autoplay-settings__limit.left p {
256
+ top: -2px;
257
+ }
258
+
259
+ .autoplay-settings__limit.right p {
260
+ top: -2px;
261
+ }
262
+
263
+ .autoplay-settings__exit {
264
+ right: -10px;
265
+ top: 10px;
266
+ }
267
+ }
@@ -0,0 +1,6 @@
1
+ import "react-custom-scroll/dist/customScroll.css";
2
+ import "./autoplaySettings.css";
3
+ import React from "react";
4
+ export declare const AutoplaySettings: (() => React.JSX.Element) & {
5
+ displayName: string;
6
+ };
@@ -0,0 +1,121 @@
1
+ import "react-custom-scroll/dist/customScroll.css";
2
+ import "./autoplaySettings.css";
3
+ import i18next from "i18next";
4
+ import { observer } from "mobx-react-lite";
5
+ import React, { useEffect, useState } from "react";
6
+ import { COMPONENTS } from "../../../components";
7
+ import { UI_ITEMS } from "../../../utils";
8
+ import { useStores } from "../../hooks";
9
+ import { closeModal, CloseModalButton } from "../CloseModalButton";
10
+ import { RichLimitingSlider } from "../RichLimitingSlider";
11
+ import { SpeedButtonWithHeader, SwitchWithHeader } from "../SwitchWithHeader";
12
+ export const AutoplaySettings = observer(() => {
13
+ const [limit_numbers, setLimitNumbers] = useState([0]);
14
+ const initialAutoSpinCount = 50;
15
+ const availableAutoSpinLimits = [10, 20, 50, 100, 150, 200, 250, 300, 350, 400, 500, 600, 700, 800, 900, 1000];
16
+ const { settingStore } = useStores();
17
+ const calculateLimitBounds = (indexOfSelectedLimit) => {
18
+ let bottomLimitIndex = indexOfSelectedLimit - 2;
19
+ let topLimitIndex = indexOfSelectedLimit + 1;
20
+ if (bottomLimitIndex < 0) {
21
+ bottomLimitIndex = availableAutoSpinLimits.length - -bottomLimitIndex;
22
+ }
23
+ if (topLimitIndex === availableAutoSpinLimits.length) {
24
+ topLimitIndex = 0;
25
+ }
26
+ return {
27
+ bottomLimitIndex,
28
+ topLimitIndex,
29
+ };
30
+ };
31
+ const updateLimitsBounds = (newLimit) => {
32
+ setAutoSpinsCount(newLimit);
33
+ const indexOfSelectedSpinsLimit = availableAutoSpinLimits.findIndex((limitCount) => limitCount === newLimit);
34
+ if (indexOfSelectedSpinsLimit === -1) {
35
+ }
36
+ const { bottomLimitIndex, topLimitIndex } = calculateLimitBounds(indexOfSelectedSpinsLimit);
37
+ const limitNumbersIndexes = [];
38
+ for (let index = bottomLimitIndex; index !== topLimitIndex + 1; index++) {
39
+ if (index === availableAutoSpinLimits.length) {
40
+ index = 0;
41
+ }
42
+ limitNumbersIndexes.push(availableAutoSpinLimits[index]);
43
+ if (limitNumbersIndexes.length === 4) {
44
+ break;
45
+ }
46
+ }
47
+ setLimitNumbers(limitNumbersIndexes);
48
+ };
49
+ useEffect(() => {
50
+ updateLimitsBounds(initialAutoSpinCount);
51
+ }, []);
52
+ const { singleWinExceeds, balancedIncreased, balancedDecreased, howManyAutoSpinsLeft, infinitySpinsEnabled, setSingleWinExceeds, setBalancedIncreased, setBalancedDecreased, setAutoSpinsCount, flipInfinitySpinsFlag, resetAutoplaySettings, } = settingStore;
53
+ return (<div className="autoplay-settings">
54
+ <CloseModalButton layerId={UI_ITEMS.autoplay}/>
55
+ <div className="autoplay-settings__title">
56
+ <h2>{i18next.t("autoPlay")}</h2>
57
+ </div>
58
+ <div className="autoplay-settings__stop-limits">
59
+ <div className={`autoplay-settings__limit left ${infinitySpinsEnabled ? "autoplay-settings__limit--infinity" : ""}`} onClick={() => {
60
+ let indexOfSelectedSpinsLimit = availableAutoSpinLimits.findIndex((limitCount) => limitCount === howManyAutoSpinsLeft);
61
+ indexOfSelectedSpinsLimit -= 1;
62
+ if (indexOfSelectedSpinsLimit === -1) {
63
+ indexOfSelectedSpinsLimit = availableAutoSpinLimits.length - 1;
64
+ }
65
+ updateLimitsBounds(availableAutoSpinLimits[indexOfSelectedSpinsLimit]);
66
+ }}>
67
+ <p>-</p>
68
+ </div>
69
+ {limit_numbers.map((limiter, index) => {
70
+ return (<button key={`${limiter}${index}`} value={limiter} className={`autoplay-settings__limit ${limiter === howManyAutoSpinsLeft ? "autoplay-settings__limit--active" : ""} middle ${infinitySpinsEnabled ? "autoplay-settings__limit--infinity" : ""}`} onClick={(event) => updateLimitsBounds(Number(event.currentTarget.value))}>
71
+ <p>{limiter}</p>
72
+ </button>);
73
+ })}
74
+ <div className={`autoplay-settings__limit right ${infinitySpinsEnabled ? "autoplay-settings__limit--infinity" : ""}`} onClick={() => {
75
+ let indexOfSelectedSpinsLimit = availableAutoSpinLimits.findIndex((limitCount) => limitCount === howManyAutoSpinsLeft);
76
+ indexOfSelectedSpinsLimit += 1;
77
+ if (indexOfSelectedSpinsLimit === availableAutoSpinLimits.length) {
78
+ indexOfSelectedSpinsLimit = 0;
79
+ }
80
+ const newAutoSpinsLimitNumber = availableAutoSpinLimits[indexOfSelectedSpinsLimit];
81
+ updateLimitsBounds(newAutoSpinsLimitNumber);
82
+ }}>
83
+ <p>+</p>
84
+ </div>
85
+ <div className={`autoplay-settings__limit circle ${infinitySpinsEnabled ? "autoplay-settings__limit--active" : ""}`} onClick={() => flipInfinitySpinsFlag()}>
86
+ <p>∞</p>
87
+ </div>
88
+ </div>
89
+
90
+ <div className="autoplay-settings__title">
91
+ <h2>{i18next.t("stopAutoPlay")}</h2>
92
+ </div>
93
+ <div className="autoplay-settings__sliders">
94
+ <RichLimitingSlider value={singleWinExceeds} setValue={setSingleWinExceeds} maxValue={Number(i18next.t("ifSingleWinExceedsMax"))} description={i18next.t("ifSingleWinExceedsMaxDescription")}/>
95
+ <RichLimitingSlider value={balancedIncreased} setValue={setBalancedIncreased} maxValue={Number(i18next.t("ifBalanceIncreasesBy"))} description={i18next.t("ifBalanceIncreasesByDescription")}/>
96
+ <RichLimitingSlider value={balancedDecreased} setValue={setBalancedDecreased} maxValue={Number(i18next.t("ifSingleWinExceedsMax"))} description={i18next.t("ifBalanceDecreaseByDescription")}/>
97
+ </div>
98
+
99
+ <div className="autoplay-settings__switches">
100
+ <div className="autoplay-settings__switch">
101
+ <SwitchWithHeader header={i18next.t("onAnyWin")} flag={settingStore.onAnyWin} setFlag={settingStore.setOnAnyWin}/>
102
+ </div>
103
+ <div className="autoplay-settings__switch">
104
+ <SpeedButtonWithHeader header={i18next.t("speedButtonHeader")} description={i18next.t("speedButtonDescription")}/>
105
+ </div>
106
+ </div>
107
+
108
+ <div className="autoplay-settings__confirmation">
109
+ <div className="autoplay-settings__confirmation-button" onClick={() => {
110
+ resetAutoplaySettings();
111
+ updateLimitsBounds(initialAutoSpinCount);
112
+ closeModal(UI_ITEMS.autoplay);
113
+ }}>
114
+ <p>{i18next.t("cancel")}</p>
115
+ </div>
116
+ <div id={COMPONENTS.autoSpinConfirm} className="autoplay-settings__confirmation-button" onClick={() => closeModal(UI_ITEMS.autoplay)}>
117
+ <p>{i18next.t("confirm")}</p>
118
+ </div>
119
+ </div>
120
+ </div>);
121
+ });
@@ -0,0 +1,71 @@
1
+ .bet-container {
2
+ display: flex;
3
+ flex-direction: column;
4
+ align-items: center;
5
+ justify-content: center;
6
+ width: 50%;
7
+ height: 150px;
8
+ margin: 0px 30px;
9
+ }
10
+
11
+ .bet-container__value {
12
+ display: flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+ width: 150px;
16
+ height: 60px;
17
+ border-radius: 60px;
18
+ border: 2px white;
19
+ border-style: solid;
20
+ margin: 0px 10px;
21
+ }
22
+
23
+ .bet-container__value p {
24
+ font-size: 25px;
25
+ }
26
+
27
+ .bet-container__button {
28
+ height: 62px;
29
+ width: 62px;
30
+ font-size: 40px;
31
+ font-weight: bold;
32
+ border-radius: 50%;
33
+ background-color: rgba(0, 0, 0, 0);
34
+ border: 2px solid white;
35
+ color: white;
36
+ text-align: center;
37
+ cursor: pointer;
38
+ }
39
+
40
+ .bet-container h2 {
41
+ text-transform: uppercase;
42
+ }
43
+
44
+ .bet-container__controls {
45
+ display: flex;
46
+ flex-direction: row;
47
+ }
48
+
49
+ .bet-container__button:hover {
50
+ background-color: #fdf42550;
51
+ color: #fdf425;
52
+ border: 2px solid #fdf425;
53
+ }
54
+
55
+ @media only screen and (max-width: 900px) {
56
+ .bet-container__value {
57
+ width: 70px;
58
+ height: 30px;
59
+ }
60
+
61
+ .bet-container__value p {
62
+ font-size: 12px;
63
+ }
64
+
65
+ .bet-container__button {
66
+ height: 32px;
67
+ width: 32px;
68
+ font-size: 20px;
69
+ padding: 0px;
70
+ }
71
+ }
@@ -0,0 +1,5 @@
1
+ import "./bet.css";
2
+ import React from "react";
3
+ export declare const BetComponent: (() => React.JSX.Element) & {
4
+ displayName: string;
5
+ };
@@ -0,0 +1,21 @@
1
+ import "./bet.css";
2
+ import { observer } from "mobx-react-lite";
3
+ import React from "react";
4
+ import { useStores } from "../../hooks";
5
+ export const BetComponent = observer(() => {
6
+ const { settingStore } = useStores();
7
+ return (<div className="bet-container">
8
+ <h2>Total bet</h2>
9
+ <div className="bet-container__controls">
10
+ <button name="bet-minus" className="bet-container__button">
11
+ -
12
+ </button>
13
+ <div className="bet-container__value">
14
+ <p>{settingStore.betText}</p>
15
+ </div>
16
+ <button name="bet-plus" className="bet-container__button">
17
+ +
18
+ </button>
19
+ </div>
20
+ </div>);
21
+ });