From 70efa0dea4be2b7af784395770bd062d169029f3 Mon Sep 17 00:00:00 2001 From: rihi <19492038+rihi@users.noreply.github.com> Date: Wed, 14 Jun 2023 02:04:36 +0200 Subject: [PATCH] Move default vmf location algorithm out of BspFileEntry --- .../app/src/cli/BspSourceCliCommand.java | 9 ++++++--- .../ata4/bspsrc/app/util/BspPathUtil.java | 16 ++++++++++++++++ .../ata4/bspsrc/decompiler/BspFileEntry.java | 19 +++++-------------- 3 files changed, 27 insertions(+), 17 deletions(-) create mode 100644 bspsrc-app/src/main/java/info/ata4/bspsrc/app/util/BspPathUtil.java diff --git a/bspsrc-app/src/main/java/info/ata4/bspsrc/app/src/cli/BspSourceCliCommand.java b/bspsrc-app/src/main/java/info/ata4/bspsrc/app/src/cli/BspSourceCliCommand.java index 3015cdb8..4440d5fa 100644 --- a/bspsrc-app/src/main/java/info/ata4/bspsrc/app/src/cli/BspSourceCliCommand.java +++ b/bspsrc-app/src/main/java/info/ata4/bspsrc/app/src/cli/BspSourceCliCommand.java @@ -8,7 +8,6 @@ import info.ata4.bspsrc.decompiler.modules.geom.BrushMode; import info.ata4.bspsrc.decompiler.util.SourceFormat; import info.ata4.bspsrc.lib.app.SourceAppDB; -import info.ata4.io.util.PathUtils; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -306,11 +305,15 @@ private Set getEntries() throws IOException { pathStream .filter(Files::isRegularFile) .filter(bspPathMatcher::matches) - .map(filePath -> new BspFileEntry(filePath, outputPath)) + .map(bspPath -> new BspFileEntry(bspPath, BspPathUtil.defaultVmfPath(bspPath, outputPath))) .forEach(fileSet::add); } } else { - fileSet.add(new BspFileEntry(path, outputPath)); + Path vmfPath = bspPaths.size() > 1 || outputPath == null + ? BspPathUtil.defaultVmfPath(path, outputPath) + : outputPath; + + fileSet.add(new BspFileEntry(path, vmfPath)); } } diff --git a/bspsrc-app/src/main/java/info/ata4/bspsrc/app/util/BspPathUtil.java b/bspsrc-app/src/main/java/info/ata4/bspsrc/app/util/BspPathUtil.java new file mode 100644 index 00000000..8a943a5e --- /dev/null +++ b/bspsrc-app/src/main/java/info/ata4/bspsrc/app/util/BspPathUtil.java @@ -0,0 +1,16 @@ +package info.ata4.bspsrc.app.util; + +import info.ata4.bspsrc.common.util.PathUtil; + +import java.nio.file.Path; + +public class BspPathUtil { + + public static Path defaultVmfPath(Path bspPath, Path vmfDirPath) { + if (vmfDirPath == null) + vmfDirPath = bspPath.getParent(); + + String base = PathUtil.nameWithoutExtension(bspPath).orElse(""); + return vmfDirPath.resolve(base + "_d.vmf"); + } +} diff --git a/bspsrc-decompiler/src/main/java/info/ata4/bspsrc/decompiler/BspFileEntry.java b/bspsrc-decompiler/src/main/java/info/ata4/bspsrc/decompiler/BspFileEntry.java index a86c2f55..82a69712 100644 --- a/bspsrc-decompiler/src/main/java/info/ata4/bspsrc/decompiler/BspFileEntry.java +++ b/bspsrc-decompiler/src/main/java/info/ata4/bspsrc/decompiler/BspFileEntry.java @@ -12,7 +12,8 @@ import info.ata4.bspsrc.common.util.PathUtil; import java.nio.file.Path; -import java.util.Objects; + +import static java.util.Objects.requireNonNull; /** * @@ -28,19 +29,9 @@ public class BspFileEntry { private Path nmoFile; private Path nmosFile; - public BspFileEntry(Path bspFile) { - this(bspFile, null); - } - public BspFileEntry(Path bspFile, Path vmfFile) { - Objects.requireNonNull(bspFile); - - if (vmfFile == null) { - vmfFile = replaceExtension(bspFile, "_d.vmf"); - } - - this.bspFile = bspFile; - this.vmfFile = vmfFile; + this.bspFile = requireNonNull(bspFile); + this.vmfFile = requireNonNull(vmfFile); this.pakfileDir = replaceExtension(vmfFile, ""); this.nmoFile = replaceExtension(bspFile, ".nmo"); this.nmosFile = replaceExtension(vmfFile, ".nmos"); @@ -82,7 +73,7 @@ public Path getNmosFile() { public void setNmosFile(Path nmosFile) { - Objects.requireNonNull(nmosFile); + requireNonNull(nmosFile); this.nmosFile = nmosFile; }