package com.overlap2d.plugins.tiled.manager;
import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.graphics.g2d.NinePatch;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.google.common.io.ByteStreams;
import com.overlap2d.plugins.tiled.TiledPlugin;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* Created by mariam on 4/21/16.
*/
public class ResourcesManager {
private final String RESOURCES_FILE_NAME = "tiled";
private TiledPlugin tiledPlugin;
private TextureAtlas textureAtlas;
public ResourcesManager(TiledPlugin tiledPlugin) {
this.tiledPlugin = tiledPlugin;
init();
}
private void init() {
File atlasTempFile = getResourceFileFromJar(".atlas");
File pngTempFile = getResourceFileFromJar(".png");
textureAtlas = new TextureAtlas(new FileHandle(atlasTempFile));
atlasTempFile.deleteOnExit();
pngTempFile.deleteOnExit();
}
private File getResourceFileFromJar(String extension) {
String fileName = "/"+RESOURCES_FILE_NAME+extension;
File tempFile = new File (System.getProperty("user.dir")+fileName);
try {
InputStream in = getClass().getResourceAsStream(fileName);
FileOutputStream out = new FileOutputStream(tempFile);
ByteStreams.copy(in, out);
in.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
return tempFile;
}
public TextureRegion getTextureRegion(String name) {
TextureRegion region = textureAtlas.findRegion(name); // try to get region from plugin assets
if (region != null) {
// System.out.println("region: "+name+", "+region.getRegionWidth()+" "+region.getRegionHeight());
}
if (region == null) { // take the region from overlap assets
region = tiledPlugin.getAPI().getSceneLoader().getRm().getTextureRegion(name);
}
return region;
}
public NinePatch getPluginNinePatch(String name) {
TextureAtlas.AtlasRegion region = textureAtlas.findRegion(name);
if(region == null) return null;
return new NinePatch(region, region.splits[0], region.splits[1], region.splits[2], region.splits[3]);
}
}