Skip to content

Commit fc372c9

Browse files
author
gfwong
committed
Introduce "Smart Place" and "One-Click Remove" functionality for Shikigami management, with assets and task flow enhancements.
1 parent 794231a commit fc372c9

6 files changed

Lines changed: 66 additions & 25 deletions

File tree

File renamed without changes.
File renamed without changes.

tasks/KekkaiActivation/a/image.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,5 +214,23 @@
214214
"method": "Template matching",
215215
"threshold": 0.8,
216216
"description": "斗鱼3"
217+
},
218+
{
219+
"itemName": "smart_remove",
220+
"imageName": "a_smart_remove.png",
221+
"roiFront": "1148,505,45,48",
222+
"roiBack": "1139,498,60,61",
223+
"method": "Template matching",
224+
"threshold": 0.8,
225+
"description": "一键卸下(式神育成)"
226+
},
227+
{
228+
"itemName": "smart_place",
229+
"imageName": "a_smart_place.png",
230+
"roiFront": "1149,507,44,45",
231+
"roiBack": "1123,478,100,100",
232+
"method": "Template matching",
233+
"threshold": 0.8,
234+
"description": "智能放入(式神育成)"
217235
}
218236
]

tasks/KekkaiActivation/assets.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,10 @@ class KekkaiActivationAssets:
7878
I_A_DEMOUNT = RuleImage(roi_front=(939,575,55,47), roi_back=(903,551,107,91), threshold=0.8, method="Template matching", file="./tasks/KekkaiActivation/a/a_a_demount.png")
7979
# 斗鱼3
8080
I_A_HARVEST_FISH_3 = RuleImage(roi_front=(891,165,57,39), roi_back=(854,128,160,174), threshold=0.8, method="Template matching", file="./tasks/KekkaiActivation/a/a_a_harvest_fish_3.png")
81+
# 一键卸下(式神育成)
82+
I_SMART_REMOVE = RuleImage(roi_front=(1148,505,45,48), roi_back=(1139,498,60,61), threshold=0.8, method="Template matching", file="./tasks/KekkaiActivation/a/a_smart_remove.png")
83+
# 智能放入(式神育成)
84+
I_SMART_PLACE = RuleImage(roi_front=(1149,507,44,45), roi_back=(1123,478,100,100), threshold=0.8, method="Template matching", file="./tasks/KekkaiActivation/a/a_smart_place.png")
8185

8286

8387
# Image Rule Assets

tasks/KekkaiActivation/script_task.py

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -361,25 +361,62 @@ def _card_not_found(self):
361361
self.set_next_run("KekkaiActivation", target=next_run)
362362
raise TaskEnd
363363

364+
def _smart_place_shikigami(self, shikigami_class: ShikigamiClass = ShikigamiClass.N, timeout: int = 30):
365+
"""
366+
使用智能放入和一键卸下放置式神 (替代逐个手动: unset_shikigami_max_lv + set_shikigami)
367+
前提: 已在式神育成界面
368+
"""
369+
logger.info('Smart place: start')
370+
# 1) 一键卸下现有式神
371+
self.screenshot()
372+
if self.appear(self.I_SMART_REMOVE):
373+
logger.info('Smart place: one-click remove existing shikigami')
374+
self.appear_then_click(self.I_SMART_REMOVE, interval=2)
375+
time.sleep(1)
376+
377+
# 2) 切换式神分类
378+
self.switch_shikigami_class(shikigami_class)
379+
380+
# 3) 智能放入
381+
timer = Timer(timeout).start()
382+
while 1:
383+
self.screenshot()
384+
# 放置完成: I_RS_NO_ADD 从屏幕上消失表示已放入式神
385+
if not self.appear(self.I_RS_NO_ADD):
386+
logger.info('Smart place: shikigami placed successfully')
387+
return True
388+
if timer.reached():
389+
logger.warning('Smart place: timeout')
390+
return False
391+
# 确认弹窗
392+
if self.appear_then_click(self.I_U_CONFIRM_SMALL, interval=0.5):
393+
continue
394+
# SP式神替换确认
395+
if self.appear_then_click(self.I_U_CIRCLE_ALTERNATE, interval=2.5):
396+
self.appear_then_click(self.I_U_CONFIRM_ALTERNATE, interval=1.5)
397+
continue
398+
# 点击智能放入
399+
if self.appear_then_click(self.I_SMART_PLACE, interval=2):
400+
logger.info('Smart place: clicked smart place button')
401+
continue
402+
364403
def check_max_lv(self, shikigami_class: ShikigamiClass = ShikigamiClass.N):
365404
"""
366405
在结界界面,进入式神育成,检查是否有满级的,如果有就换下一个
406+
通过智能放入和一键卸下完成,不再逐个手动点击
367407
退出的时候还是结界界面
368408
:return:
369409
"""
370410
self.realm_goto_grown()
371411
if self.appear(self.I_RS_LEVEL_MAX):
372-
# 存在满级的式神
373-
logger.info('Exist max level shikigami and replace it')
374-
self.unset_shikigami_max_lv()
375-
self.switch_shikigami_class(shikigami_class)
376-
self.set_shikigami(shikigami_order=7, stop_image=self.I_RS_NO_ADD)
412+
# 存在满级的式神 -> 智能换入
413+
logger.info('Exist max level shikigami, smart replace')
414+
self._smart_place_shikigami(shikigami_class)
377415
else:
378416
logger.info('No max level shikigami')
379417
if self.detect_no_shikigami():
380418
logger.warning('There are no any shikigami grow room')
381-
self.switch_shikigami_class(shikigami_class)
382-
self.set_shikigami(shikigami_order=7, stop_image=self.I_RS_NO_ADD)
419+
self._smart_place_shikigami(shikigami_class)
383420

384421
# 回到结界界面
385422
while 1:

tasks/KekkaiUtilize/utilize/image.json

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -205,23 +205,5 @@
205205
"method": "Template matching",
206206
"threshold": 0.8,
207207
"description": "description"
208-
},
209-
{
210-
"itemName": "auto_switch_up",
211-
"imageName": "utilize_auto_switch_up.png",
212-
"roiFront": "1149,507,44,45",
213-
"roiBack": "1123,478,100,100",
214-
"method": "Template matching",
215-
"threshold": 0.8,
216-
"description": "智能放入"
217-
},
218-
{
219-
"itemName": "auto_switch_down",
220-
"imageName": "utilize_auto_switch_down.png",
221-
"roiFront": "1148,505,45,48",
222-
"roiBack": "1139,498,60,61",
223-
"method": "Template matching",
224-
"threshold": 0.8,
225-
"description": "一键卸下"
226208
}
227209
]

0 commit comments

Comments
 (0)