diff --git a/Examples/SwiftBreak/Package.swift b/Examples/SwiftBreak/Package.swift index 3f84e98..c5b9b7d 100644 --- a/Examples/SwiftBreak/Package.swift +++ b/Examples/SwiftBreak/Package.swift @@ -11,6 +11,7 @@ guard let home = Context.environment["HOME"] else { let swiftSettingsSimulator: [SwiftSetting] = [ .enableExperimentalFeature("Embedded"), .enableExperimentalFeature("NoncopyableGenerics"), + .enableExperimentalFeature("ValueGenerics"), .unsafeFlags([ "-Xfrontend", "-disable-objc-interop", "-Xfrontend", "-disable-stack-protector", diff --git a/Examples/SwiftBreak/Sources/Game.swift b/Examples/SwiftBreak/Sources/Game.swift index 9b936ba..945bd47 100644 --- a/Examples/SwiftBreak/Sources/Game.swift +++ b/Examples/SwiftBreak/Sources/Game.swift @@ -13,7 +13,7 @@ struct Sprites: ~Copyable { var ball: Sprite var paddle: Sprite var gameOver: Sprite - var bricks: FixedArray + var bricks: Slab<40, Sprite> } struct ActiveGame { @@ -46,7 +46,7 @@ struct Game: ~Copyable { ball: .ball(), paddle: .paddle(), gameOver: .gameOver(), - bricks: .init(count: 40, first: brick) { $0.copy() }) + bricks: .init(first: brick) { $0.copy() }) Sprite.drawSprites() self.state = .loading } @@ -125,13 +125,13 @@ extension Game { let brickWidth = 40 let brickHeight = 24 - sprites.bricks.enumerated { index, brick in + for index in sprites.bricks.indices { let x = (index % 10) let y = (index / 10) - brick.moveTo( + sprites.bricks[index].moveTo( x: Float(x * brickWidth + brickWidth / 2), y: Float(y * brickHeight + brickHeight / 2)) - brick.addSprite() + sprites.bricks[index].addSprite() } activeGame.bricksRemaining = sprites.bricks.count @@ -154,8 +154,8 @@ extension Game { mutating func gameOver() { self.sprites.ball.removeSprite() self.sprites.paddle.removeSprite() - self.sprites.bricks.forEach { brick in - brick.removeSprite() + for i in self.sprites.bricks.indices { + self.sprites.bricks[i].removeSprite() } self.sprites.gameOver.moveTo( x: Float(LCD_COLUMNS / 2), diff --git a/Examples/swift.mk b/Examples/swift.mk index 78ea4ec..769206f 100644 --- a/Examples/swift.mk +++ b/Examples/swift.mk @@ -41,6 +41,7 @@ SWIFT_FLAGS := \ $(addprefix -Xcc , $(C_FLAGS)) \ -O \ -wmo -enable-experimental-feature Embedded \ + -enable-experimental-feature ValueGenerics \ -Xfrontend -disable-stack-protector \ -Xfrontend -function-sections \ -swift-version 6 \