More work on assets
This commit is contained in:
parent
396d4f2232
commit
09874d1b8a
@ -5,7 +5,7 @@ connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
|
|||||||
connection.project.dir=
|
connection.project.dir=
|
||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
gradle.user.home=
|
gradle.user.home=
|
||||||
java.home=C\:/Program Files/Java/jdk25
|
java.home=C\:/Program Files/Eclipse Adoptium/jdk25
|
||||||
jvm.arguments=
|
jvm.arguments=
|
||||||
offline.mode=false
|
offline.mode=false
|
||||||
override.workspace.settings=true
|
override.workspace.settings=true
|
||||||
|
|||||||
@ -1,5 +1,18 @@
|
|||||||
package speiger.src.coreengine.assets.api;
|
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<String> domains();
|
||||||
|
Map<ID, String> fileHashes();
|
||||||
|
Optional<IAsset> get(AssetLocation location);
|
||||||
|
void getAll(AssetLocation folder, BiConsumer<ID, IAsset> assets);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,16 @@
|
|||||||
package speiger.src.coreengine.assets.api;
|
package speiger.src.coreengine.assets.api;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
public interface IAssetProvider {
|
public interface IAssetProvider {
|
||||||
public IAsset get(ID id);
|
IAsset get(ID id);
|
||||||
public String hash(ID id);
|
MultiAsset getAll(ID id);
|
||||||
|
String hash(ID id);
|
||||||
|
Map<ID, IAsset> list(String folder, Predicate<ID> filter);
|
||||||
|
Map<ID, MultiAsset> listAll(String folder, Predicate<ID> filter);
|
||||||
|
|
||||||
|
public interface IReloadableAssetProvider extends IAssetProvider, AutoCloseable {
|
||||||
|
void addReloadListener(Runnable run);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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<String> domains() {
|
||||||
|
try(DirectoryStream<Path> dirs = Files.newDirectoryStream(basePath.resolve("assets"))) {
|
||||||
|
List<String> domains = new ObjectArrayList<>();
|
||||||
|
dirs.forEach(T -> domains.add(T.getFileName().toString()));
|
||||||
|
return domains;
|
||||||
|
}
|
||||||
|
catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return ObjectLists.empty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<ID, String> fileHashes() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<IAsset> 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<ID, IAsset> assets) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -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> T parse(IAssetParser<T> parser) throws IOException {
|
||||||
|
return parser.parse(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -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<ID, IAsset> list(String folder, Predicate<ID> filter) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<ID, MultiAsset> listAll(String folder, Predicate<ID> filter) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -12,11 +12,11 @@ import speiger.src.collections.objects.utils.ObjectLists;
|
|||||||
import speiger.src.coreengine.assets.base.IAsset;
|
import speiger.src.coreengine.assets.base.IAsset;
|
||||||
import speiger.src.coreengine.assets.base.IAssetPackage;
|
import speiger.src.coreengine.assets.base.IAssetPackage;
|
||||||
import speiger.src.coreengine.assets.base.IAssetProvider.ICloseableAssetProvider;
|
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.IManagedAsset;
|
||||||
import speiger.src.coreengine.assets.base.IReloadableAsset;
|
import speiger.src.coreengine.assets.base.IReloadableAsset;
|
||||||
import speiger.src.coreengine.assets.base.MultiAsset;
|
import speiger.src.coreengine.assets.base.MultiAsset;
|
||||||
import speiger.src.coreengine.assets.base.PackReloadingTask;
|
import speiger.src.coreengine.assets.base.PackReloadingTask;
|
||||||
import speiger.src.coreengine.assets.impl.LayeredAssetProvider;
|
|
||||||
|
|
||||||
public class AssetManager implements ICloseableAssetProvider
|
public class AssetManager implements ICloseableAssetProvider
|
||||||
{
|
{
|
||||||
|
|||||||
@ -8,8 +8,8 @@ import java.util.List;
|
|||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
import speiger.src.coreengine.assets.AssetLocation;
|
import speiger.src.coreengine.assets.AssetLocation;
|
||||||
import speiger.src.coreengine.assets.impl.FolderAssetPackage;
|
import speiger.src.coreengine.assets.oldImpl.FolderAssetPackage;
|
||||||
import speiger.src.coreengine.assets.impl.ZipAssetPackage;
|
import speiger.src.coreengine.assets.oldImpl.ZipAssetPackage;
|
||||||
import speiger.src.coreengine.utils.helpers.IOUtils;
|
import speiger.src.coreengine.utils.helpers.IOUtils;
|
||||||
|
|
||||||
public interface IAssetPackage extends Closeable
|
public interface IAssetPackage extends Closeable
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package speiger.src.coreengine.assets.impl;
|
package speiger.src.coreengine.assets.oldImpl;
|
||||||
|
|
||||||
import java.io.Closeable;
|
import java.io.Closeable;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package speiger.src.coreengine.assets.impl;
|
package speiger.src.coreengine.assets.oldImpl;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.DirectoryStream;
|
import java.nio.file.DirectoryStream;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package speiger.src.coreengine.assets.impl;
|
package speiger.src.coreengine.assets.oldImpl;
|
||||||
|
|
||||||
import java.nio.file.attribute.FileTime;
|
import java.nio.file.attribute.FileTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package speiger.src.coreengine.assets.impl;
|
package speiger.src.coreengine.assets.oldImpl;
|
||||||
|
|
||||||
import java.awt.image.BufferedImage;
|
import java.awt.image.BufferedImage;
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package speiger.src.coreengine.assets.impl;
|
package speiger.src.coreengine.assets.oldImpl;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.DirectoryStream;
|
import java.nio.file.DirectoryStream;
|
||||||
Loading…
x
Reference in New Issue
Block a user