package com.cookbook.samples;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.maps.tiled.TiledMap;
import com.badlogic.gdx.maps.tiled.TmxMapLoader;
import com.badlogic.gdx.maps.tiled.renderers.OrthogonalTiledMapRenderer;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.Array;
public class AssetManagerSample extends GdxSample {
private static final String TAG = "AssetManagerSample";
SpriteBatch batch;
Texture background, logo;
TiledMap map;
float unitScale;
OrthogonalTiledMapRenderer renderer;
OrthographicCamera camera;
private Vector2 logoPos;
AssetManager manager;
@Override
public void create () {
batch = new SpriteBatch();
manager = new AssetManager();
// Load assets, it is being loaded a map because it is a good example for dependencies between
// assets, so don't focus on the map itself considering that it will be explained in later recipes
manager.setLoader(TiledMap.class, new TmxMapLoader(new InternalFileHandleResolver()));
manager.load("data/loading_screen/map.tmx", TiledMap.class);
unitScale = 1/16f;
manager.load("data/loading_screen/background.png", Texture.class);
manager.load("data/loading_screen/logo.png", Texture.class);
manager.finishLoading(); // Blocks until all resources are loaded into memory
Gdx.app.log(TAG, "Assets loaded");
// Get Assets
background = manager.get("data/loading_screen/background.png");
map = manager.get("data/loading_screen/map.tmx");
logo = manager.get("data/loading_screen/logo.png");
renderer = new OrthogonalTiledMapRenderer(map, unitScale);
camera = new OrthographicCamera();
camera.setToOrtho(false, 80, 45);
camera.update();
// Get logo position
logoPos = new Vector2();
// >> bitwise operator bill just divide by 2, the explicitly written times, in this case 1
logoPos.set((Gdx.graphics.getWidth()-logo.getWidth())>>1, Gdx.graphics.getHeight()>>1);
// Trace dependences
Gdx.app.log(TAG + ".Dependences:\n", manager.getDiagnostics());
}
@Override
public void dispose() {
manager.dispose();
renderer.dispose();
batch.dispose();
}
@Override
public void render () {
Gdx.gl.glClearColor(1, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
// Render background image
batch.begin();
batch.draw(background, 0, 0);
batch.end();
// Render map
renderer.setView(camera);
renderer.render();
// Render logo
batch.begin();
batch.draw(logo, logoPos.x, logoPos.y);
batch.end();
}
}