From 91c5686fde45b96a733d73d280b2ff1512f7257c Mon Sep 17 00:00:00 2001 From: JFronny Date: Sat, 29 Jun 2024 20:37:17 +0200 Subject: [PATCH] feat: support specifying the MDS to use with a property --- .../launcher/system/mds/ModsDirScanner.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/launcher/src/main/java/io/gitlab/jfronny/inceptum/launcher/system/mds/ModsDirScanner.java b/launcher/src/main/java/io/gitlab/jfronny/inceptum/launcher/system/mds/ModsDirScanner.java index 3a5bb14..52884a7 100644 --- a/launcher/src/main/java/io/gitlab/jfronny/inceptum/launcher/system/mds/ModsDirScanner.java +++ b/launcher/src/main/java/io/gitlab/jfronny/inceptum/launcher/system/mds/ModsDirScanner.java @@ -1,9 +1,11 @@ package io.gitlab.jfronny.inceptum.launcher.system.mds; import io.gitlab.jfronny.commons.throwable.ThrowingBiConsumer; +import io.gitlab.jfronny.inceptum.common.Utils; import io.gitlab.jfronny.inceptum.launcher.model.inceptum.InstanceMeta; import io.gitlab.jfronny.inceptum.launcher.system.mds.flow.FlowMds; import io.gitlab.jfronny.inceptum.launcher.system.mds.noop.NoopMds; +import io.gitlab.jfronny.inceptum.launcher.system.mds.threaded.ThreadedMds; import io.gitlab.jfronny.inceptum.launcher.util.GameVersionParser; import java.io.Closeable; @@ -13,9 +15,22 @@ import java.nio.file.Path; import java.util.Set; public interface ModsDirScanner extends Closeable { + String MDS_KIND = switch (System.getProperty("inceptum.mds.kind", "flow").toLowerCase()) { + case "flow" -> "flow"; + case "threaded" -> "threaded"; + case "noop" -> "noop"; + case String s -> { + Utils.LOGGER.error("Unknown mds kind: " + s + ", using flow"); + yield "flow"; + } + }; static ModsDirScanner get(Path modsDir, InstanceMeta meta) throws IOException { - if (Files.exists(modsDir)) return FlowMds.get(modsDir, meta);//ThreadedMds.get(modsDir, meta); - return new NoopMds(GameVersionParser.getGameVersion(meta.gameVersion)); + //TODO use a primitive pattern and guard once available + return switch (MDS_KIND) { + case String s when s.equals("flow") && Files.exists(modsDir) -> FlowMds.get(modsDir, meta); + case String s when s.equals("threaded") && Files.exists(modsDir) -> ThreadedMds.get(modsDir, meta); + default -> new NoopMds(GameVersionParser.getGameVersion(meta.gameVersion)); + }; } static void closeAll() {