pixi-rainman-game-engine 0.3.30 → 0.3.31

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.
@@ -101,6 +101,7 @@ export class AbstractColumnsContainer extends Container {
101
101
  RainMan.settingsStore.setIsTemporarySpeed(true);
102
102
  RainMan.componentRegistry.setTemporarySpeedLevel(SPEED_LEVELS.fast);
103
103
  this.executePendingMysteryFx();
104
+ this.currentColumn?.releaseNextColumnTrigger();
104
105
  this.resolveMysterySpeedUp();
105
106
  if (this.currentColumn) {
106
107
  this.currentColumn.skipHidingMysteryFx = true;
@@ -431,8 +432,10 @@ export class AbstractColumnsContainer extends Container {
431
432
  */
432
433
  prepareConfiguringReelsEnd(finalSymbolReels) {
433
434
  return this.allColumns.map((column, index) => async () => {
435
+ this.currentColumn = column;
434
436
  column.configBlindSpin(finalSymbolReels[index]);
435
437
  await column.getTriggersPromise();
438
+ this.currentColumn = null;
436
439
  });
437
440
  }
438
441
  }
@@ -167,6 +167,12 @@ export declare abstract class AbstractSymbolsColumn extends Container implements
167
167
  * @returns {Promise<void>} stop promise
168
168
  */
169
169
  getStopPromise(): Promise<void>;
170
+ /**
171
+ * Function for releasing trigger to next column
172
+ * @public
173
+ * @returns {void}
174
+ */
175
+ releaseNextColumnTrigger(): void;
170
176
  /**
171
177
  * Function for stopping all playing animations of symbols
172
178
  * @public
@@ -298,6 +298,17 @@ export class AbstractSymbolsColumn extends Container {
298
298
  }
299
299
  throw new Error("No promise to return");
300
300
  }
301
+ /**
302
+ * Function for releasing trigger to next column
303
+ * @public
304
+ * @returns {void}
305
+ */
306
+ releaseNextColumnTrigger() {
307
+ if (this.triggerNextColumn !== null) {
308
+ this.triggerNextColumn();
309
+ this.triggerNextColumn = null;
310
+ }
311
+ }
301
312
  /**
302
313
  * Function for stopping all playing animations of symbols
303
314
  * @public
@@ -618,12 +629,9 @@ export class AbstractSymbolsColumn extends Container {
618
629
  if (element) {
619
630
  // swap symbol with chosen element
620
631
  symbol.swapSymbol(element);
621
- // symbol.setSpineMode(MOVE3);
622
632
  }
623
633
  if (this.ending.length === 1) {
624
- if (this.triggerNextColumn) {
625
- this.triggerNextColumn();
626
- }
634
+ this.releaseNextColumnTrigger();
627
635
  }
628
636
  if (this.ending.length === 0) {
629
637
  this.shouldMoveToTop = false;
@@ -482,30 +482,47 @@ export class AbstractController {
482
482
  this.clearMobileSpinTimeout();
483
483
  });
484
484
  refreshButton.on("touchstart", () => {
485
+ if (this.mobileSpinTimeout) {
486
+ clearInterval(this.mobileSpinTimeout);
487
+ this.mobileSpinTimeout = null;
488
+ }
489
+ if (this.mobileSpinDelay) {
490
+ clearTimeout(this.mobileSpinDelay);
491
+ this.mobileSpinDelay = null;
492
+ }
485
493
  if (this.buttonHeldSince === 0) {
486
494
  this.buttonHeldSince = Date.now();
487
495
  }
488
- this.mobileSpinTimeout = setInterval(() => {
489
- const buttonHold = Date.now() - this.buttonHeldSince;
490
- if (buttonHold >= 500) {
491
- this.columnsContainer.enableQuickReelsStop();
492
- }
493
- this.handleDisablingButtons(true);
494
- this.quickStopController.setQuickStopCounterLock(true);
495
- this.summaryStop = this.skipFreeSpinSummary ? false : this.invokeFreeSpinSummaryPlateAfterWin;
496
- if (this.invokeFreeSpinPlateAfterWin ||
497
- this.summaryStop ||
498
- this.shouldStopMobileSpin ||
499
- this.resolveBigWin !== undefined ||
500
- this.resolveSuperBonusWin !== undefined ||
501
- this.resolveMysteryWin !== undefined) {
502
- if (this.clearMobileSpinTimeout) {
503
- this.clearMobileSpinTimeout();
504
- }
496
+ this.mobileSpinDelay = setTimeout(() => {
497
+ this.mobileSpinDelay = null;
498
+ if (this.buttonHeldSince === 0) {
505
499
  return;
506
500
  }
507
- this.handleSpinLogic();
508
- }, RainMan.config.durationOfActions.mobileSpinTimeout);
501
+ this.mobileSpinTimeout = setInterval(() => {
502
+ if (this.buttonHeldSince === 0) {
503
+ if (this.clearMobileSpinTimeout) {
504
+ this.clearMobileSpinTimeout();
505
+ }
506
+ return;
507
+ }
508
+ this.columnsContainer.enableQuickReelsStop();
509
+ this.handleDisablingButtons(true);
510
+ this.quickStopController.setQuickStopCounterLock(true);
511
+ this.summaryStop = this.skipFreeSpinSummary ? false : this.invokeFreeSpinSummaryPlateAfterWin;
512
+ if (this.invokeFreeSpinPlateAfterWin ||
513
+ this.summaryStop ||
514
+ this.shouldStopMobileSpin ||
515
+ this.resolveBigWin !== undefined ||
516
+ this.resolveSuperBonusWin !== undefined ||
517
+ this.resolveMysteryWin !== undefined) {
518
+ if (this.clearMobileSpinTimeout) {
519
+ this.clearMobileSpinTimeout();
520
+ }
521
+ return;
522
+ }
523
+ this.handleSpinLogic();
524
+ }, RainMan.config.durationOfActions.mobileSpinTimeout);
525
+ }, 250);
509
526
  });
510
527
  }
511
528
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixi-rainman-game-engine",
3
- "version": "0.3.30",
3
+ "version": "0.3.31",
4
4
  "description": "This repository contains all of the mechanics that used in rainman games.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",