package com.github.czyzby.lml.uedi.ui.impl; import com.badlogic.gdx.assets.AssetDescriptor; import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.assets.loaders.FileHandleResolver; import com.badlogic.gdx.assets.loaders.SkinLoader; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.scenes.scene2d.ui.Skin; import com.badlogic.gdx.utils.Array; /** Allows to pass an eagerly constructed {@link Skin} instance to an asset manager. * * @author MJ */ public class EagerSkinLoader extends SkinLoader { /** @param resolver will be used to resolve skin files. */ public EagerSkinLoader(final FileHandleResolver resolver) { super(resolver); } @Override @SuppressWarnings("rawtypes") // Raw types due to ugly API. public Array<AssetDescriptor> getDependencies(final String fileName, final FileHandle file, final SkinParameter parameter) { if (parameter instanceof EagerSkinParameter && ((EagerSkinParameter) parameter).skin != null) { return null; } return super.getDependencies(fileName, file, parameter); } @Override public Skin loadSync(final AssetManager manager, final String fileName, final FileHandle file, final SkinParameter parameter) { if (parameter instanceof EagerSkinParameter) { final Skin skin = ((EagerSkinParameter) parameter).skin; if (skin != null) { return skin; } } return super.loadSync(manager, fileName, file, parameter); } /** Allows to pass eagerly loaded skin into the asset manager. * * @author MJ */ public static class EagerSkinParameter extends SkinLoader.SkinParameter { private final Skin skin; /** @param skin was eagerly loaded, but should still be managed by an asset manager. */ public EagerSkinParameter(final Skin skin) { this.skin = skin; } } }