Add patrol route cycling and point offsets
This commit is contained in:
@@ -392,6 +392,8 @@ class GameLoopWorker(QThread):
|
||||
turn_error_hold_sec=None,
|
||||
distance_interact_pause_sec=None,
|
||||
skip_prepare_route=False,
|
||||
patrol_route_switch_laps=0,
|
||||
patrol_point_offset_radius=0.15,
|
||||
):
|
||||
super().__init__()
|
||||
self.mode = mode # 'monitor' | 'patrol' | 'combat' | 'quest_follow' | 'flight' | 'record'
|
||||
@@ -407,6 +409,14 @@ class GameLoopWorker(QThread):
|
||||
self.vendor_path = vendor_path
|
||||
self.mailbox_route_path = mailbox_route_path
|
||||
self.skip_prepare_route = bool(skip_prepare_route)
|
||||
try:
|
||||
self.patrol_route_switch_laps = max(0, int(patrol_route_switch_laps or 0))
|
||||
except (TypeError, ValueError):
|
||||
self.patrol_route_switch_laps = 0
|
||||
try:
|
||||
self.patrol_point_offset_radius = max(0.0, float(patrol_point_offset_radius or 0.0))
|
||||
except (TypeError, ValueError):
|
||||
self.patrol_point_offset_radius = 0.0
|
||||
self.record_filename = record_filename or 'waypoints'
|
||||
self.record_min_distance = record_min_distance
|
||||
self.attack_loop_path = attack_loop_path or None
|
||||
@@ -499,6 +509,8 @@ class GameLoopWorker(QThread):
|
||||
distance_interact_pause_sec=self.distance_interact_pause_sec,
|
||||
mailbox_route_path=self.mailbox_route_path,
|
||||
skip_prepare_route=self.skip_prepare_route,
|
||||
patrol_route_switch_laps=self.patrol_route_switch_laps,
|
||||
patrol_point_offset_radius=self.patrol_point_offset_radius,
|
||||
)
|
||||
self.bot_move._on_hearthstone_stop = self.stop_signal.emit
|
||||
except ImportError as e:
|
||||
@@ -810,11 +822,25 @@ class WoWMultiKeyGUI(QMainWindow):
|
||||
self.patrol_attack_loop_combo.setMinimumWidth(200)
|
||||
self.skip_prepare_route_check = QCheckBox("跳过准备路线")
|
||||
self.skip_prepare_route_check.setChecked(False)
|
||||
self.patrol_route_switch_laps_spin = QSpinBox()
|
||||
self.patrol_route_switch_laps_spin.setRange(0, 999)
|
||||
self.patrol_route_switch_laps_spin.setValue(0)
|
||||
self.patrol_route_switch_laps_spin.setSuffix(" 圈")
|
||||
self.patrol_route_switch_laps_spin.setSpecialValueText("不自动轮换")
|
||||
self.patrol_point_offset_spin = QDoubleSpinBox()
|
||||
self.patrol_point_offset_spin.setRange(0.0, 2.0)
|
||||
self.patrol_point_offset_spin.setDecimals(2)
|
||||
self.patrol_point_offset_spin.setSingleStep(0.05)
|
||||
self.patrol_point_offset_spin.setValue(0.15)
|
||||
self.patrol_point_offset_spin.setSuffix(" 坐标")
|
||||
self.patrol_point_offset_spin.setSpecialValueText("不偏移")
|
||||
self._refresh_recorder_combos()
|
||||
refresh_btn = QPushButton("🔄 刷新列表")
|
||||
refresh_btn.clicked.connect(self._refresh_recorder_combos)
|
||||
patrol_layout.addRow("路线方案 JSON:", self.route_profile_combo)
|
||||
patrol_layout.addRow("", self.skip_prepare_route_check)
|
||||
patrol_layout.addRow("巡逻路线轮换:", self.patrol_route_switch_laps_spin)
|
||||
patrol_layout.addRow("巡逻点偏移半径:", self.patrol_point_offset_spin)
|
||||
patrol_layout.addRow("攻击循环:", self.patrol_attack_loop_combo)
|
||||
patrol_layout.addRow("", refresh_btn)
|
||||
self.patrol_group.setVisible(False)
|
||||
@@ -1814,6 +1840,8 @@ class WoWMultiKeyGUI(QMainWindow):
|
||||
resurrection_route_a_path = None
|
||||
resurrection_route_b_path = None
|
||||
skip_prepare_route = False
|
||||
patrol_route_switch_laps = 0
|
||||
patrol_point_offset_radius = 0.15
|
||||
if mode == 'patrol':
|
||||
profile_path = self.route_profile_combo.currentData() or ""
|
||||
if not profile_path:
|
||||
@@ -1835,6 +1863,8 @@ class WoWMultiKeyGUI(QMainWindow):
|
||||
return
|
||||
route_profile_path = profile_path
|
||||
skip_prepare_route = self.skip_prepare_route_check.isChecked()
|
||||
patrol_route_switch_laps = int(self.patrol_route_switch_laps_spin.value())
|
||||
patrol_point_offset_radius = float(self.patrol_point_offset_spin.value())
|
||||
attack_loop_path = None
|
||||
if mode == 'patrol':
|
||||
attack_loop_path = self.patrol_attack_loop_combo.currentData() or None
|
||||
@@ -1945,6 +1975,8 @@ class WoWMultiKeyGUI(QMainWindow):
|
||||
turn_error_hold_sec=turn_error_hold_sec,
|
||||
distance_interact_pause_sec=distance_interact_pause_sec,
|
||||
skip_prepare_route=skip_prepare_route,
|
||||
patrol_route_switch_laps=patrol_route_switch_laps,
|
||||
patrol_point_offset_radius=patrol_point_offset_radius,
|
||||
)
|
||||
self.game_worker.state_signal.connect(self.state_label.setText)
|
||||
self.game_worker.log_signal.connect(self.log)
|
||||
|
||||
Reference in New Issue
Block a user