diff --git a/src/main/java/xyz/wbsite/jmacro/JMacro.java b/src/main/java/xyz/wbsite/jmacro/JMacro.java index c0ed172..22a142b 100644 --- a/src/main/java/xyz/wbsite/jmacro/JMacro.java +++ b/src/main/java/xyz/wbsite/jmacro/JMacro.java @@ -14,6 +14,7 @@ import org.sikuli.script.Region; import org.sikuli.script.Screen; import xyz.wbsite.jmacro.base.ColorLocation; import xyz.wbsite.jmacro.base.Legend; +import xyz.wbsite.jmacro.util.ImageUtil; import xyz.wbsite.jmacro.util.Logger; import xyz.wbsite.jmacro.util.MousePathUtil; import xyz.wbsite.jmacro.util.TaskUtil; @@ -21,6 +22,7 @@ import xyz.wbsite.jmacro.util.TaskUtil; import java.awt.*; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; +import java.awt.image.BufferedImage; import java.util.List; import java.util.concurrent.TimeUnit; @@ -271,6 +273,7 @@ public abstract class JMacro { mouseMove(location); mouseRightClick(); } + /** * 插入剪贴板 */ @@ -299,7 +302,7 @@ public abstract class JMacro { /** * 执行回车命令 */ - public void sendEnter() { + public void sendEnterCommand() { screen.type(Key.ENTER); } @@ -409,6 +412,27 @@ public abstract class JMacro { return new Region(match.getRect()); } + /** + * 等待并查找图例 + * + * @param legend 图例 + * @param minSimilar 最低相似度 + * @param timeout 超时时间(秒) + * @return 匹配区域 + */ + public Region waitAndFindLegend(String legend, double minSimilar, long timeout) { + Logger.info("等待并查找图例:{}", legend); + return TaskUtil.timeTask(() -> { + while (JMainService.getInstance().run) { + Region result = findLegend(legend, minSimilar); + if (result != null) { + return result; + } + } + return null; + }, timeout, TimeUnit.SECONDS); + } + /** * 查找并点击图例 *