mower-ng/mower/solvers/stronghold_protocol.py
2024-11-19 00:52:34 +08:00

62 lines
2.2 KiB
Python

import cv2
from mower.solvers.fight.mixin import FightMixin
from mower.utils import config
from mower.utils.graph import SceneGraphSolver
from mower.utils.image import cropimg, thres2
from mower.utils.scene import Scene
from mower.utils.vector import va
class StrongholdProtocol(SceneGraphSolver, FightMixin):
solver_name = "卫戍协议"
def run(self):
self.buy = True
self.depoly = True
return super().run()
def transition(self):
if (scene := self.scene()) == Scene.TERMINAL_MAIN:
self.terminal_entry("stronghold_protocol/entry.jpg")
elif scene == Scene.SP_MAIN:
if pos := self.find("stronghold_protocol/stop"):
self.tap(pos)
return
self.tap((1664, 911))
elif scene == Scene.SP_DEFENCE:
if pos := self.find("stronghold_protocol/start"):
self.tap(pos)
return
self.buy = True
self.deploy = True
self.tap((383, 948))
elif scene == Scene.SP_ACTION:
img = cropimg(config.recog.gray, ((1045, 24), (1063, 46)))
img = cv2.bitwise_not(thres2(img, 127))
if config.recog.num.number_int("secret_front", img=img) >= 2:
self.back()
return
if self.buy:
for pos in [(407, 540), (804, 513), (875, 431)]:
self.tap(pos, interval=0.5)
if not self.find("stronghold_protocol/medic"):
break
self.tap((1056, 482))
self.buy = False
return
if self.deploy:
for pos in [(1475, 524), (1058, 746)]:
self.swipe_ext([(1602, 989), pos], [500], up_wait=100, interval=0.4)
if self.drag_success():
self.swipe_ext(
[pos, va(pos, (300, 0))], [200], up_wait=100, interval=0.4
)
self.deploy = False
break
return
self.tap((1827, 93))
elif scene == Scene.SP_AUTO:
self.sleep()
else:
self.scene_graph_step(Scene.TERMINAL_MAIN)