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); }