Koodiosa¶
Esialgu loome uue klassi TiledMapLoader.
Teeme seda selleks, et meie projektis oleks struktuur ja kui on soov seda
taaskasutada, oleks seda teha lihtsam.
TiledMapLoader.java
public class TiledMapLoader {
private TiledMap map;
/**
* @param path path to the map, starting from /assets folder
*/
public TiledMapLoader(String path) {
this.map = new TmxMapLoader().load(path);
}
/**
* @return OrthogonalTiledMapRenderer of the TiledMap
*/
public OrthogonalTiledMapRenderer setupMap() {
return new OrthogonalTiledMapRenderer(map);
}
}
Kutsume enda kaardiklassi välja endale sobivas Screen liidest
implementivas klassis.
GameScreen.java
private OrthogonalTiledMapRenderer mapRenderer;
@Override
public void show() {
mapRenderer = new TiledMapLoader("tiled/map.tmx").setupMap();
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1f, 1f, 1f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
mapRenderer.render();
}
See töötab praegu, aga näeb halb välja.
Kaart on kusagil vasakul ja seda on näha ainult osaliselt.
Selleks loome kaamera ja lingime selle mapRenderer'iga.
Mainiks ka seda, et kasutan näites OrthographicCamera, sest meil on 2D mäng
ja kasutades seda tüüpi kaamerat me saame näha meie maailma ilma perspektiivita.
GameScreen.java
private OrthographicCamera camera;
private float worldWidth;
private float worldHeight;
@Override
public void show() {
camera = new OrthographicCamera();
mapRenderer = new TiledMapLoader("tiled/map.tmx").setupMap();
worldWidth = (int) mapRenderer.getMap().getProperties().get("width") * Constants.PPM;
worldHeight = (int) mapRenderer.getMap().getProperties().get("height") * Constants.PPM;
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1f, 1f, 1f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
camera.update();
mapRenderer.setView(camera);
mapRenderer.render();
}
@Override
public void resize(int width, int height) {
camera.setToOrtho(false, worldWidth, worldHeight); // Set camera to an orthographic projection and set viewport
}
Loome uue klassi Constants ja lisame PPM.
Constants.java
public class Constants {
public static final float PPM = 32.0f;
}
PPM (pixels per meter) defineerib mängumaailma meetrite ja ekraanipikslite
omavaheline seos (1 meeter mängumaailmas on võrdne 32 piksliga).