diff --git a/.settings/org.eclipse.buildship.core.prefs b/.settings/org.eclipse.buildship.core.prefs index 76702c8..8171053 100644 --- a/.settings/org.eclipse.buildship.core.prefs +++ b/.settings/org.eclipse.buildship.core.prefs @@ -5,7 +5,7 @@ connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER) connection.project.dir= eclipse.preferences.version=1 gradle.user.home= -java.home=C\:/Program Files/Java/jdk25 +java.home=C\:/Program Files/Eclipse Adoptium/jdk25 jvm.arguments= offline.mode=false override.workspace.settings=true diff --git a/src/assets/java/speiger/src/coreengine/assets/api/IAssetPackage.java b/src/assets/java/speiger/src/coreengine/assets/api/IAssetPackage.java index 42834e5..07355fd 100644 --- a/src/assets/java/speiger/src/coreengine/assets/api/IAssetPackage.java +++ b/src/assets/java/speiger/src/coreengine/assets/api/IAssetPackage.java @@ -1,5 +1,18 @@ package speiger.src.coreengine.assets.api; -public interface IAssetPackage { +import java.io.IOException; +import java.nio.file.WatchService; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.BiConsumer; +import speiger.src.coreengine.assets.AssetLocation; + +public interface IAssetPackage extends AutoCloseable { + void watchService(WatchService listener) throws IOException; + List domains(); + Map fileHashes(); + Optional get(AssetLocation location); + void getAll(AssetLocation folder, BiConsumer assets); } diff --git a/src/assets/java/speiger/src/coreengine/assets/api/IAssetProvider.java b/src/assets/java/speiger/src/coreengine/assets/api/IAssetProvider.java index cf0b41e..ba1e5d6 100644 --- a/src/assets/java/speiger/src/coreengine/assets/api/IAssetProvider.java +++ b/src/assets/java/speiger/src/coreengine/assets/api/IAssetProvider.java @@ -1,6 +1,16 @@ package speiger.src.coreengine.assets.api; +import java.util.Map; +import java.util.function.Predicate; + public interface IAssetProvider { - public IAsset get(ID id); - public String hash(ID id); + IAsset get(ID id); + MultiAsset getAll(ID id); + String hash(ID id); + Map list(String folder, Predicate filter); + Map listAll(String folder, Predicate filter); + + public interface IReloadableAssetProvider extends IAssetProvider, AutoCloseable { + void addReloadListener(Runnable run); + } } diff --git a/src/assets/java/speiger/src/coreengine/assets/impl/FolderAssetPackage.java b/src/assets/java/speiger/src/coreengine/assets/impl/FolderAssetPackage.java new file mode 100644 index 0000000..fad585b --- /dev/null +++ b/src/assets/java/speiger/src/coreengine/assets/impl/FolderAssetPackage.java @@ -0,0 +1,64 @@ +package speiger.src.coreengine.assets.impl; + +import java.io.IOException; +import java.nio.file.DirectoryStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.WatchService; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.function.BiConsumer; + +import speiger.src.collections.objects.lists.ObjectArrayList; +import speiger.src.collections.objects.utils.ObjectLists; +import speiger.src.coreengine.assets.AssetLocation; +import speiger.src.coreengine.assets.api.IAsset; +import speiger.src.coreengine.assets.api.IAssetPackage; +import speiger.src.coreengine.assets.api.ID; + +public class FolderAssetPackage implements IAssetPackage { + Path basePath; + ID id; + + public FolderAssetPackage(Path basePath) { + this.basePath = basePath; + } + + @Override + public void watchService(WatchService listener) throws IOException { + } + + @Override + public void close() throws Exception {} + + @Override + public List domains() { + try(DirectoryStream dirs = Files.newDirectoryStream(basePath.resolve("assets"))) { + List domains = new ObjectArrayList<>(); + dirs.forEach(T -> domains.add(T.getFileName().toString())); + return domains; + } + catch(Exception e) { + e.printStackTrace(); + return ObjectLists.empty(); + } + } + + @Override + public Map fileHashes() { + return null; + } + + @Override + public Optional get(AssetLocation location) { + Path path = basePath.resolve(location.actualLocation()); + return Files.notExists(path) ? Optional.empty() : Optional.of(new SimpleAsset(this, id, path, null)); + } + + @Override + public void getAll(AssetLocation folder, BiConsumer assets) { + + } + +} diff --git a/src/assets/java/speiger/src/coreengine/assets/impl/SimpleAsset.java b/src/assets/java/speiger/src/coreengine/assets/impl/SimpleAsset.java new file mode 100644 index 0000000..a2e981a --- /dev/null +++ b/src/assets/java/speiger/src/coreengine/assets/impl/SimpleAsset.java @@ -0,0 +1,30 @@ +package speiger.src.coreengine.assets.impl; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; + +import speiger.src.coreengine.assets.api.IAsset; +import speiger.src.coreengine.assets.api.IAssetPackage; +import speiger.src.coreengine.assets.api.IAssetParser; +import speiger.src.coreengine.assets.api.ID; + +public record SimpleAsset(IAssetPackage owner, ID location, Path path, String hash) implements IAsset { + + @Override + public IAssetPackage owner() { + return owner; + } + + @Override + public InputStream stream() throws IOException { + return Files.newInputStream(path); + } + + @Override + public T parse(IAssetParser parser) throws IOException { + return parser.parse(path); + } + +} diff --git a/src/assets/java/speiger/src/coreengine/assets/simple/SimpleAssetProvider.java b/src/assets/java/speiger/src/coreengine/assets/simple/SimpleAssetProvider.java new file mode 100644 index 0000000..a8eb831 --- /dev/null +++ b/src/assets/java/speiger/src/coreengine/assets/simple/SimpleAssetProvider.java @@ -0,0 +1,38 @@ +package speiger.src.coreengine.assets.simple; + +import java.util.Map; +import java.util.function.Predicate; + +import speiger.src.coreengine.assets.api.IAsset; +import speiger.src.coreengine.assets.api.IAssetProvider; +import speiger.src.coreengine.assets.api.ID; +import speiger.src.coreengine.assets.api.MultiAsset; + +public class SimpleAssetProvider implements IAssetProvider { + + @Override + public IAsset get(ID id) { + return null; + } + + @Override + public MultiAsset getAll(ID id) { + return null; + } + + @Override + public String hash(ID id) { + return null; + } + + @Override + public Map list(String folder, Predicate filter) { + return null; + } + + @Override + public Map listAll(String folder, Predicate filter) { + return null; + } + +} diff --git a/src/main/java/speiger/src/coreengine/assets/AssetManager.java b/src/main/java/speiger/src/coreengine/assets/AssetManager.java index 2cb03aa..ba3f978 100644 --- a/src/main/java/speiger/src/coreengine/assets/AssetManager.java +++ b/src/main/java/speiger/src/coreengine/assets/AssetManager.java @@ -12,11 +12,11 @@ import speiger.src.collections.objects.utils.ObjectLists; import speiger.src.coreengine.assets.base.IAsset; import speiger.src.coreengine.assets.base.IAssetPackage; import speiger.src.coreengine.assets.base.IAssetProvider.ICloseableAssetProvider; +import speiger.src.coreengine.assets.oldImpl.LayeredAssetProvider; import speiger.src.coreengine.assets.base.IManagedAsset; import speiger.src.coreengine.assets.base.IReloadableAsset; import speiger.src.coreengine.assets.base.MultiAsset; import speiger.src.coreengine.assets.base.PackReloadingTask; -import speiger.src.coreengine.assets.impl.LayeredAssetProvider; public class AssetManager implements ICloseableAssetProvider { diff --git a/src/main/java/speiger/src/coreengine/assets/base/IAssetPackage.java b/src/main/java/speiger/src/coreengine/assets/base/IAssetPackage.java index 5f243ca..5b496bf 100644 --- a/src/main/java/speiger/src/coreengine/assets/base/IAssetPackage.java +++ b/src/main/java/speiger/src/coreengine/assets/base/IAssetPackage.java @@ -8,8 +8,8 @@ import java.util.List; import java.util.function.BiConsumer; import speiger.src.coreengine.assets.AssetLocation; -import speiger.src.coreengine.assets.impl.FolderAssetPackage; -import speiger.src.coreengine.assets.impl.ZipAssetPackage; +import speiger.src.coreengine.assets.oldImpl.FolderAssetPackage; +import speiger.src.coreengine.assets.oldImpl.ZipAssetPackage; import speiger.src.coreengine.utils.helpers.IOUtils; public interface IAssetPackage extends Closeable diff --git a/src/main/java/speiger/src/coreengine/assets/impl/BaseAsset.java b/src/main/java/speiger/src/coreengine/assets/oldImpl/BaseAsset.java similarity index 91% rename from src/main/java/speiger/src/coreengine/assets/impl/BaseAsset.java rename to src/main/java/speiger/src/coreengine/assets/oldImpl/BaseAsset.java index 5e6dbcb..329f632 100644 --- a/src/main/java/speiger/src/coreengine/assets/impl/BaseAsset.java +++ b/src/main/java/speiger/src/coreengine/assets/oldImpl/BaseAsset.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.assets.impl; +package speiger.src.coreengine.assets.oldImpl; import java.io.Closeable; import java.util.List; diff --git a/src/main/java/speiger/src/coreengine/assets/impl/FolderAssetPackage.java b/src/main/java/speiger/src/coreengine/assets/oldImpl/FolderAssetPackage.java similarity index 95% rename from src/main/java/speiger/src/coreengine/assets/impl/FolderAssetPackage.java rename to src/main/java/speiger/src/coreengine/assets/oldImpl/FolderAssetPackage.java index 45b29e7..e51f3d7 100644 --- a/src/main/java/speiger/src/coreengine/assets/impl/FolderAssetPackage.java +++ b/src/main/java/speiger/src/coreengine/assets/oldImpl/FolderAssetPackage.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.assets.impl; +package speiger.src.coreengine.assets.oldImpl; import java.io.IOException; import java.nio.file.DirectoryStream; diff --git a/src/main/java/speiger/src/coreengine/assets/impl/LayeredAssetProvider.java b/src/main/java/speiger/src/coreengine/assets/oldImpl/LayeredAssetProvider.java similarity index 96% rename from src/main/java/speiger/src/coreengine/assets/impl/LayeredAssetProvider.java rename to src/main/java/speiger/src/coreengine/assets/oldImpl/LayeredAssetProvider.java index 3d7a2fd..68afe1b 100644 --- a/src/main/java/speiger/src/coreengine/assets/impl/LayeredAssetProvider.java +++ b/src/main/java/speiger/src/coreengine/assets/oldImpl/LayeredAssetProvider.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.assets.impl; +package speiger.src.coreengine.assets.oldImpl; import java.nio.file.attribute.FileTime; import java.util.List; diff --git a/src/main/java/speiger/src/coreengine/assets/impl/SimpleAsset.java b/src/main/java/speiger/src/coreengine/assets/oldImpl/SimpleAsset.java similarity index 94% rename from src/main/java/speiger/src/coreengine/assets/impl/SimpleAsset.java rename to src/main/java/speiger/src/coreengine/assets/oldImpl/SimpleAsset.java index 1e12fe6..77eede3 100644 --- a/src/main/java/speiger/src/coreengine/assets/impl/SimpleAsset.java +++ b/src/main/java/speiger/src/coreengine/assets/oldImpl/SimpleAsset.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.assets.impl; +package speiger.src.coreengine.assets.oldImpl; import java.awt.image.BufferedImage; import java.io.BufferedReader; diff --git a/src/main/java/speiger/src/coreengine/assets/impl/ZipAssetPackage.java b/src/main/java/speiger/src/coreengine/assets/oldImpl/ZipAssetPackage.java similarity index 95% rename from src/main/java/speiger/src/coreengine/assets/impl/ZipAssetPackage.java rename to src/main/java/speiger/src/coreengine/assets/oldImpl/ZipAssetPackage.java index cf09b90..23e37b2 100644 --- a/src/main/java/speiger/src/coreengine/assets/impl/ZipAssetPackage.java +++ b/src/main/java/speiger/src/coreengine/assets/oldImpl/ZipAssetPackage.java @@ -1,4 +1,4 @@ -package speiger.src.coreengine.assets.impl; +package speiger.src.coreengine.assets.oldImpl; import java.io.IOException; import java.nio.file.DirectoryStream;