package speiger.src.coreengine.assets.impl; import java.io.File; import java.io.IOException; import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.coreengine.assets.AssetLocation; import speiger.src.coreengine.assets.IAsset; import speiger.src.coreengine.assets.IAssetPackage; import speiger.src.coreengine.assets.impl.FolderAsset; public class FolderAssetPackage implements IAssetPackage { Path baseFolder; public FolderAssetPackage(File baseFolder) { this(baseFolder.toPath()); } public FolderAssetPackage(Path baseFolder) { this.baseFolder = baseFolder; } @Override public List getDomains() { List domains = new ObjectArrayList<>(); try(DirectoryStream dirs = Files.newDirectoryStream(baseFolder.resolve("assets"))) { for(Path path : dirs) { domains.add(path.getFileName().toString()); } } catch(IOException e) { e.printStackTrace(); } return domains; } @Override public IAsset getAsset(AssetLocation location) { Path path = baseFolder.resolve(location.getActualLocation()); return Files.exists(path) ? new FolderAsset(location, path) : null; } }