package com.github.czyzby.lml.uedi.assets;
import java.lang.reflect.Member;
import com.badlogic.gdx.assets.AssetManager;
import com.github.czyzby.kiwi.util.gdx.asset.Disposables;
import com.github.czyzby.lml.uedi.assets.impl.InjectingAssetManager;
import com.github.czyzby.uedi.stereotype.Destructible;
import com.github.czyzby.uedi.stereotype.Provider;
/** Holds a unique instance of {@link AssetManager} that will be used to load all automatically injected assets. Handles
* assets disposing.
*
* @author MJ */
public class AssetManagerProvider implements Destructible, Provider<AssetManager> {
public static final int ASSET_DISPOSING_PRIORITY = 10;
private final InjectingAssetManager assetManager = new InjectingAssetManager();
@Override
public Class<? extends AssetManager> getType() {
return AssetManager.class;
}
@Override
public AssetManager provide(final Object target, final Member member) {
return assetManager;
}
/** @return the only instance of the {@link AssetManager}. */
public InjectingAssetManager getAssetManager() {
return assetManager;
}
@Override
public int getDestructionOrder() {
return ASSET_DISPOSING_PRIORITY;
}
@Override
public void destroy() {
Disposables.gracefullyDisposeOf(assetManager);
}
}