DEADSOFTWARE

c0af140bbf3b64dfc7bcc1bddd906087dce92e1c
[cavedroid.git] / core / src / ru / deadsoftware / cavedroid / game / GameRenderer.java
1 package ru.deadsoftware.cavedroid.game;
3 import com.badlogic.gdx.Gdx;
4 import com.badlogic.gdx.graphics.GL20;
5 import ru.deadsoftware.cavedroid.MainConfig;
6 import ru.deadsoftware.cavedroid.game.mobs.MobsController;
7 import ru.deadsoftware.cavedroid.game.mobs.Player;
8 import ru.deadsoftware.cavedroid.game.render.IGameRenderer;
9 import ru.deadsoftware.cavedroid.misc.Renderer;
11 import javax.inject.Inject;
12 import java.util.ArrayList;
13 import java.util.Comparator;
14 import java.util.List;
15 import java.util.Set;
17 @GameScope
18 public class GameRenderer extends Renderer {
20 private final GameInput mGameInput;
21 private final MobsController mMobsController;
22 private final List<IGameRenderer> mRenderers;
24 @Inject
25 GameRenderer(MainConfig mainConfig,
26 GameInput gameInput,
27 MobsController mobsController,
28 Set<IGameRenderer> renderers) {
29 super(mainConfig.getWidth(), mainConfig.getHeight());
31 mGameInput = gameInput;
32 mMobsController = mobsController;
33 mRenderers = new ArrayList<>(renderers);
34 mRenderers.sort(Comparator.comparingInt(IGameRenderer::getRenderLayer));
36 Gdx.gl.glClearColor(0f, .6f, .6f, 1f);
37 }
39 private void updateCameraPosition() {
40 Player player = mMobsController.getPlayer();
41 setCamPos(player.getX() + player.getWidth() / 2 - getWidth() / 2,
42 player.getY() + player.getHeight() / 2 - getHeight() / 2);
43 }
46 @Override
47 public void render(float delta) {
48 updateCameraPosition();
49 mGameInput.moveCursor(this);
51 Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
53 spriter.begin();
54 mRenderers.forEach(iGameRenderer -> iGameRenderer.draw(spriter, shaper, getCameraViewport(), delta));
55 spriter.end();
56 }
58 }