From 93400b525ee7ad35a8fc648a026759a4ed2852d2 Mon Sep 17 00:00:00 2001 From: Yinhr <3162443073@qq.com> Date: Sat, 25 Nov 2023 20:47:47 +0800 Subject: [PATCH 1/2] Upd: click left/right to wrong path --- assets/cn/rogue/path/PAGE_ROGUE_PATH.png | Bin 0 -> 7026 bytes assets/en/rogue/path/PAGE_ROGUE_PATH.png | Bin 0 -> 6424 bytes assets/share/rogue/path/CHECK_PROPAGATION.png | Bin 0 -> 8020 bytes assets/share/rogue/path/CHOOSE_LEFT.png | Bin 0 -> 10835 bytes assets/share/rogue/path/CHOOSE_RIGHT.png | Bin 0 -> 10457 bytes module/config/argument/args.json | 3 +- module/config/argument/argument.yaml | 2 +- module/config/config_generated.py | 2 +- module/config/i18n/en-US.json | 3 +- module/config/i18n/es-ES.json | 3 +- module/config/i18n/ja-JP.json | 3 +- module/config/i18n/zh-CN.json | 3 +- module/config/i18n/zh-TW.json | 3 +- tasks/rogue/assets/assets_rogue_path.py | 47 ++++++++++++++++++ tasks/rogue/entry/path.py | 24 ++++----- tasks/rogue/keywords/classes.py | 9 ++++ 16 files changed, 82 insertions(+), 20 deletions(-) create mode 100644 assets/cn/rogue/path/PAGE_ROGUE_PATH.png create mode 100644 assets/en/rogue/path/PAGE_ROGUE_PATH.png create mode 100644 assets/share/rogue/path/CHECK_PROPAGATION.png create mode 100644 assets/share/rogue/path/CHOOSE_LEFT.png create mode 100644 assets/share/rogue/path/CHOOSE_RIGHT.png diff --git a/assets/cn/rogue/path/PAGE_ROGUE_PATH.png b/assets/cn/rogue/path/PAGE_ROGUE_PATH.png new file mode 100644 index 0000000000000000000000000000000000000000..748d6b5dfbabec137a8c16fcbb7d627174825e80 GIT binary patch literal 7026 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 literal 0 HcmV?d00001 diff --git a/assets/share/rogue/path/CHECK_PROPAGATION.png b/assets/share/rogue/path/CHECK_PROPAGATION.png new file mode 100644 index 0000000000000000000000000000000000000000..7e56404141771284e30ef5b31ca6b3dd6243ba8e GIT binary patch literal 8020 zcmeHL`CF2C_kNJl7SVQ1O>3N)rYy~|gi>Ut%_hs5EU{9lY+Nb@b3p|G-$tFrDW})e z%55A&Yh1`EK~ccmYH~{rBV|!TQc_Sv76HFc*84Aff9m-KuIIWqoX>sEx$paYt{?aH zhAp#M1^@u;r$hTs0Kj7Kt4a3~6Y%2)hrDQxU$a6(M>`wd<-oh+vP)A%%@Ed}{>prG=ACSKt!~_=5N> z0YVt*R#4y`2^U1U8^d%+DWMB3EsQCClUL)`K=#F;T@toWh6Gbh$Th)$N`0jpeR zV#v19@Itn2tB=5=)+w*Ap%-d9()V%}BF%LW-TTf45sEXHzu}g6u%4kW%_g!;Ev(i$ zZ{LM$7mur;0MNZD?RSB^u~6koNoUXq@~16N1=xoqdhL@~Y0rt>$$o|$2HQ0`bJWje zz^v$D%8fC`AL=-&DO=wjtM^x#-h|jyeRqWUWZN|#!v7);Pr|FnqU2vT^~sA1Rhbh3 zZAXVhu>o&cr*u+h&;PrQ!}S@PVP>*&ENdsfkpy~Coppj@lzPo_J@8TqD~%=^bX+&2sS+yK3f_ahM%D zafxQAu!2OR?Hsme65Vj0t0mFF1c<>bBw9OqDdawUx%d_PhD3!$QbgorZKX8qUr2rr zKK_`y>Yl;QZ7q};F4lYW*(Ah`H7j`5Tv1Z|XzSsT?wc^P8n}GXIxg7g1yv_F#rCv9 zj5$(UkbBc%vZIipZ>4+tsPYyo1Yc1^E~Bq$H&4pomSU7~a{0%=%Es4a|HAAX>-pRR z00(b;cgT3*ewHH=?%zaq4#k^DA^AC66KeqYD`vxQsys8Ca#A$>PB}bOsCh2A&6enb zmWyBVx7j6p9f!>iA=JsX%+-b^ZDjQ#OcmKNN|k9R#-iS+=wvo_PF}P?ud!tkSJWjL zz+_{8`&S1S>IgB^mB+l&bvNX54aW>5#+}>jYSMg*hv)(RgS1fpTO2*5Xb-z=6}K(j zy)75oM(;iVgdJ;I_3^wHe+N3p;mEnIw=dSq)wJ++*-%dpUrlz#><|QjNG`&1wo2B>) zJ!o*Lok_wW034av3jL($sS0aUNU!ACKsB9IDwtX*fH||(4A(#+%UbvWoEXle3Y$MF zOI4cQ++~04$4n`NXuRyrGhxD6`TMkSyX1>HixzLEfb+cvT_MU*c4@ECNJ=e#rl;gM zCyVuX4lB3fiY`@=rN+#~iVwo0Dxgzjp1&BUz22R!Z2Qqlz9>q#)Gn9%T4n}Tao>Fv zb|sgugD+CtSe`LP_3mZS{o2k?`fR2^TRrBv1hqzAW1D(JG+n-!n>=l=H&MpT#C*QxLEk$n7}pCF#y=3)j0!E>jKyw1j?o%|fgjgrA4d*h>+r1P$e zaTOwoBXRX&Gp9P z`=LzL>F$NWr@w|KRA8Ilaa+NGHC2q1AhUJJ@lnUj#mCDwQI5S6*g`eBa^+ALIYD+e zX^K|{1_b97-Pu7MpwJ3YcTF^@tvIF~#2f&)_pSm(gkhXH$d0hphSR5fN8$WZAc|uY z3>b=x6K4|v?C%hLhC@(Cl)8idF*j+scMUIw;gtBy;&I!#`-%6XoCYqh3mgFQxs(Q6uUb?>_ntkgZ}!O z2a-0->t4nQ&c`FbWx>7fAlpR2#F`b`K4EegKrtSnOmRsjJVCwN$P<|O>R-kgOXu{P zhAdIyZliSmDZtJn5B=-+mxxHJS;h5EuQ~ZikEWXYs&4VhexNPJz2ZhfHG|WQNdWnt z$dGqp)%ZLinYXD23&HXh`^Kn99Ig1mS-!BPp1C- zxzEAQY-vKKX8;y4A(E4Sym+$6*-Rnu@ez?ir(fJn0ZD$qR8dw5%h%1y$yZDC_^s>f z6{k%SLe;GqWo^&kKSA=@xOLnE&@vVF&RC=OUW2`WQTut`@tD&~VD-50v&+QQY#5lZ zezl`pA~9_lOa-=40t+xsV7I5=Gobqmf1h8ko6SN!FZ|=w-Ap6jDI2KTfAtrm6eBzY zA;#ioPmYhJ+)&OrMA&je47Pqi=1jaGAmUfRizz^I!HN`Y{rUp&-1K0Iw;zBZM^@W& zHz8yY{jqP8WK>=8!Gbqb*96UFVInT{Paj@4bQYvT=y#({fp8#4iOV zh#8`}*fH4_Tj87v*z@_4O#vT+%Z_*H+}hNwd7)vZ4mTm5!v0fB#ZoIZ119e6O%~l5 z+zo$|EPM9iFs&60>G!DlKEgn_ASx{)&qNtq?l0xIdO^xpakE(WMDB|f;YNG$3T`?+ z>iIZ6ZcKOBv5)rA%)AfWMCo0HXm9=jZ!V_&G5OpCGy&i+s{r4!zxDxLmhnY}|3qDT z35SZphB3<_dW`Wyfvzm#1W=|cuzxP>*~u?5L6nO!!oIzE5mHb3np0)Xo!W3{Zt)I~ z#oK;|*qw20@W5Z_Z(W$iAarNJAs=zCH$EH6?BT{FLen3jW!H8pUKG0&J%?(tQ1yZH zJ3GmSq3jup`+t)_nz|kegsE)VvtFYr)m*S@^e6Sifl-SCr2B8v;kcL$eW>t62w?852`7k$4HvGz{ySB2~D87)*}f^ zA1we8?h1~~WTbP-zL~WDw%agKSn=zFSHvswFT(=gLPaP_lfDgQj9(&dF60?{ZFQ z+GdWjG0{v|g`Tz1q(Bkv=^~WvD)mfXr_MV%cuy^s^k|MVKc^mdNYx7D#N4&- zC4_G6lPfdKE*Nf(s`7Xoj7Ob^sUl_KwBaMwP&(HRKN{pp01Gz{4Q`3}g>l<1(AI3u zk-q9##UyT4n8^zsGA`e93d`)UjH)yKOEi@1AS;Ikii_qaU8?#~x}BK$(lE@fe$Lbs znpM|{GzMtWib=|`!}#xMm1F{s$Juw*;h$g>*qa-^Y97LEp;$`IibuA*-+_1Dj%4h( zy$eSYB90g~#$FO9G5tru^Jp61z{AcnO$wT&0;q zL%}%c7I6o%Ri8Uj1+b^b_g)fv@Gmm@Ti@oln=qZy!hf+Oj?Dx#1j*<-od4!bDy9;HzcO?8&DTw z-Ehc2`7Wi_=b8+KB4q-;45L4fGi7`S`sojZbz^y*Acr!-3KracmKiSI7W~yMPl_mM zDj@KIzm4X@G%kKc(qEE|v4hb5CRMPq{8&^MEWXG_7^qDg0DL)r>&Hvha9vQw0A;*{ zr%PtL=8wZ!5QL?;xN<@9u5Ea}+I1IB>nr~E$M-C747R{=gCPBT9LM(0wS!)wYhuDU zS2S2bK3Pas4!E2e2NxM9Eb7uj5syUIk~=s3qB%W5kEc>W*`+Er=Dx z7wn+Ni$JFFcv8EbOWnLT*A~&QmaBiLvL&U1937*LEsW-eH zpUiuZde66@krwC(G?lzDURtz39MXSH5U9l)Ecb$DoZtH>ekbS^HpWJ~;chiD(6&<- zuTswyp?2>Cm#i1pUT+RMRXQgcYqQ6PlW*`d9nX_NJfYdfq zT%ZZujfq&kA?YzSrQg4C%l?e83s1qY ztoH$hwwG}fuu^&4DZ}1rSU6=!s@EWA*YcLzjS_%;`t9SKuDzM+xEpHx(bQ%EeT(qk zz&%>WPwVyIPT4?e@AMmjSOuC#Q`8{TowP;QzidmJAtO>^{s_gSLC=sn-bNh8gG zh05uZ@BfDK5=JbEeS)a`k0|N9yMMTlYYQ%I%Vxt+nhxtKj_zH&ri-IhOib@(26Ku= zZAUcetU>A%KNR@9#GvY&n&WlUVvq~Vbdjct!y~%GB@>mLXakEtUm)0%n=C@0 zmJ+k#mzJqfOT~Yu(CX_}tloKqo|17&fiViHGTQdmRnA>8n@vObMtuoh2Jy^xD6(+a z#bO*1?SP|wkAAr1O!Cf{xuGI3@%!S`th!jFDY)k-RoDlZk3Ofnb~ft8D%W2xToPMz zZ&VA{RKDtGR|KZcRwFWfr2oDS7Q+&*KFaEr(GL16D$5b<22`3k@eQsShwVnz_Sr{;}eG=cFxB?22-RS zPa`Ogw_BK7g%#7*y55E3+^)TZ+3kJO!=*+l(vl>lyktqaW441YESAB;zHDGej>E~` zQ_17%x2acphNLG!MMQnIP`}rO9enyNC$r+Nc1x;h=l7t9-)RJ$v%|pZGdn?=LCm~q zfNJKjUO#t@=+~p8;|4vIgFOwGHy7oN*^Ua(>wcGKeUn5b(SpP4ljFT6NKMTGd6oC$ zho9K~0)8bo+R_f)2wpZ3WYpRm)2L9K|Fh`1J+6~A=+&>CXT2E{>wgKNPAdB?3Af943^~T&z3F09lU1In!BsH zmJP=CS687{1LCLj?hsa8-dVn$J$TDAEre|xZtEXc*^YL~US@k*km+~X)WOJu*a#Wn z!R9c# zO@otgW5$I$nvgOl4%kiFVSG}!&#ZpDXO1*-Uw|c7&%ypT!@o5JWfEOOad|*gBJ#v6 zu40E-O(kJ$s_F9jz&&e_HRT>(%g&g}nNoYECwWeamN|)ruJDk%Ikf2q(j91*ou#I5 zO9`f8x~}By3uz88`H422ZV#P-=H_rE(!FT^#_E)j`l$~7(@5OPrs{Kk-DwZKvA=8u zBTdLg(-@~}*jP`L?ecoCI4#&(QvXe)bnI-ENO+X<+57J|7hn0^v?>%AjmFjf8uD9d zsv?|>uRXcXl%whiT=o_*ujoCinmnr1T%5;s)pa+VFZ76eq^AY3x)G0%bK70Pd%#wC z@9dkHx-qzKg=j+_DJ1`=U;zOmMuVaGh@!s9i_iY};->??`>Xbz H`_KOYs#0e_ literal 0 HcmV?d00001 diff --git a/assets/share/rogue/path/CHOOSE_LEFT.png b/assets/share/rogue/path/CHOOSE_LEFT.png new file mode 100644 index 0000000000000000000000000000000000000000..307532c90f971e2ffcf950500902bfd802e190f7 GIT binary patch literal 10835 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 ButtonWrapper: - try: - return self._rogue_path_clicks[path] - except KeyError: - logger.critical(f'Invalid rogue path: {path}') - raise ScriptError + return self._rogue_path_clicks.get(path, CLICK_ELATION) def _get_selected_path(self, skip_first_screenshot=True) -> RoguePath | None: timeout = Timer(1, count=5).start() @@ -86,8 +83,8 @@ class RoguePathHandler(RogueUI): return None def _is_page_rogue_path(self) -> bool: - appear = [self.appear(button) for button in self._rogue_path_clicks.values()] - return all(appear) + appear = self.appear(PAGE_ROGUE_PATH) + return appear def _is_team_prepared(self) -> bool: """ @@ -110,7 +107,7 @@ class RoguePathHandler(RogueUI): or page_main if previous rogue run had bonus selected but didn't finish any domain """ logger.hr('Rogue path select', level=2) - path: RoguePath = RoguePath.find(path) + path: RoguePath = RoguePath.find_path(path) logger.info(f'Select path: {path}') entry = self._get_path_click(path) while 1: @@ -143,10 +140,13 @@ class RoguePathHandler(RogueUI): continue # Confirm path if self.appear(CONFIRM_PATH, interval=2): - if self._get_selected_path() == path: + selected_path = self._get_selected_path() + if selected_path == path: self.device.click(CONFIRM_PATH) continue - else: - logger.warning('Selected to the wrong path') - self.device.click(BACK) + elif selected_path.id < path.id: + self.device.click(CHOOSE_RIGHT) + continue + else: + self.device.click(CHOOSE_LEFT) continue diff --git a/tasks/rogue/keywords/classes.py b/tasks/rogue/keywords/classes.py index d9bd5f413..75dc3874a 100644 --- a/tasks/rogue/keywords/classes.py +++ b/tasks/rogue/keywords/classes.py @@ -2,6 +2,7 @@ from dataclasses import dataclass from typing import ClassVar from dev_tools.keyword_extract import UI_LANGUAGES +from module.exception import ScriptError from module.ocr.keyword import Keyword @@ -35,6 +36,14 @@ class RoguePath(Keyword): return [self.__getattribute__(f"{server}_parsed").replace("the", '') for server in UI_LANGUAGES if hasattr(self, f"{server}_parsed")] + @classmethod + def find_path(cls, name): + for instance in cls.instances.values(): + if name == instance.name: + return instance + # Not found + raise ScriptError(f'Cannot find a {cls.__name__} instance that matches "{name}"') + @dataclass(repr=False) class RogueResonance(Keyword): From 3c835cc3438e3f4510ba5b133e5bb87cdd61aa3e Mon Sep 17 00:00:00 2001 From: Yinhr <3162443073@qq.com> Date: Sat, 25 Nov 2023 23:11:23 +0800 Subject: [PATCH 2/2] Upd: choose the closet road --- tasks/rogue/entry/path.py | 56 ++++++++++++++++++++++++++++++++------- 1 file changed, 47 insertions(+), 9 deletions(-) diff --git a/tasks/rogue/entry/path.py b/tasks/rogue/entry/path.py index f6685b1a8..d406768bf 100644 --- a/tasks/rogue/entry/path.py +++ b/tasks/rogue/entry/path.py @@ -61,7 +61,28 @@ class RoguePathHandler(RogueUI): return buttons def _get_path_click(self, path: RoguePath) -> ButtonWrapper: - return self._rogue_path_clicks.get(path, CLICK_ELATION) + buttons = self._rogue_path_clicks + if ret := buttons.get(path): + return ret + else: + # choose the closest path + paths = list(buttons.keys()) + path_click = min(paths, key=lambda p: min(self._calculate_distance(p, path))) + return buttons.get(path_click) + + @staticmethod + def _calculate_distance(path_1: RoguePath, path_2: RoguePath): + """ + click times from path1 to path2 + + Returns: + tuple: (left_times, right_times) + """ + length = len(path_1.instances) + distance = path_1.id - path_2.id + left_times = distance % length + right_times = -distance % length + return left_times, right_times def _get_selected_path(self, skip_first_screenshot=True) -> RoguePath | None: timeout = Timer(1, count=5).start() @@ -96,6 +117,30 @@ class RoguePathHandler(RogueUI): logger.attr('TeamSlotsPrepared', slots) return slots > 0 + def _change_confirm_path(self, path: RoguePath, skip_first_screenshot=True) -> bool: + timeout = Timer(20, count=10).start() + selected_path_last = None + while 1: + if skip_first_screenshot: + skip_first_screenshot = False + else: + self.device.screenshot() + selected_path = self._get_selected_path() + if selected_path == path: + return True + elif selected_path != selected_path_last: + left_times, right_times = self._calculate_distance(selected_path, path) + if left_times <= right_times: + self.device.click(CHOOSE_LEFT) + else: + self.device.click(CHOOSE_RIGHT) + if timeout.reached(): + break + selected_path_last = selected_path + + logger.warning('Unable to change into chosen path') + return False + def rogue_path_select(self, path: str | RoguePath, skip_first_screenshot=True): """ Raises: @@ -140,13 +185,6 @@ class RoguePathHandler(RogueUI): continue # Confirm path if self.appear(CONFIRM_PATH, interval=2): - selected_path = self._get_selected_path() - if selected_path == path: + if self._change_confirm_path(path): self.device.click(CONFIRM_PATH) continue - elif selected_path.id < path.id: - self.device.click(CHOOSE_RIGHT) - continue - else: - self.device.click(CHOOSE_LEFT) - continue