diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-04-28 13:42:04 -0400 |
---|---|---|
committer | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-04-28 13:42:04 -0400 |
commit | 115078d8ce5584fa1bae256d4a44696c6ac79b44 (patch) | |
tree | 848ab9ffd894e07e8118078bdfb60f7a2e097b27 /src/main/java/de/hysky/skyblocker/skyblock | |
parent | 6a332217ec114ca6b7d4a07732af822c85bcc4ee (diff) | |
download | Skyblocker-115078d8ce5584fa1bae256d4a44696c6ac79b44.tar.gz Skyblocker-115078d8ce5584fa1bae256d4a44696c6ac79b44.tar.bz2 Skyblocker-115078d8ce5584fa1bae256d4a44696c6ac79b44.zip |
Tic Tac Toe Rewrite/Refactor
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/skyblock/dungeon/puzzle/TicTacToe.java | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/puzzle/TicTacToe.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/puzzle/TicTacToe.java index e4c51e69..1683276e 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/puzzle/TicTacToe.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/puzzle/TicTacToe.java @@ -4,6 +4,7 @@ import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.skyblock.dungeon.secrets.DungeonManager; import de.hysky.skyblocker.utils.Utils; import de.hysky.skyblocker.utils.render.RenderHelper; +import de.hysky.skyblocker.utils.tictactoe.BoardIndex; import de.hysky.skyblocker.utils.tictactoe.TicTacToeUtils; import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext; import net.minecraft.client.MinecraftClient; @@ -49,7 +50,8 @@ public class TicTacToe extends DungeonPuzzle { try { //Only attempt to solve if the puzzle wasn't just completed and if its the player's turn - if (itemFramesThatHoldMaps.size() != 9 && itemFramesThatHoldMaps.size() % 2 == 1) { + //The low bit will always be set to 1 on odd numbers + if (itemFramesThatHoldMaps.size() != 9 && (itemFramesThatHoldMaps.size() & 1) == 1) { char[][] board = new char[3][3]; for (ItemFrameEntity itemFrame : itemFramesThatHoldMaps) { @@ -83,7 +85,7 @@ public class TicTacToe extends DungeonPuzzle { if (row == -1 || column == -1) continue; //Get the color of the middle pixel of the map which determines whether its X or O - int middleColor = mapState.colors[8256] & 255; + int middleColor = mapState.colors[8256] & 0xFF; if (middleColor == 114) { board[row][column] = 'X'; @@ -92,11 +94,11 @@ public class TicTacToe extends DungeonPuzzle { } } - int bestMove = TicTacToeUtils.getBestMove(board) - 1; + BoardIndex bestMove = TicTacToeUtils.getBestMove(board); double nextX = 8; - double nextY = 72 - (double) (bestMove / 3); - double nextZ = 17 - (bestMove % 3); + double nextY = 72 - bestMove.row(); + double nextZ = 17 - bestMove.column(); BlockPos nextPos = DungeonManager.getCurrentRoom().relativeToActual(BlockPos.ofFloored(nextX, nextY, nextZ)); nextBestMoveToMake = new Box(nextPos); |