summaryrefslogtreecommitdiff
path: root/core/src/org/snoopdesigns/endless/EndlessGame.java
blob: fc72c66a3bcadf5da6f742652f428bdfa40a3557 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package org.snoopdesigns.endless;

import java.util.List;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.InputMultiplexer;
import com.badlogic.gdx.utils.ScreenUtils;
import org.snoopdesigns.endless.context.Context;
import org.snoopdesigns.endless.context.OnInit;
import org.snoopdesigns.endless.physics.Box2DDebugRenderer;
import org.snoopdesigns.endless.physics.Box2DRenderer;
import org.snoopdesigns.endless.physics.camera.CameraRenderer;
import org.snoopdesigns.endless.renderer.CursorRenderer;
import org.snoopdesigns.endless.renderer.DebugRenderer;
import org.snoopdesigns.endless.renderer.Renderer;
import org.snoopdesigns.endless.utils.ExitControllable;
import org.snoopdesigns.endless.world.ObjectsRenderer;
import org.snoopdesigns.endless.world.bg.BackgroundRenderer;

public class EndlessGame extends ApplicationAdapter {

	private final List<Renderer> renderers = List.of(
			new BackgroundRenderer(),
			new Box2DRenderer(),
			new CameraRenderer(),
			new Box2DDebugRenderer(),
			new ObjectsRenderer(),
			new CursorRenderer(),
			new DebugRenderer()
	);

	private final List<OnInit> intializers = List.of(
			new Context()
	);
	
	@Override
	public void create () {
		intializers.forEach(OnInit::create);

		final InputMultiplexer inputMultiplexer = new InputMultiplexer();
		renderers.forEach(inputMultiplexer::addProcessor);
		inputMultiplexer.addProcessor(Context.getInstance().getPlayerShip());
		inputMultiplexer.addProcessor(new ExitControllable());
		Gdx.input.setInputProcessor(inputMultiplexer);

		renderers.forEach(Renderer::create);
	}

	@Override
	public void render () {
		ScreenUtils.clear(0, 0, 0, 1);
		renderers.forEach(Renderer::render);
	}

	@Override
	public void resize(int width, int height) {
		renderers.forEach(renderer ->
				renderer.resize(width, height));
	}
	
	@Override
	public void dispose() {
		renderers.forEach(Renderer::dispose);
	}
}