diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/Starbound.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/Starbound.kt index fad13193..4cae7643 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/Starbound.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/Starbound.kt @@ -16,7 +16,6 @@ import ru.dbotthepony.kstarbound.api.ISBFileLocator import ru.dbotthepony.kstarbound.api.IStarboundFile import ru.dbotthepony.kstarbound.api.NonExistingFile import ru.dbotthepony.kstarbound.api.PhysicalFile -import ru.dbotthepony.kstarbound.api.explore import ru.dbotthepony.kstarbound.defs.* import ru.dbotthepony.kstarbound.defs.image.AtlasConfiguration import ru.dbotthepony.kstarbound.defs.image.ImageReference diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/api/IStarboundFileSystem.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/api/IStarboundFileSystem.kt index 4fb9d48d..f1f34f20 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/api/IStarboundFileSystem.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/api/IStarboundFileSystem.kt @@ -61,6 +61,11 @@ interface IStarboundFile : ISBFileLocator { return children?.get(name) } + fun explore(): Stream { + val children = children ?: return Stream.of(this) + return Stream.concat(Stream.of(this), children.values.stream().flatMap { it.explore() }) + } + fun computeFullPath(): String { var path = name var parent = parent @@ -224,11 +229,6 @@ class NonExistingFile( } } -fun IStarboundFile.explore(): Stream { - val children = children ?: return Stream.of(this) - return Stream.concat(Stream.of(this), children.values.stream().flatMap { it.explore() }) -} - fun getPathFolder(path: String): String { return path.substringBeforeLast('/') } diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/io/StarboundPak.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/io/StarboundPak.kt index de46e03e..344abb3d 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/io/StarboundPak.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/io/StarboundPak.kt @@ -1,6 +1,7 @@ package ru.dbotthepony.kstarbound.io import it.unimi.dsi.fastutil.objects.Object2ObjectFunction +import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap import ru.dbotthepony.kstarbound.api.IStarboundFile import ru.dbotthepony.kstarbound.io.json.BinaryJsonReader @@ -35,7 +36,7 @@ class StarboundPak(val path: File, callback: (finished: Boolean, status: String) get() = false private var frozen = false - private val innerChildren = Object2ObjectOpenHashMap() + private val innerChildren = Object2ObjectLinkedOpenHashMap() fun put(value: IStarboundFile) { check(!frozen) { "Can't put, already frozen!" }