dev/studio-tiled-parser-assets-scene-asset-type #6

Merged
bquarkz merged 7 commits from dev/studio-tiled-parser-assets-scene-asset-type into master 2026-04-23 17:25:25 +00:00
2 changed files with 11 additions and 1 deletions
Showing only changes of commit 58d0b38ac9 - Show all commits

View File

@ -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,

View File

@ -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()));
}