pixi-rainman-game-engine 0.3.30 → 0.3.31-b

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;
@@ -153,20 +154,21 @@ export class AbstractColumnsContainer extends Container {
153
154
  const configureSpinAction = configuredBlindSpinsActions.shift();
154
155
  if (configureSpinAction !== undefined) {
155
156
  if (indexesOfReelsToExtendSpinningTime.includes(index)) {
156
- this.currentColumn = this.allColumns[index];
157
- this.currentColumn.adaptToSpeed(RainMan.settingsStore.currentSpeed);
158
- frame.invokeMysteryFx(this.currentColumn.x, this.currentColumn.y);
157
+ const mysteryColumn = this.allColumns[index];
158
+ this.currentColumn = mysteryColumn;
159
+ mysteryColumn.adaptToSpeed(RainMan.settingsStore.currentSpeed);
160
+ frame.invokeMysteryFx(mysteryColumn.x, mysteryColumn.y);
159
161
  this.skipScatterDelay = configureSpinAction;
160
- await this.currentColumn.speedUpForMysterySpin(100, 1500);
162
+ await mysteryColumn.speedUpForMysterySpin(100, 1500);
161
163
  if (this.quickReelsStop || this.skipRemainingMysteryFxs) {
162
- await this.currentColumn.changeVelocity(Speed.STOP, 0, frame);
164
+ await mysteryColumn.changeVelocity(Speed.STOP, 0, frame);
163
165
  }
164
166
  else {
165
167
  if (!RainMan.settingsStore.isAutoplayEnabled ||
166
168
  (RainMan.settingsStore.isAutoplayEnabled && !this.quickReelsStop)) {
167
169
  this.scheduleMysteryDelay(configureSpinAction, RainMan.config.durationOfActions.scatterDelayerTime);
168
170
  }
169
- await this.currentColumn.changeVelocity(Speed.STOP, RainMan.config.durationOfActions.scatterSpinningTime, frame);
171
+ await mysteryColumn.changeVelocity(Speed.STOP, RainMan.config.durationOfActions.scatterSpinningTime, frame);
170
172
  }
171
173
  frame.destroyMysteryFx();
172
174
  }
@@ -431,8 +433,10 @@ export class AbstractColumnsContainer extends Container {
431
433
  */
432
434
  prepareConfiguringReelsEnd(finalSymbolReels) {
433
435
  return this.allColumns.map((column, index) => async () => {
436
+ this.currentColumn = column;
434
437
  column.configBlindSpin(finalSymbolReels[index]);
435
438
  await column.getTriggersPromise();
439
+ this.currentColumn = null;
436
440
  });
437
441
  }
438
442
  }
@@ -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
  /**
@@ -1340,6 +1357,8 @@ export class AbstractController {
1340
1357
  stopPlayingSymbolsStreak() {
1341
1358
  this.columnsContainer.stopPlayingSymbolsInColumns();
1342
1359
  this.frame.stopPlayingWinLineAnimations();
1360
+ this.frame.hideMysteryFx();
1361
+ this.frame.destroyMysteryFx();
1343
1362
  }
1344
1363
  /**
1345
1364
  * Function for stopping playing symbols transformation
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.31b",
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",