62 lines
2.2 KiB
Python
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)
|