DEADSOFTWARE

Update version script
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / render / MobsRenderer.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.mobs.Mob
8 import ru.deadsoftware.cavedroid.game.mobs.MobsController
9 import ru.deadsoftware.cavedroid.game.world.GameWorld
10 import ru.deadsoftware.cavedroid.misc.annotations.multibinding.BindRenderer
11 import ru.deadsoftware.cavedroid.misc.utils.cycledInsideWorld
12 import ru.deadsoftware.cavedroid.misc.utils.px
13 import javax.inject.Inject
15 @GameScope
16 @BindRenderer
17 class MobsRenderer @Inject constructor(
18 private val mobsController: MobsController,
19 private val gameWorld: GameWorld,
20 ) : IGameRenderer {
22 override val renderLayer get() = RENDER_LAYER
24 private fun drawMob(spriteBatch: SpriteBatch, viewport: Rectangle, mob: Mob, delta: Float) {
25 mob.cycledInsideWorld(viewport, gameWorld.width.px)?.let { mobRect ->
26 mob.draw(spriteBatch, mobRect.x - viewport.x, mobRect.y - viewport.y, delta)
27 }
28 }
30 override fun draw(spriteBatch: SpriteBatch, shapeRenderer: ShapeRenderer, viewport: Rectangle, delta: Float) {
31 val player = mobsController.player
32 player.draw(
33 /* spriteBatch = */ spriteBatch,
34 /* x = */ player.x - viewport.x - player.width / 2,
35 /* y = */ player.y - viewport.y,
36 /* delta = */ delta
37 )
39 mobsController.mobs.forEach { mob ->
40 drawMob(spriteBatch, viewport, mob, delta)
41 }
42 }
44 companion object {
45 private const val RENDER_LAYER = 100100
46 }
47 }