Add option to skip prepare route
This commit is contained in:
@@ -259,6 +259,7 @@ class AutoBotMove:
|
|||||||
turn_error_hold_sec=None,
|
turn_error_hold_sec=None,
|
||||||
distance_interact_pause_sec=None,
|
distance_interact_pause_sec=None,
|
||||||
mailbox_route_path=None,
|
mailbox_route_path=None,
|
||||||
|
skip_prepare_route=False,
|
||||||
):
|
):
|
||||||
self.last_tab_time = 0
|
self.last_tab_time = 0
|
||||||
self.last_interaction_time = 0 # 记录上一次按互动键的时间
|
self.last_interaction_time = 0 # 记录上一次按互动键的时间
|
||||||
@@ -289,6 +290,7 @@ class AutoBotMove:
|
|||||||
self.distance_interact_brake_sec = 0.08
|
self.distance_interact_brake_sec = 0.08
|
||||||
self._last_mouse_path_scale_signature = None
|
self._last_mouse_path_scale_signature = None
|
||||||
self.logistics_resume_cooldown_until = 0.0
|
self.logistics_resume_cooldown_until = 0.0
|
||||||
|
self.skip_prepare_route = bool(skip_prepare_route)
|
||||||
# stop_check: 返回 True 表示需要立即停止(用于中断阻塞中的后勤/路线导航)
|
# stop_check: 返回 True 表示需要立即停止(用于中断阻塞中的后勤/路线导航)
|
||||||
self._stop_check = stop_check if callable(stop_check) else (lambda: False)
|
self._stop_check = stop_check if callable(stop_check) else (lambda: False)
|
||||||
|
|
||||||
@@ -328,6 +330,10 @@ class AutoBotMove:
|
|||||||
except Exception:
|
except Exception:
|
||||||
self.prepare_route_waypoints = []
|
self.prepare_route_waypoints = []
|
||||||
print(f">>> [准备路线] 加载失败,忽略配置: {prepare_route_path}")
|
print(f">>> [准备路线] 加载失败,忽略配置: {prepare_route_path}")
|
||||||
|
if self.skip_prepare_route:
|
||||||
|
if self.prepare_route_waypoints:
|
||||||
|
print(">>> [准备路线] 已勾选跳过准备路线,直接开始巡逻。")
|
||||||
|
self.prepare_route_waypoints = []
|
||||||
self.prepare_route_index = 0
|
self.prepare_route_index = 0
|
||||||
self.prepare_route_completed = not bool(self.prepare_route_waypoints)
|
self.prepare_route_completed = not bool(self.prepare_route_waypoints)
|
||||||
self.is_running_prepare_route = bool(self.prepare_route_waypoints)
|
self.is_running_prepare_route = bool(self.prepare_route_waypoints)
|
||||||
|
|||||||
@@ -391,6 +391,7 @@ class GameLoopWorker(QThread):
|
|||||||
turn_error_key=None,
|
turn_error_key=None,
|
||||||
turn_error_hold_sec=None,
|
turn_error_hold_sec=None,
|
||||||
distance_interact_pause_sec=None,
|
distance_interact_pause_sec=None,
|
||||||
|
skip_prepare_route=False,
|
||||||
):
|
):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.mode = mode # 'monitor' | 'patrol' | 'combat' | 'quest_follow' | 'flight' | 'record'
|
self.mode = mode # 'monitor' | 'patrol' | 'combat' | 'quest_follow' | 'flight' | 'record'
|
||||||
@@ -405,6 +406,7 @@ class GameLoopWorker(QThread):
|
|||||||
self.prepare_route_path = prepare_route_path
|
self.prepare_route_path = prepare_route_path
|
||||||
self.vendor_path = vendor_path
|
self.vendor_path = vendor_path
|
||||||
self.mailbox_route_path = mailbox_route_path
|
self.mailbox_route_path = mailbox_route_path
|
||||||
|
self.skip_prepare_route = bool(skip_prepare_route)
|
||||||
self.record_filename = record_filename or 'waypoints'
|
self.record_filename = record_filename or 'waypoints'
|
||||||
self.record_min_distance = record_min_distance
|
self.record_min_distance = record_min_distance
|
||||||
self.attack_loop_path = attack_loop_path or None
|
self.attack_loop_path = attack_loop_path or None
|
||||||
@@ -496,6 +498,7 @@ class GameLoopWorker(QThread):
|
|||||||
turn_error_hold_sec=self.turn_error_hold_sec,
|
turn_error_hold_sec=self.turn_error_hold_sec,
|
||||||
distance_interact_pause_sec=self.distance_interact_pause_sec,
|
distance_interact_pause_sec=self.distance_interact_pause_sec,
|
||||||
mailbox_route_path=self.mailbox_route_path,
|
mailbox_route_path=self.mailbox_route_path,
|
||||||
|
skip_prepare_route=self.skip_prepare_route,
|
||||||
)
|
)
|
||||||
self.bot_move._on_hearthstone_stop = self.stop_signal.emit
|
self.bot_move._on_hearthstone_stop = self.stop_signal.emit
|
||||||
except ImportError as e:
|
except ImportError as e:
|
||||||
@@ -805,10 +808,13 @@ class WoWMultiKeyGUI(QMainWindow):
|
|||||||
self.route_profile_combo.setMinimumWidth(240)
|
self.route_profile_combo.setMinimumWidth(240)
|
||||||
self.patrol_attack_loop_combo = QComboBox()
|
self.patrol_attack_loop_combo = QComboBox()
|
||||||
self.patrol_attack_loop_combo.setMinimumWidth(200)
|
self.patrol_attack_loop_combo.setMinimumWidth(200)
|
||||||
|
self.skip_prepare_route_check = QCheckBox("跳过准备路线")
|
||||||
|
self.skip_prepare_route_check.setChecked(False)
|
||||||
self._refresh_recorder_combos()
|
self._refresh_recorder_combos()
|
||||||
refresh_btn = QPushButton("🔄 刷新列表")
|
refresh_btn = QPushButton("🔄 刷新列表")
|
||||||
refresh_btn.clicked.connect(self._refresh_recorder_combos)
|
refresh_btn.clicked.connect(self._refresh_recorder_combos)
|
||||||
patrol_layout.addRow("路线方案 JSON:", self.route_profile_combo)
|
patrol_layout.addRow("路线方案 JSON:", self.route_profile_combo)
|
||||||
|
patrol_layout.addRow("", self.skip_prepare_route_check)
|
||||||
patrol_layout.addRow("攻击循环:", self.patrol_attack_loop_combo)
|
patrol_layout.addRow("攻击循环:", self.patrol_attack_loop_combo)
|
||||||
patrol_layout.addRow("", refresh_btn)
|
patrol_layout.addRow("", refresh_btn)
|
||||||
self.patrol_group.setVisible(False)
|
self.patrol_group.setVisible(False)
|
||||||
@@ -1807,6 +1813,7 @@ class WoWMultiKeyGUI(QMainWindow):
|
|||||||
flight_json_path = None
|
flight_json_path = None
|
||||||
resurrection_route_a_path = None
|
resurrection_route_a_path = None
|
||||||
resurrection_route_b_path = None
|
resurrection_route_b_path = None
|
||||||
|
skip_prepare_route = False
|
||||||
if mode == 'patrol':
|
if mode == 'patrol':
|
||||||
profile_path = self.route_profile_combo.currentData() or ""
|
profile_path = self.route_profile_combo.currentData() or ""
|
||||||
if not profile_path:
|
if not profile_path:
|
||||||
@@ -1827,6 +1834,7 @@ class WoWMultiKeyGUI(QMainWindow):
|
|||||||
QMessageBox.warning(self, "提示", "已启用包满邮寄,路线方案需包含 mailbox_route 邮箱路线")
|
QMessageBox.warning(self, "提示", "已启用包满邮寄,路线方案需包含 mailbox_route 邮箱路线")
|
||||||
return
|
return
|
||||||
route_profile_path = profile_path
|
route_profile_path = profile_path
|
||||||
|
skip_prepare_route = self.skip_prepare_route_check.isChecked()
|
||||||
attack_loop_path = None
|
attack_loop_path = None
|
||||||
if mode == 'patrol':
|
if mode == 'patrol':
|
||||||
attack_loop_path = self.patrol_attack_loop_combo.currentData() or None
|
attack_loop_path = self.patrol_attack_loop_combo.currentData() or None
|
||||||
@@ -1936,6 +1944,7 @@ class WoWMultiKeyGUI(QMainWindow):
|
|||||||
turn_error_key=turn_error_key,
|
turn_error_key=turn_error_key,
|
||||||
turn_error_hold_sec=turn_error_hold_sec,
|
turn_error_hold_sec=turn_error_hold_sec,
|
||||||
distance_interact_pause_sec=distance_interact_pause_sec,
|
distance_interact_pause_sec=distance_interact_pause_sec,
|
||||||
|
skip_prepare_route=skip_prepare_route,
|
||||||
)
|
)
|
||||||
self.game_worker.state_signal.connect(self.state_label.setText)
|
self.game_worker.state_signal.connect(self.state_label.setText)
|
||||||
self.game_worker.log_signal.connect(self.log)
|
self.game_worker.log_signal.connect(self.log)
|
||||||
|
|||||||
Reference in New Issue
Block a user