From 4c398333b9802a9000cc65d50ae4a2d13f300ca8 Mon Sep 17 00:00:00 2001 From: Rime <81419447+Emirlol@users.noreply.github.com> Date: Wed, 19 Jun 2024 18:57:43 +0300 Subject: Refactor container matcher implementations into interfaces --- .../utils/container/ContainerSolver.java | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/main/java/de/hysky/skyblocker/utils/container/ContainerSolver.java (limited to 'src/main/java/de/hysky/skyblocker/utils/container/ContainerSolver.java') diff --git a/src/main/java/de/hysky/skyblocker/utils/container/ContainerSolver.java b/src/main/java/de/hysky/skyblocker/utils/container/ContainerSolver.java new file mode 100644 index 00000000..6d3240ea --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/utils/container/ContainerSolver.java @@ -0,0 +1,38 @@ +package de.hysky.skyblocker.utils.container; + +import org.intellij.lang.annotations.Language; +import org.jetbrains.annotations.NotNull; + +import java.util.regex.Pattern; + +/** + * Simple implementation of a container solver. Extend this class to add a new gui solver, + * like terminal solvers or experiment solvers and add it to {@link ContainerSolverManager#solvers}. + */ +public abstract class ContainerSolver extends RegexContainerMatcher implements AbstractContainerSolver { + /** + * Utility constructor that will compile the given string into a pattern. + * + * @see #ContainerSolver(Pattern) + */ + protected ContainerSolver(@NotNull @Language("RegExp") String titlePattern) { + super(titlePattern); + } + + /** + * Creates a ContainerSolver that will be applied to screens with titles that match the given pattern. + * + * @param titlePattern The pattern to match the screen title against. + */ + protected ContainerSolver(@NotNull Pattern titlePattern) { + super(titlePattern); + } + + // A container solver that applies to every screen doesn't make sense, + // so we don't provide a constructor for that and force getTitlePattern to be @NotNull + @Override + public @NotNull Pattern getTitlePattern() { + assert super.getTitlePattern() != null; + return super.getTitlePattern(); + } +} -- cgit