View difference between Paste ID: T11PJqkM and d7yn1jAd
SHOW: | | - or go back to the newest paste.
1
package com.tiled.tiledexample.screens;
2
3
import com.badlogic.gdx.Gdx;
4
import com.badlogic.gdx.Screen;
5
import com.badlogic.gdx.graphics.GL20;
6
import com.badlogic.gdx.graphics.OrthographicCamera;
7
import com.badlogic.gdx.input.GestureDetector;
8
import com.badlogic.gdx.input.GestureDetector.GestureAdapter;
9
import com.badlogic.gdx.maps.tiled.TiledMap;
10
import com.badlogic.gdx.maps.tiled.TiledMapTileLayer;
11
import com.badlogic.gdx.maps.tiled.TmxMapLoader;
12
import com.badlogic.gdx.maps.tiled.renderers.IsometricTiledMapRenderer;
13
import com.badlogic.gdx.math.Vector2;
14
15
public class GameScreen implements Screen {
16
17
	private TiledMap gamemap;
18
	private OrthographicCamera camera;
19
	private IsometricTiledMapRenderer maprenderer;
20
21
	@Override
22
	public void render(float delta) {
23
		Gdx.gl.glClearColor(0, 0, 0, 13);
24
		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
25
26
		maprenderer.setView(camera);
27
		maprenderer.render();
28
	}
29
30
	@Override
31
	public void resize(int width, int height) {
32
		camera.viewportWidth = width;
33
		camera.viewportHeight = height;
34
35
		camera.position.x = ((TiledMapTileLayer) gamemap.getLayers().get(0)).getWidth() * ((TiledMapTileLayer) gamemap.getLayers().get(0)).getTileWidth() / 2;
36
		camera.update();
37
	}
38
39
	@Override
40
	public void show() {
41
		gamemap = new TmxMapLoader().load("maps/map2.tmx");
42
		maprenderer = new IsometricTiledMapRenderer(gamemap);
43
44
		camera = new OrthographicCamera();
45
46
		Gdx.input.setInputProcessor(new GestureDetector(new GestureAdapter() {
47
48
			@Override
49
			public boolean pinch(Vector2 initialPointer1, Vector2 initialPointer2, Vector2 pointer1, Vector2 pointer2) {
50
				// set camera.zoom here
51
				// something like this could work, but I didn't test it:
52
				float zoomFactor = (initialPointer1.dst(pointer1) + initialPointer2.dst(pointer2)) / 2 / 20;
53
				if(initialPointer1.dst(initialPointer2) > pointer1.dst(pointer2))
54
					camera.zoom += zoomFactor;
55
				else
56
					camera.zoom -= zoomFactor;
57
58
				if(camera.zoom > 40)
59
					camera.zoom = 40;
60
				else if(camera.zoom < 4)
61
					camera.zoom = 4;
62
				return true;
63
			}
64
65
			public boolean pan(final int x, final int y, final int deltaX, final int deltaY) {
66
				camera.position.x -= deltaX;
67
				camera.position.y += deltaY;
68
				camera.update();
69
				return true;
70
			}
71
			
72
		}));
73
74
	}
75
76
	@Override
77
	public void hide() {
78
		dispose();
79
80
	}
81
82
	@Override
83
	public void pause() {
84
	}
85
86
	@Override
87
	public void resume() {
88
	}
89
90
	@Override
91
	public void dispose() {
92
		gamemap.dispose();
93
		maprenderer.dispose();
94
	}
95
96
}