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 | - | camera.zoom += (initialPointer1.dst(pointer1) + initialPointer2.dst(pointer2)) / 2 / 10; |
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 | return true; | |
58 | } | |
59 | })); | |
60 | ||
61 | } | |
62 | ||
63 | @Override | |
64 | public void hide() { | |
65 | dispose(); | |
66 | ||
67 | } | |
68 | ||
69 | @Override | |
70 | public void pause() { | |
71 | } | |
72 | ||
73 | @Override | |
74 | public void resume() { | |
75 | } | |
76 | ||
77 | @Override | |
78 | public void dispose() { | |
79 | gamemap.dispose(); | |
80 | maprenderer.dispose(); | |
81 | } | |
82 | ||
83 | } |