From cf79298b04e04793f89971a8ea9e8184980a20fc Mon Sep 17 00:00:00 2001 From: Phan Huy Tran Date: Wed, 7 May 2025 14:17:41 +0200 Subject: [PATCH 1/2] feat: add blank status --- .../de/szut/casino/slots/SlotService.java | 56 +++++++++++++------ .../java/de/szut/casino/slots/Status.java | 7 +++ 2 files changed, 45 insertions(+), 18 deletions(-) create mode 100644 backend/src/main/java/de/szut/casino/slots/Status.java diff --git a/backend/src/main/java/de/szut/casino/slots/SlotService.java b/backend/src/main/java/de/szut/casino/slots/SlotService.java index 8557480..43f2e52 100644 --- a/backend/src/main/java/de/szut/casino/slots/SlotService.java +++ b/backend/src/main/java/de/szut/casino/slots/SlotService.java @@ -33,6 +33,7 @@ public class SlotService { this.thirdReel = shuffleReel(reelStrip); } + public SpinResult spin(BigDecimal betAmount, UserEntity user) { int index1 = this.random.nextInt(REEL_LENGTH); int index2 = this.random.nextInt(REEL_LENGTH); @@ -42,31 +43,36 @@ public class SlotService { Symbol symbol2 = getSymbolAt(this.secondReel, index2); Symbol symbol3 = getSymbolAt(this.thirdReel, index3); - boolean isWin = symbol1.equals(symbol2) && symbol1.equals(symbol3); + Status status = determineStatus(symbol1, symbol2, symbol3); - SpinResult spinResult = processResult(betAmount, user, isWin, symbol1); + SpinResult spinResult = processResult(betAmount, user, status, symbol1); buildResultMatrix(spinResult, index1, index2, index3); return spinResult; } - private SpinResult processResult(BigDecimal betAmount, UserEntity user, boolean isWin, Symbol winSymbol) { - BigDecimal resultAmount; - String status; - - if (isWin) { - resultAmount = betAmount.multiply(winSymbol.getPayoutMultiplier()); - status = "win"; - this.balanceService.addFunds(user, resultAmount); - } else { - resultAmount = betAmount; - status = "lose"; - this.balanceService.subtractFunds(user, betAmount); - } - + private SpinResult processResult(BigDecimal betAmount, UserEntity user, Status status, Symbol winSymbol) { SpinResult spinResult = new SpinResult(); - spinResult.setStatus(status); - spinResult.setAmount(resultAmount); + + switch (status) { + case WIN: + BigDecimal winAmount = betAmount.multiply(winSymbol.getPayoutMultiplier()); + this.balanceService.addFunds(user, winAmount); + spinResult.setAmount(winAmount); + spinResult.setStatus(Status.WIN.name().toLowerCase()); + break; + + case BLANK: + spinResult.setAmount(BigDecimal.ZERO); + spinResult.setStatus(Status.BLANK.name().toLowerCase()); + break; + + case LOSE: + this.balanceService.subtractFunds(user, betAmount); + spinResult.setAmount(betAmount); + spinResult.setStatus(Status.LOSE.name().toLowerCase()); + break; + } return spinResult; } @@ -124,4 +130,18 @@ public class SlotService { return reel.get(effectiveIndex); } + + private Status determineStatus(Symbol symbol1, Symbol symbol2, Symbol symbol3) { + boolean allSymbolsMatch = symbol1.equals(symbol2) && symbol1.equals(symbol3); + + if (allSymbolsMatch) { + if (symbol1 == Symbol.BLANK) { + return Status.BLANK; + } else { + return Status.WIN; + } + } + + return Status.LOSE; + } } diff --git a/backend/src/main/java/de/szut/casino/slots/Status.java b/backend/src/main/java/de/szut/casino/slots/Status.java new file mode 100644 index 0000000..c53611f --- /dev/null +++ b/backend/src/main/java/de/szut/casino/slots/Status.java @@ -0,0 +1,7 @@ +package de.szut.casino.slots; + +public enum Status { + WIN, + LOSE, + BLANK +} From f81351243629f2ffb6f75a0087d1056c298a82a1 Mon Sep 17 00:00:00 2001 From: Phan Huy Tran Date: Wed, 7 May 2025 14:17:57 +0200 Subject: [PATCH 2/2] feat: add blank status --- backend/src/main/java/de/szut/casino/slots/SlotService.java | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/src/main/java/de/szut/casino/slots/SlotService.java b/backend/src/main/java/de/szut/casino/slots/SlotService.java index 43f2e52..c327742 100644 --- a/backend/src/main/java/de/szut/casino/slots/SlotService.java +++ b/backend/src/main/java/de/szut/casino/slots/SlotService.java @@ -33,7 +33,6 @@ public class SlotService { this.thirdReel = shuffleReel(reelStrip); } - public SpinResult spin(BigDecimal betAmount, UserEntity user) { int index1 = this.random.nextInt(REEL_LENGTH); int index2 = this.random.nextInt(REEL_LENGTH);