package com.github.czyzby.autumn.mvc.component.asset.dto.provider; import com.badlogic.gdx.utils.ObjectSet; import com.github.czyzby.autumn.mvc.component.asset.AssetService; import com.github.czyzby.kiwi.util.gdx.asset.lazy.provider.ObjectProvider; import com.github.czyzby.kiwi.util.gdx.collection.GdxSets; /** Asset provider for set injections. * * @author MJ */ public class ObjectSetAssetProvider implements ObjectProvider<ObjectSet<Object>> { private final AssetService assetService; private final String[] assetPaths; private final Class<?> assetClass; private final boolean loadOnDemand; public ObjectSetAssetProvider(final AssetService assetService, final String assetPaths[], final Class<?> assetClass, final boolean loadOnDemand) { this.assetService = assetService; this.assetPaths = assetPaths; this.assetClass = assetClass; this.loadOnDemand = loadOnDemand; } @Override public ObjectSet<Object> provide() { final ObjectSet<Object> assets = GdxSets.newSet(); for (final String assetPath : assetPaths) { if (loadOnDemand) { assets.add(assetService.finishLoading(assetPath, assetClass)); continue; } if (!assetService.isLoaded(assetPath)) { // LibGDX method that should load a specific asset immediately does pretty much the same. assetService.finishLoading(); } assets.add(assetService.get(assetPath, assetClass)); } return assets; } }