Through stage 5
This commit is contained in:
parent
37691d64ba
commit
ec58d8638e
@ -9,6 +9,8 @@ import com.badlogic.gdx.math.Vector3
|
||||
import com.badlogic.gdx.utils.Array
|
||||
import com.badlogic.gdx.utils.TimeUtils
|
||||
import ktx.app.KtxScreen
|
||||
import ktx.assets.pool
|
||||
import ktx.assets.invoke
|
||||
import ktx.collections.iterate
|
||||
import ktx.graphics.use
|
||||
import ktx.log.logger
|
||||
@ -28,12 +30,13 @@ class GameScreen(val game: PTures) : KtxScreen {
|
||||
private val camera = OrthographicCamera().apply { setToOrtho(false, 800f, 480f) }
|
||||
private val bucket = Rectangle(800f / 2f - 64f / 2f, 20f, 64f, 64f)
|
||||
private val touchPos = Vector3()
|
||||
private val raindrops = Array<Rectangle>() // gdx, not Kotlin Array
|
||||
private val raindropsPool = pool { Rectangle() }
|
||||
private val activeRaindrops = Array<Rectangle>() // gdx, not Kotlin Array
|
||||
private var lastDropTime = 0L
|
||||
private var dropsGathered = 0
|
||||
|
||||
private fun spawnRaindrop() {
|
||||
raindrops.add(Rectangle(MathUtils.random(0f, 800f - 64f), 480f, 64f, 64f))
|
||||
activeRaindrops.add(raindropsPool().set(MathUtils.random(0f, 800f - 64f), 480f, 64f, 64f))
|
||||
lastDropTime = TimeUtils.nanoTime()
|
||||
}
|
||||
|
||||
@ -48,7 +51,7 @@ class GameScreen(val game: PTures) : KtxScreen {
|
||||
game.batch.use { batch ->
|
||||
game.font.draw(batch, "Drops Collected: " + dropsGathered, 0f, 480f)
|
||||
batch.draw(bucketImage, bucket.x, bucket.y, bucket.width, bucket.height)
|
||||
raindrops.forEach { r -> batch.draw(dropImage, r.x, r.y) }
|
||||
activeRaindrops.forEach { r -> batch.draw(dropImage, r.x, r.y) }
|
||||
}
|
||||
|
||||
// process user input
|
||||
@ -76,17 +79,20 @@ class GameScreen(val game: PTures) : KtxScreen {
|
||||
// move the raindrops, remove any that are beneath the bottom edge of the
|
||||
// screen or that hit the bucket. In the latter case, play back a sound
|
||||
// effect also
|
||||
raindrops.iterate { raindrop, iterator ->
|
||||
activeRaindrops.iterate { raindrop, iterator ->
|
||||
raindrop.y -= 200 * delta
|
||||
if (raindrop.y + 64 < 0) {
|
||||
iterator.remove()
|
||||
log.debug { "Missed a raindrop!" }
|
||||
raindropsPool(raindrop)
|
||||
log.debug { "Missed a raindrop! Pool free objects: ${raindropsPool.free}" }
|
||||
}
|
||||
|
||||
if (raindrop.overlaps(bucket)) {
|
||||
dropsGathered++
|
||||
dropSound.play()
|
||||
iterator.remove()
|
||||
raindropsPool(raindrop)
|
||||
log.debug { "Pool free objects: ${raindropsPool.free}" }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user