add 包满回城

This commit is contained in:
王鹏
2026-04-10 14:36:04 +08:00
parent 8c1460a582
commit afc0e05924
10 changed files with 53 additions and 1 deletions

View File

@@ -295,6 +295,7 @@ class GameLoopWorker(QThread):
"""游戏状态主循环:支持状态监控、巡逻打怪、自动打怪、任务跟随、飞行模式、巡逻点录制"""
state_signal = pyqtSignal(str)
log_signal = pyqtSignal(str)
stop_signal = pyqtSignal() # 炉石回城后触发,等同于按下停止按钮
def __init__(
self,
@@ -372,6 +373,7 @@ class GameLoopWorker(QThread):
eat_max_wait_sec=self.eat_max_wait_sec,
stop_check=lambda: not self.running,
)
self.bot_move._on_hearthstone_stop = self.stop_signal.emit
except ImportError as e:
self.log_signal.emit(f"❌ 巡逻打怪依赖加载失败: {e}")
return
@@ -433,6 +435,7 @@ class GameLoopWorker(QThread):
mount_key=str(layout.get("mount_key", "x") or "x"),
mount_hold_sec=float(layout.get("mount_hold_sec", 1.6)),
mount_retry_after_sec=float(layout.get("mount_retry_after_sec", 2.0)),
enable_mount=bool(layout.get("enable_mount", True)),
)
self.logistics_manager = LogisticsManager(route_file=self.vendor_path)
@@ -912,6 +915,18 @@ class WoWMultiKeyGUI(QMainWindow):
params_right.addRow("吃面包血量阈值:", self.eat_hp_threshold_spin)
params_right.addRow("吃面包最长等待:", self.eat_max_wait_spin)
self.gs_hearthstone_key = QLineEdit()
self.gs_hearthstone_key.setPlaceholderText("如 b")
self.gs_hearthstone_key.setMaxLength(16)
self.gs_hearthstone_key.setText("b")
self.gs_bag_full_hearthstone = QCheckBox("包满时用炉石回城并停止")
self.gs_bag_full_hearthstone.setChecked(False)
params_right.addRow("炉石按键 (hearthstone_key):", self.gs_hearthstone_key)
params_right.addRow("包满是否炉石回城:", self.gs_bag_full_hearthstone)
self.gs_enable_mount = QCheckBox("启用上马")
self.gs_enable_mount.setChecked(True)
params_right.addRow("是否上马 (enable_mount):", self.gs_enable_mount)
self.gs_mount_key = QLineEdit()
self.gs_mount_key.setPlaceholderText("如 x")
self.gs_mount_key.setMaxLength(16)
@@ -965,7 +980,10 @@ class WoWMultiKeyGUI(QMainWindow):
self.gs_offset_left.setValue(cfg.get('offset_left', 20))
self.gs_offset_top.setValue(cfg.get('offset_top', 45))
self.gs_mount_key.setText(str(cfg.get('mount_key', 'x') or 'x'))
self.gs_enable_mount.setChecked(bool(cfg.get('enable_mount', True)))
self.gs_mount_hold.setValue(float(cfg.get('mount_hold_sec', 1.6)))
self.gs_hearthstone_key.setText(str(cfg.get('hearthstone_key', 'b') or 'b'))
self.gs_bag_full_hearthstone.setChecked(bool(cfg.get('bag_full_hearthstone', False)))
self.gs_mount_retry.setValue(float(cfg.get('mount_retry_after_sec', 2.0)))
except Exception as e:
self.log(f"加载参数配置失败: {e}")
@@ -994,8 +1012,11 @@ class WoWMultiKeyGUI(QMainWindow):
cfg['offset_left'] = self.gs_offset_left.value()
cfg['offset_top'] = self.gs_offset_top.value()
cfg['mount_key'] = (self.gs_mount_key.text().strip() or 'x')
cfg['enable_mount'] = self.gs_enable_mount.isChecked()
cfg['mount_hold_sec'] = float(self.gs_mount_hold.value())
cfg['mount_retry_after_sec'] = float(self.gs_mount_retry.value())
cfg['hearthstone_key'] = (self.gs_hearthstone_key.text().strip() or 'b')
cfg['bag_full_hearthstone'] = self.gs_bag_full_hearthstone.isChecked()
path = save_layout_config(cfg)
# bot 参数写入主配置文件
self.config = self.config or {}
@@ -1444,6 +1465,7 @@ class WoWMultiKeyGUI(QMainWindow):
)
self.game_worker.state_signal.connect(self.state_label.setText)
self.game_worker.log_signal.connect(self.log)
self.game_worker.stop_signal.connect(self._stop_game_worker)
self.game_worker.finished.connect(self._on_game_loop_finished)
self.game_worker.start()
self.game_start_btn.setEnabled(False)