DEADSOFTWARE

Update version script
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / render / DropsRenderer.kt
1 package ru.deadsoftware.cavedroid.game.render
3 import com.badlogic.gdx.graphics.g2d.SpriteBatch
4 import com.badlogic.gdx.graphics.glutils.ShapeRenderer
5 import com.badlogic.gdx.math.Rectangle
6 import ru.deadsoftware.cavedroid.game.GameScope
7 import ru.deadsoftware.cavedroid.game.objects.drop.DropController
8 import ru.deadsoftware.cavedroid.game.world.GameWorld
9 import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindRenderer
10 import ru.deadsoftware.cavedroid.misc.utils.cycledInsideWorld
11 import ru.deadsoftware.cavedroid.misc.utils.drawSprite
12 import ru.deadsoftware.cavedroid.misc.utils.px
13 import javax.inject.Inject
15 @GameScope
16 @BindRenderer
17 class DropsRenderer @Inject constructor(
18 private val dropController: DropController,
19 private val gameWorld: GameWorld,
20 ) : IGameRenderer {
22 override val renderLayer = RENDER_LAYER
24 override fun draw(spriteBatch: SpriteBatch, shapeRenderer: ShapeRenderer, viewport: Rectangle, delta: Float) {
25 dropController.forEach { drop ->
26 drop.cycledInsideWorld(viewport, gameWorld.width.px)?.let { dropRect ->
27 spriteBatch.drawSprite(
28 sprite = drop.item.sprite,
29 x = dropRect.x - viewport.x,
30 y = dropRect.y - viewport.y,
31 width = dropRect.width,
32 height = dropRect.height,
33 )
34 }
35 }
36 }
38 companion object {
39 private const val RENDER_LAYER = 100200
40 }
42 }