Skip to content

Commit 79b3b3d

Browse files
committed
Sort revealed value cells radially outwards (#52)
1 parent ac4c8f9 commit 79b3b3d

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

minesweeper-engine/src/main/java/com/jayasuryat/minesweeperengine/controller/impl/GameController.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,16 +77,18 @@ public class GameController(
7777
val gameEndRevealer = GameEndRevealer()
7878
val successEvaluator = GameSuccessEvaluator()
7979
val neighbourCalculator = ValueNeighbourCalculator()
80+
val radiallySorter = RadiallySorter()
8081
return GameController(
8182
cellReveler = CellRevealer(
8283
gameEndRevealer = gameEndRevealer,
83-
radiallySorter = RadiallySorter(),
84+
radiallySorter = radiallySorter,
8485
successEvaluator = successEvaluator,
8586
neighbourCalculator = neighbourCalculator,
8687
),
8788
cellFlagger = CellFlagger(),
8889
valueCellReveler = ValueCellRevealer(
8990
gameEndRevealer = gameEndRevealer,
91+
radiallySorter = radiallySorter,
9092
successEvaluator = successEvaluator,
9193
neighbourCalculator = neighbourCalculator,
9294
),

minesweeper-engine/src/main/java/com/jayasuryat/minesweeperengine/controller/impl/handler/ValueCellRevealer.kt

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package com.jayasuryat.minesweeperengine.controller.impl.handler
1818
import com.jayasuryat.minesweeperengine.controller.ActionHandler
1919
import com.jayasuryat.minesweeperengine.controller.impl.handler.helper.GameEndRevealer
2020
import com.jayasuryat.minesweeperengine.controller.impl.handler.helper.GameSuccessEvaluator
21+
import com.jayasuryat.minesweeperengine.controller.impl.handler.helper.RadiallySorter
2122
import com.jayasuryat.minesweeperengine.controller.impl.handler.helper.ValueNeighbourCalculator
2223
import com.jayasuryat.minesweeperengine.controller.model.MinefieldAction
2324
import com.jayasuryat.minesweeperengine.controller.model.MinefieldEvent
@@ -29,6 +30,7 @@ import com.jayasuryat.minesweeperengine.util.mutate
2930

3031
internal class ValueCellRevealer(
3132
private val gameEndRevealer: GameEndRevealer,
33+
private val radiallySorter: RadiallySorter,
3234
private val successEvaluator: GameSuccessEvaluator,
3335
private val neighbourCalculator: ValueNeighbourCalculator,
3436
) : ActionHandler<MinefieldAction.OnValueCellClicked> {
@@ -82,8 +84,19 @@ internal class ValueCellRevealer(
8284
updatedCells = updatedCells
8385
)
8486

85-
return if (isGameComplete) MinefieldEvent.OnGameComplete(updatedCells = updatedCells)
86-
else MinefieldEvent.OnCellsUpdated(updatedCells = updatedCells)
87+
val event = if (isGameComplete) {
88+
89+
MinefieldEvent.OnGameComplete(updatedCells = updatedCells)
90+
} else {
91+
92+
val sortedCells = radiallySorter.sortRadiallyOut(
93+
startingPosition = action.cell.position,
94+
cells = updatedCells,
95+
)
96+
MinefieldEvent.OnCellsUpdated(updatedCells = sortedCells)
97+
}
98+
99+
return event
87100
}
88101

89102
private fun MineCell.ValuedCell.Cell.getX3Neighbours(

0 commit comments

Comments
 (0)