Skip to content

Instantly share code, notes, and snippets.

@ProZhar
Created November 2, 2017 18:14
Show Gist options
  • Select an option

  • Save ProZhar/e88b2c97ae6d2c47993ee3d9ede4764c to your computer and use it in GitHub Desktop.

Select an option

Save ProZhar/e88b2c97ae6d2c47993ee3d9ede4764c to your computer and use it in GitHub Desktop.
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.assets.AssetDescriptor;
import com.badlogic.gdx.assets.AssetErrorListener;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.assets.loaders.I18NBundleLoader.I18NBundleParameter;
import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.utils.Array;
import com.badlogic.gdx.utils.Disposable;
import com.badlogic.gdx.utils.GdxRuntimeException;
import com.badlogic.gdx.utils.I18NBundle;
import com.prozhar.quest.agent.assets.skin2.Skin2;
import com.prozhar.quest.agent.assets.skin2.Skin2Loader;
import java.util.Locale;
public class Assets implements Disposable, AssetErrorListener {
private static final String TAG = "Assets";
private AssetManager manager; // Don't make this static!!!
//Skin
public static final AssetDescriptor<Skin2> SKIN = new AssetDescriptor<>("skin.json", Skin2.class, null);
//I18n
// private static final I18NBundleParameter i18nParam = new I18NBundleParameter(new Locale("uk"));
// public static final AssetDescriptor<I18NBundle> CHAT_0 = new AssetDescriptor<>("i18n/Chat-0", I18NBundle.class, i18nParam);
public static final AssetDescriptor<I18NBundle> CHAT_0 = new AssetDescriptor<>("i18n/Chat-0", I18NBundle.class);
//Sounds
public Assets(int logLevel) {
manager = new AssetManager();
manager.setErrorListener(this);
manager.getLogger().setLevel(logLevel);
Texture.setAssetManager(manager);
setLoaders();
init();
}
private void setLoaders() {
manager.setLoader(Skin2.class, new Skin2Loader(new InternalFileHandleResolver()));
}
private void init() {
manager.load(SKIN);
manager.load(CHAT_0);
manager.finishLoading();
}
private synchronized void loadSync(AssetDescriptor descriptor) {
manager.load(descriptor);
manager.finishLoading();
}
public synchronized void unload(AssetDescriptor descriptor) {
manager.unload(descriptor.fileName);
}
public synchronized <T> T get (AssetDescriptor<T> descriptor) {
return manager.get(descriptor);
}
@Override
public void dispose() {
Array<String> loaded = manager.getAssetNames();
Gdx.app.debug(TAG, "Disposing assets......");
Gdx.app.error(TAG, "NOT DISPOSED before dispose() " + loaded.toString());
manager.dispose();
// проверяет есть ли ассеты в памяти
for (int i = 0; i < loaded.size; ++i) {
String asset = loaded.get(i);
if (manager.isLoaded(asset)) {
Gdx.app.error(TAG, asset + " not properly disposed of!");
} else {
Gdx.app.log(TAG, asset + " disposed of OK");
}
}
}
@Override
public void error(AssetDescriptor asset, Throwable throwable) {
throw new GdxRuntimeException("---ОШИБКА ЗАГРУЗКИ--- asset " + asset + ". " +throwable.getMessage());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment