UNPKG

pokie

Version:

A server-side video slot game logic framework for JavaScript and TypeScript.

91 lines 3.75 kB
import { WinningLinesAnalyzer } from "pokie"; export class PlayUntilSymbolWinStrategy { constructor(symbolId) { this.minLinesNumber = 1; this.onlySameSymbolId = false; this.allowWilds = true; this.symbolId = symbolId; } canPlayNextSimulationRound(session) { const rgSession = session; const symbolsCombination = rgSession.getSymbolsCombination(); const winningLines = rgSession.getWinningLines(); const winningLinesArray = Object.values(winningLines); const winningScatters = rgSession.getWinningScatters(); let r; if (!session.isSymbolScatter(this.getSymbolId())) { r = Object.keys(winningLines).length < this.getMinLinesNumber() || Object.keys(winningScatters).length > 0 || WinningLinesAnalyzer.getLinesWithWinningSymbol(winningLinesArray, this.getSymbolId()).length === 0 || (this.isOnlySameSymbolId() && !WinningLinesAnalyzer.allLinesHaveSameSymbolId(winningLinesArray)) || (!this.isAllowWilds() && WinningLinesAnalyzer.getLinesWithSymbol(winningLinesArray, symbolsCombination.toMatrix(), this.getWildSymbolId()).length > 0); if (this.getMinNumberOfWinningSymbols() !== undefined && !Object.values(winningLines).some((line) => line.getSymbolsPositions().length >= this.getMinNumberOfWinningSymbols())) { r = true; } if (this.getExactNumberOfWinningSymbols() !== undefined && !Object.values(winningLines).some((line) => line.getSymbolsPositions().length === this.getExactNumberOfWinningSymbols())) { r = true; } } else { r = Object.keys(winningScatters).length === 0 || Object.keys(winningLines).length > 0 || !Object.keys(winningScatters).includes(this.getSymbolId()); if (Object.keys(winningScatters).includes(this.getSymbolId())) { if (this.getMinNumberOfWinningSymbols() !== undefined && winningScatters[this.getSymbolId()].getSymbolsPositions().length < this.getMinNumberOfWinningSymbols()) { r = true; } if (this.getExactNumberOfWinningSymbols() !== undefined && winningScatters[this.getSymbolId()].getSymbolsPositions().length !== this.getExactNumberOfWinningSymbols()) { r = true; } } } return r; } getSymbolId() { return this.symbolId; } getMinLinesNumber() { return this.minLinesNumber; } setMinLinesNumber(minLinesNumber) { this.minLinesNumber = minLinesNumber; } isOnlySameSymbolId() { return this.onlySameSymbolId; } setOnlySameSymbolId(onlySameSymbolId) { this.onlySameSymbolId = onlySameSymbolId; } isAllowWilds() { return this.allowWilds; } setAllowWilds(allowWilds, wildSymbolId) { this.allowWilds = allowWilds; this.wildSymbolId = wildSymbolId; } getWildSymbolId() { return this.wildSymbolId; } setMinNumberOfWinningSymbols(value) { this.minNumberOfWinningSymbols = value; } getMinNumberOfWinningSymbols() { return this.minNumberOfWinningSymbols; } setExactNumberOfWinningSymbols(value) { this.exactNumberOfWinningSymbols = value; } getExactNumberOfWinningSymbols() { return this.exactNumberOfWinningSymbols; } } //# sourceMappingURL=PlayUntilSymbolWinStrategy.js.map