Remove Tetris references and rename to generic game pieces

This commit is contained in:
cmclark00 2025-04-01 05:18:47 -04:00
parent df9957580e
commit e26c6ebd8c
10 changed files with 358 additions and 336 deletions

View file

@ -17,18 +17,18 @@ class GameBoard(
// True = occupied, False = empty
private val grid = Array(height) { BooleanArray(width) { false } }
// Current active tetromino
private var currentPiece: Tetromino? = null
// Current active piece
private var currentPiece: GamePiece? = null
// Next tetromino to be played
private var nextPiece: Tetromino? = null
// Next piece to be played
private var nextPiece: GamePiece? = null
// Hold piece
private var holdPiece: Tetromino? = null
private var holdPiece: GamePiece? = null
private var canHold = true
// 7-bag randomizer
private val bag = mutableListOf<TetrominoType>()
private val bag = mutableListOf<GamePieceType>()
// Game state
var score = 0
@ -43,7 +43,7 @@ class GameBoard(
// Scoring state
private var combo = 0
private var lastClearWasTetris = false
private var lastClearWasQuad = false
private var lastClearWasPerfect = false
private var lastClearWasAllClear = false
private var lastPieceClearedLines = false // Track if the last piece placed cleared lines
@ -80,12 +80,12 @@ class GameBoard(
private fun spawnNextPiece() {
// If bag is empty, refill it with all piece types
if (bag.isEmpty()) {
bag.addAll(TetrominoType.entries.toTypedArray())
bag.addAll(GamePieceType.entries.toTypedArray())
bag.shuffle()
}
// Take the next piece from the bag
nextPiece = Tetromino(bag.removeAt(0))
nextPiece = GamePiece(bag.removeAt(0))
onNextPieceChanged?.invoke()
}
@ -122,12 +122,12 @@ class GameBoard(
/**
* Get the currently held piece
*/
fun getHoldPiece(): Tetromino? = holdPiece
fun getHoldPiece(): GamePiece? = holdPiece
/**
* Get the next piece that will be spawned
*/
fun getNextPiece(): Tetromino? = nextPiece
fun getNextPiece(): GamePiece? = nextPiece
/**
* Spawns the current tetromino at the top of the board
@ -541,8 +541,8 @@ class GameBoard(
}
} else 1.0
// Calculate back-to-back Tetris bonus
val backToBackMultiplier = if (clearedLines == 4 && lastClearWasTetris) 1.5 else 1.0
// Calculate back-to-back quad bonus
val backToBackMultiplier = if (clearedLines == 4 && lastClearWasQuad) 1.5 else 1.0
// Calculate perfect clear bonus
val perfectClearMultiplier = if (isPerfectClear) {
@ -579,7 +579,7 @@ class GameBoard(
}.start()
// Update line clear state
lastClearWasTetris = clearedLines == 4
lastClearWasQuad = clearedLines == 4
lastClearWasPerfect = isPerfectClear
lastClearWasAllClear = isAllClear
@ -597,7 +597,7 @@ class GameBoard(
*/
private fun isTSpin(): Boolean {
val piece = currentPiece ?: return false
if (piece.type != TetrominoType.T) return false
if (piece.type != GamePieceType.T) return false
// Count occupied corners around the T piece
var occupiedCorners = 0
@ -637,7 +637,7 @@ class GameBoard(
/**
* Get the current tetromino
*/
fun getCurrentPiece(): Tetromino? = currentPiece
fun getCurrentPiece(): GamePiece? = currentPiece
/**
* Check if a cell in the grid is occupied
@ -702,7 +702,7 @@ class GameBoard(
// Reset scoring state
combo = 0
lastClearWasTetris = false
lastClearWasQuad = false
lastClearWasPerfect = false
lastClearWasAllClear = false
lastPieceClearedLines = false