First screenshot of all pieces in play
Now that the physics body creation for the blocks is a solved problem, we can quickly implement all 7 types:
And when the MatchSliceController
needs to spawn one, we can just grab a random piece by putting all the initializers in an array:
class func random() -> BasePiece
{
let options: [(Int) -> BasePiece] = [
LPiece.init(gridSize:),
JPiece.init(gridSize:),
IPiece.init(gridSize:),
OPiece.init(gridSize:),
SPiece.init(gridSize:),
ZPiece.init(gridSize:),
TPiece.init(gridSize:),
]
guard let constructor = options.randomElement() else {
fatalError("No pieces available")
}
let gridSize = 30
return constructor(gridSize)
}