diff options
author | Rime <81419447+Emirlol@users.noreply.github.com> | 2024-06-19 18:57:43 +0300 |
---|---|---|
committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-07-22 14:20:35 +0800 |
commit | 4c398333b9802a9000cc65d50ae4a2d13f300ca8 (patch) | |
tree | 2b2e52431ddfc7610cc0070f5e5abe3c7356a02d /src/main/java/de/hysky/skyblocker/utils/container/ContainerSolver.java | |
parent | 6541bb6aa43a7141ac259ee34a597891d6a45689 (diff) | |
download | Skyblocker-4c398333b9802a9000cc65d50ae4a2d13f300ca8.tar.gz Skyblocker-4c398333b9802a9000cc65d50ae4a2d13f300ca8.tar.bz2 Skyblocker-4c398333b9802a9000cc65d50ae4a2d13f300ca8.zip |
Refactor container matcher implementations into interfaces
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/utils/container/ContainerSolver.java')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/utils/container/ContainerSolver.java | 38 |
1 files changed, 38 insertions, 0 deletions
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(); + } +} |