diff --git a/legend/野外_任务_L16,759.png b/legend/野外_任务_L16,759.png
new file mode 100644
index 0000000..f2af0a4
Binary files /dev/null and b/legend/野外_任务_L16,759.png differ
diff --git a/legend/野外_搜索.png b/legend/野外_搜索.png
deleted file mode 100644
index 10615e1..0000000
Binary files a/legend/野外_搜索.png and /dev/null differ
diff --git a/src/main/java/com/example/jmacro/wjdr/JMacro.java b/src/main/java/com/example/jmacro/wjdr/JMacro.java
index 11f892c..be68cba 100644
--- a/src/main/java/com/example/jmacro/wjdr/JMacro.java
+++ b/src/main/java/com/example/jmacro/wjdr/JMacro.java
@@ -456,7 +456,7 @@ public class JMacro {
if (!legendName.endsWith(".png")) {
legendName = legendName + ".png";
}
- return waitAndMatchPic(rect, new File(legend, legendName), minSimilar, time, unit);
+ return waitAndFindPic(rect, new File(legend, legendName), minSimilar, time, unit);
}
/**
@@ -531,7 +531,6 @@ public class JMacro {
public ViewRect waitAndMatchPic(ViewRect rect, File file, double minSimilar, long time, TimeUnit unit) {
return TaskUtil.timeTask(() -> {
while (true) {
- delayTap();
ViewRect matchPic = matchPic(rect, file, minSimilar);
if (matchPic != null) {
return matchPic;
@@ -568,10 +567,7 @@ public class JMacro {
viewRect.setBottom(viewRect.getTop() + image.getHeight());
ViewRect pic = findPic(viewRect, image, minSimilar);
- if (pic == null && Logger.isDebug) {
- ImageUtil.show(viewRect);
- }
-
+ ImageUtil.show(viewRect);
return pic;
}
diff --git a/src/main/java/com/example/jmacro/wjdr/JMainApplication.java b/src/main/java/com/example/jmacro/wjdr/JMainApplication.java
index 47dc888..5158272 100644
--- a/src/main/java/com/example/jmacro/wjdr/JMainApplication.java
+++ b/src/main/java/com/example/jmacro/wjdr/JMainApplication.java
@@ -20,6 +20,7 @@ import javafx.stage.Stage;
public class JMainApplication extends Application {
public static Stage primaryStage;
+ public static JMainController mainController;
@Override
public void start(Stage stage) throws Exception {
@@ -29,6 +30,7 @@ public class JMainApplication extends Application {
stage.setMinWidth(400);
stage.setMinHeight(300);
FXMLLoader mainLoader = FXMLUtil.load("main.fxml");
+ mainController = mainLoader.getController();
stage.setScene(new Scene(mainLoader.getRoot()));
stage.centerOnScreen();
stage.show();
diff --git a/src/main/java/com/example/jmacro/wjdr/JMainController.java b/src/main/java/com/example/jmacro/wjdr/JMainController.java
index 334122f..83436b3 100644
--- a/src/main/java/com/example/jmacro/wjdr/JMainController.java
+++ b/src/main/java/com/example/jmacro/wjdr/JMainController.java
@@ -5,6 +5,7 @@ import com.example.jmacro.wjdr.util.Capture;
import com.example.jmacro.wjdr.util.Dialog;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
+import javafx.scene.image.ImageView;
import java.awt.*;
import java.io.File;
@@ -24,6 +25,8 @@ public class JMainController {
private Button stop;
@FXML
private Button capture;
+ @FXML
+ private ImageView preview;
/**
* 截图
@@ -62,4 +65,8 @@ public class JMainController {
this.start.setDisable(!stop);
this.stop.setDisable(stop);
}
+
+ public ImageView getPreview() {
+ return preview;
+ }
}
diff --git a/src/main/java/com/example/jmacro/wjdr/demo/DemoThread.java b/src/main/java/com/example/jmacro/wjdr/demo/DemoThread.java
index 6b2aade..955a4d3 100644
--- a/src/main/java/com/example/jmacro/wjdr/demo/DemoThread.java
+++ b/src/main/java/com/example/jmacro/wjdr/demo/DemoThread.java
@@ -70,7 +70,7 @@ public class DemoThread extends JMacroThread {
Logger.info("任务线程ID={}", Thread.currentThread().getId());
// 获取启动图标
Logger.info("定位启动图标");
- ViewRect launch = macro.waitAndFindPic(viewRect, "启动图标", 0.9, 5, TimeUnit.SECONDS);
+ ViewRect launch = macro.waitAndFindPic(viewRect, "启动图标", 0.9, 10, TimeUnit.SECONDS);
if (launch != null) {
Logger.info("启动图标坐标:", launch.toString());
Logger.info("启动程序");
diff --git a/src/main/java/com/example/jmacro/wjdr/demo/task/BaseTask.java b/src/main/java/com/example/jmacro/wjdr/demo/task/BaseTask.java
index 381bed5..0e99d29 100644
--- a/src/main/java/com/example/jmacro/wjdr/demo/task/BaseTask.java
+++ b/src/main/java/com/example/jmacro/wjdr/demo/task/BaseTask.java
@@ -7,7 +7,7 @@ import com.example.jmacro.wjdr.util.Logger;
/**
* 基础任务类
*/
-public abstract class BaseTask implements Runnable {
+public abstract class BaseTask {
/**
* 脚本持有对象
@@ -24,8 +24,8 @@ public abstract class BaseTask implements Runnable {
this.viewRect = viewRect;
}
- @Override
public void run() {
+ Logger.info("守护线程ID={}", Thread.currentThread().getId());
if (Thread.currentThread().isInterrupted()) {
return;
}
diff --git a/src/main/java/com/example/jmacro/wjdr/demo/task/Task_自动采矿.java b/src/main/java/com/example/jmacro/wjdr/demo/task/Task_自动采矿.java
index cb86df9..9a0d47a 100644
--- a/src/main/java/com/example/jmacro/wjdr/demo/task/Task_自动采矿.java
+++ b/src/main/java/com/example/jmacro/wjdr/demo/task/Task_自动采矿.java
@@ -35,11 +35,13 @@ public class Task_自动采矿 extends BaseTask {
}
Logger.info("定位资源搜索按钮");
- ViewRect 野外搜索 = macro.waitAndMatchPic(this.viewRect, "野外_搜索_L33,636", 0.5);
- if (野外搜索 == null) {
+ // 因为搜索按钮透明,不好比对,通过定位其下面的任务图标定位
+ ViewRect 野外_任务 = macro.waitAndMatchPic(this.viewRect, "野外_任务_L16,759", 0.9);
+ if (野外_任务 == null) {
Logger.error("未检测到【资源搜索按钮】,采矿终止");
return;
}
+ ViewPoint 野外搜索 = new ViewPoint(野外_任务.getCenter()[0], 野外_任务.getCenter()[1] - 125);
Logger.info("定位资源搜索按钮成功:{}", 野外搜索.toString());
macro.mouseLeftClick(野外搜索);
@@ -55,8 +57,8 @@ public class Task_自动采矿 extends BaseTask {
}
// 检测是否是搜索界面
- ViewRect 搜索 = macro.waitAndMatchPic(this.viewRect, "野外_搜索_L18,633", 9);
- if (搜索 != null) {
+ ViewRect 野外_任务2 = macro.waitAndMatchPic(this.viewRect, "野外_任务_L16,759", 9);
+ if (野外_任务2 != null) {
Logger.info("退出资源搜索界面");
macro.mouseLeftClick(this.viewRect);
}
diff --git a/src/main/java/com/example/jmacro/wjdr/util/ImageUtil.java b/src/main/java/com/example/jmacro/wjdr/util/ImageUtil.java
index aa27d9a..b582c81 100644
--- a/src/main/java/com/example/jmacro/wjdr/util/ImageUtil.java
+++ b/src/main/java/com/example/jmacro/wjdr/util/ImageUtil.java
@@ -2,13 +2,18 @@ package com.example.jmacro.wjdr.util;
import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.thread.ThreadUtil;
+import com.example.jmacro.wjdr.JMainApplication;
import com.example.jmacro.wjdr.base.ViewRect;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
@@ -135,18 +140,14 @@ public class ImageUtil {
}
}
+
/**
* 终端程序并展示图片
*
* @param image 图片
*/
public static void show(BufferedImage image) {
- JFrame frame = new JFrame();
- BufferedImage read = ImgUtil.read("icon.png");
- frame.setIconImage(read);
-
- int viewSize = 500;
-
+ int viewSize = 100;
Image showImage = image;
// 图片太大时进行缩放显示
if (image.getWidth() > viewSize || image.getHeight() > viewSize) {
@@ -156,28 +157,9 @@ public class ImageUtil {
showImage = ImgUtil.scale(showImage, 1.0f * viewSize / image.getHeight());
}
}
- ImageIcon imageIcon = new ImageIcon(showImage);
- JLabel jLabel = new JLabel(imageIcon);
- frame.add(jLabel);
- frame.setSize(viewSize, viewSize);
- frame.setVisible(true);
-
- boolean[] wait = new boolean[]{true};
- frame.addKeyListener(new KeyAdapter() {
- @Override
- public void keyReleased(KeyEvent e) {
- switch (e.getKeyCode()) {
- case KeyEvent.VK_ENTER:
- case KeyEvent.VK_ESCAPE: {
- wait[0] = false;
- frame.setVisible(false);
- }
- break;
- }
- }
- });
- while (wait[0]) {
- ThreadUtil.sleep(300);
- }
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ ImgUtil.write(showImage,"PNG",outputStream);
+ javafx.scene.image.Image image1 = new javafx.scene.image.Image(new ByteArrayInputStream(outputStream.toByteArray()));
+ JMainApplication.mainController.getPreview().setImage(image1);
}
}
diff --git a/src/main/resources/main.fxml b/src/main/resources/main.fxml
index 9876161..2fd1206 100644
--- a/src/main/resources/main.fxml
+++ b/src/main/resources/main.fxml
@@ -2,52 +2,68 @@
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+