You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.5 KiB
65 lines
1.5 KiB
package xyz.wbsite.jmacro.wjdr.task;
|
|
|
|
import xyz.wbsite.jmacro.JMacro;
|
|
import xyz.wbsite.jmacro.JMainService;
|
|
import xyz.wbsite.jmacro.base.ViewRect;
|
|
import xyz.wbsite.jmacro.ex.MacroErrorException;
|
|
import xyz.wbsite.jmacro.util.Logger;
|
|
|
|
/**
|
|
* 基础任务类
|
|
*/
|
|
public abstract class BaseTask {
|
|
|
|
/**
|
|
* 脚本持有对象
|
|
*/
|
|
protected JMacro macro;
|
|
|
|
/**
|
|
* 应用窗口
|
|
*/
|
|
protected ViewRect viewRect;
|
|
|
|
public BaseTask(JMacro macro, ViewRect viewRect) {
|
|
this.macro = macro;
|
|
this.viewRect = viewRect;
|
|
}
|
|
|
|
public void run() {
|
|
if (!JMainService.getInstance().run) {
|
|
Logger.error("服务中断");
|
|
return;
|
|
}
|
|
String name = getClass().getSimpleName();
|
|
try {
|
|
Logger.info("》》》任务[{}]开始》》》", name);
|
|
this.task(macro, viewRect);
|
|
Logger.info("》》》任务[{}]结束》》》", name);
|
|
} catch (Exception e) {
|
|
Logger.info("》》》任务[{}]异常中断》》》", name);
|
|
throw e;
|
|
}
|
|
}
|
|
|
|
public void isReady() {
|
|
for (int i = 0; i < 10; i++) {
|
|
ViewRect rect = macro.matchLegend("野外", 0.9);
|
|
if (rect != null) {
|
|
return;
|
|
}
|
|
macro.delay(100);
|
|
}
|
|
|
|
throw new MacroErrorException("请返回城镇");
|
|
}
|
|
|
|
/**
|
|
* 任务
|
|
*
|
|
* @param macro 脚本
|
|
* @param viewRect 视口
|
|
*/
|
|
public abstract void task(JMacro macro, ViewRect viewRect);
|
|
}
|