dev/studio-tiled-parser-assets-scene-asset-type #6
@ -8,6 +8,10 @@ import java.nio.file.Path;
|
||||
import java.util.*;
|
||||
|
||||
public final class PackerRuntimeAssetMaterializer {
|
||||
private static final Set<String> RUNTIME_RESERVED_FILE_NAMES = Set.of(
|
||||
"asset.json",
|
||||
"studio.asset.json");
|
||||
|
||||
private final PackerAssetWalker assetWalker;
|
||||
|
||||
public PackerRuntimeAssetMaterializer(PackerAssetWalker assetWalker) {
|
||||
@ -114,7 +118,7 @@ public final class PackerRuntimeAssetMaterializer {
|
||||
private List<String> listAvailableFiles(Path assetRoot) {
|
||||
try (var paths = Files.list(assetRoot)
|
||||
.filter(Files::isRegularFile)
|
||||
.filter(path -> !path.getFileName().toString().equalsIgnoreCase("asset.json"))
|
||||
.filter(path -> !isRuntimeReservedFile(path))
|
||||
.map(path -> assetRoot.relativize(path.toAbsolutePath().normalize()).toString().replace('\\', '/'))
|
||||
.sorted(String.CASE_INSENSITIVE_ORDER)) {
|
||||
return paths.toList();
|
||||
@ -123,6 +127,10 @@ public final class PackerRuntimeAssetMaterializer {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isRuntimeReservedFile(Path path) {
|
||||
return RUNTIME_RESERVED_FILE_NAMES.contains(path.getFileName().toString().toLowerCase(Locale.ROOT));
|
||||
}
|
||||
|
||||
private PackerRuntimeWalkFile toRuntimeWalkFile(
|
||||
Path assetRoot,
|
||||
PackerProbeResult probeResult,
|
||||
|
||||
@ -76,6 +76,7 @@ final class PackerRuntimeAssetMaterializerTest {
|
||||
final Path assetRoot = Files.createDirectories(tempDir.resolve("runtime-default"));
|
||||
final Path manifestPath = assetRoot.resolve("asset.json");
|
||||
Files.writeString(manifestPath, "{}");
|
||||
Files.writeString(assetRoot.resolve("studio.asset.json"), "{}");
|
||||
writeTile(assetRoot.resolve("selected.png"), 16);
|
||||
writeTile(assetRoot.resolve("extra.png"), 16);
|
||||
|
||||
@ -91,6 +92,7 @@ final class PackerRuntimeAssetMaterializerTest {
|
||||
Optional.empty());
|
||||
|
||||
assertEquals(2, materialized.runtimeAsset().walkProjection().buildCandidateFiles().size());
|
||||
assertEquals(List.of("extra.png", "selected.png"), materialized.runtimeAsset().walkProjection().availableFiles());
|
||||
assertTrue(materialized.runtimeAsset().walkProjection().buildCandidateFiles().stream()
|
||||
.allMatch(file -> file.contentBytes().isEmpty()));
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user