§
    'j®j°A  ã                  óX  — d Z ddlmZ ddlmZ ddlmZ ddlZddlm	Z	 ddl
mZmZmZmZmZmZmZ ddlZ	 ddlmZ n# e$ r dZY nw xY wdd	lmZmZ dd
lmZmZ ddlmZmZm Z m!Z!m"Z"m#Z#  G d„ de$e¦  «        Z% G d„ de$e¦  «        Z&e G d„ d¦  «        ¦   «         Z' G d„ d¦  «        Z(dS )u�  AutoPOE2 - Minimap Navigation Adapter (Doc 69 Â§3.4 / Stage 5 In-Map).
================================================================================
Bá»™ thÃ­ch á»©ng Ä‘iá»�u hÆ°á»›ng Minimap káº¿t ná»‘i MinimapFogExplorer vá»›i Character Controller:
- Tiáº¿p nháº­n áº£nh toÃ n mÃ n hÃ¬nh hoáº·c crop Minimap.
- Sá»­ dá»¥ng MinimapFogExplorer Ä‘á»‹nh vá»‹ Frontier má»¥c tiÃªu tá»‘i Æ°u.
- Chuyá»ƒn Ä‘á»•i vector hÆ°á»›ng di chuyá»ƒn thÃ nh gÃ³c Ä‘á»™ vÃ  tá»• há»£p phÃ­m 8 hÆ°á»›ng WASD
  (W, WD, D, SD, S, SA, A, WA) hoáº·c phÃ­m dá»«ng NONE.
- Há»— trá»£ cáº£ 2 cháº¿ Ä‘á»™ chiáº¿u: Direct Screen Projection vÃ  Isometric World Projection.
- Tá»± Ä‘á»™ng cáº¯t vÃ¹ng Minimap tá»« áº£nh toÃ n mÃ n hÃ¬nh thÃ´ng qua Dynamic Resolution Scaler
  (Windowed 1189x891 PID 22632, 1440p, 1080p, 720p).
- Ä�áº£m báº£o thá»�i gian giá»¯ phÃ­m (Dwell time) >= 300ms tuÃ¢n thá»§ INV-WASD-MIN-DWELL.

TuÃ¢n thá»§ nghiÃªm ngáº·t:
- Rule 1: Python 3.11 Cold Path Tier 2.
- Rule 4: Module hÃ³a Ä‘á»™c láº­p tráº§n file < 500 dÃ²ng.
- Rule 16: Google Docstrings chuáº©n má»±c.
- Báº¥t biáº¿n: INV-WASD-MIN-DWELL, INV-WASD-NO-BLIND-LMB, INV-NAV-FRONTIER-MOMENTUM.
é    )Úannotations)Ú	dataclass)ÚEnumN)ÚPath)ÚAnyÚCallableÚDictÚListÚOptionalÚTupleÚUnion)ÚImage)ÚCameraMinimapProfileÚMinimapCameraCalibrator)ÚExplorationTargetÚMinimapFogExplorer)ÚCoordinateScalerÚ
ResolutionÚ	RES_1080PÚ	RES_1440PÚRES_WINDOWED_DEFAULTÚresolve_resolutionc                  ó6   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS )ÚWasdDirectionuC   8 hÆ°á»›ng di chuyá»ƒn WASD chuáº©n vÃ  tráº¡ng thÃ¡i Ä‘á»©ng yÃªn.ÚWÚWDÚDÚSDÚSÚSAÚAÚWAÚ N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚNORTHÚ
NORTH_EASTÚEASTÚ
SOUTH_EASTÚSOUTHÚ
SOUTH_WESTÚWESTÚ
NORTH_WESTÚNONE© ó    úPC:\Projects\AutoPOE2\src\assistant_tool\navigation\minimap_navigation_adapter.pyr   r   5   sA   € € € € € ØMÐMØ€EØ€JØ€DØ€JØ€EØ€JØ€DØ€JØ€D€D€Dr2   r   c                  ó   — e Zd ZdZdZdZdS )ÚProjectionModeu/   Cháº¿ Ä‘á»™ chiáº¿u gÃ³c di chuyá»ƒn sang WASD.ÚDIRECT_SCREENÚISOMETRIC_WORLDN)r$   r%   r&   r'   r6   r7   r1   r2   r3   r5   r5   B   s   € € € € € Ø9Ð9Ø#€MØ'€O€O€Or2   r5   c                  ó|   — e Zd ZU dZded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   dZded<   dS )ÚWasdCommanduQ   Lá»‡nh Ä‘iá»�u khiá»ƒn di chuyá»ƒn bÃ n phÃ­m WASD Ä‘Æ°á»£c sinh ra tá»« Minimap.r   Ú	directionzTuple[str, ...]ÚkeysúTuple[float, float]ÚvectorÚfloatÚ	angle_degÚ	dwell_seczTuple[int, int]Úscreen_targetÚminimap_targetÚcoverage_ratioÚboolÚis_fully_exploredç        Úutility_scoreN)r$   r%   r&   r'   Ú__annotations__rG   r1   r2   r3   r9   r9   H   s•   € € € € € € à[Ð[ØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØ"Ð"Ð"Ñ"Ø#Ð#Ð#Ñ#ØÐÐÑØÐÐÑØ€MÐÐÐÑÐÐr2   r9   c                  ó²   — e Zd ZdZeddej        ddddfd=d„Zd>d„Z	 	 d?d@d„Z	dAd „Z
dBd#„ZdCd'„Zeej        d(fdDd.„¦   «         Z	 	 dEdFd7„Z	 dGdHd8„Z	 dIdJd<„ZdS )KÚMinimapNavigationAdapteru]   Bá»™ chuyá»ƒn Ä‘á»•i vÃ  Ä‘iá»�u phá»‘i dáº«n Ä‘Æ°á»�ng sÆ°Æ¡ng mÃ¹ cho Character Controller.é@   çffffffÖ?gffffffî?NÚtarget_resolutionú"Union[Resolution, Tuple[int, int]]Ú
grid_widthÚintÚgrid_heightÚprojection_moder5   Údefault_dwell_secr>   Útarget_coverageÚexplorerúOptional[MinimapFogExplorer]Ú
calibratorú!Optional[MinimapCameraCalibrator]ÚreturnÚNonec	                óä   — t          |¦  «        | _        || _        t          dt	          |¦  «        ¦  «        | _        || _        || _        |pt          ||| j        | j        ¬¦  «        | _	        dS )uÆ  Khá»Ÿi táº¡o Minimap Navigation Adapter.

        Args:
            target_resolution: Ä�á»™ phÃ¢n giáº£i game client Ä‘ang cháº¡y.
            grid_width: Chiá»�u ngang lÆ°á»›i thÃ¡m hiá»ƒm.
            grid_height: Chiá»�u dá»�c lÆ°á»›i thÃ¡m hiá»ƒm.
            projection_mode: Cháº¿ Ä‘á»™ chiáº¿u gÃ³c (DIRECT_SCREEN hoáº·c ISOMETRIC_WORLD).
            default_dwell_sec: Thá»�i gian giá»¯ phÃ­m máº·c Ä‘á»‹nh (tá»‘i thiá»ƒu 0.30s).
            target_coverage: NgÆ°á»¡ng bao phá»§ hoÃ n thÃ nh map (máº·c Ä‘á»‹nh 95%).
            explorer: Thá»ƒ hiá»‡n MinimapFogExplorer tÃ¹y chá»�n (náº¿u cÃ³ sáºµn).
            calibrator: Bá»™ hiá»‡u chuáº©n gÃ³c xoay vÃ  zoom camera/minimap tÃ¹y chá»�n.
        g333333Ó?)rO   rQ   rM   rT   N)
r   Ú
resolutionrR   Úmaxr>   rS   rT   rW   r   rU   )	ÚselfrM   rO   rQ   rR   rS   rT   rU   rW   s	            r3   Ú__init__z!MinimapNavigationAdapter.__init__Z   sy   € õ. -Ð->Ñ?Ô?ˆŒØ.ˆÔÝ!$ T­5Ð1BÑ+CÔ+CÑ!DÔ!DˆÔØ.ˆÔØ$ˆŒà ð 
Õ$6Ø!Ø#Ø"œoØ Ô0ð	%
ñ %
ô %
ˆŒˆˆr2   Ú	res_inputc                óê   — t          |¦  «        | _        | j                             | j        ¦  «         | j        �8t          t          | j        ¬¦  «        | j        _        | j        | j        _        dS dS )u3   Cáº­p nháº­t Ä‘á»™ phÃ¢n giáº£i mÃ n hÃ¬nh runtime.N)Ú
source_resÚ
target_res)r   r\   rU   Úset_target_resolutionrW   r   r   Úscaler)r^   r`   s     r3   Úset_resolutionz'MinimapNavigationAdapter.set_resolution~   sn   € å,¨YÑ7Ô7ˆŒØŒ×+Ò+¨D¬OÑ<Ô<Ð<ØŒ?Ð&Ý%5Ý$Øœ?ð&ñ &ô &ˆDŒOÔ"ð *.¬ˆDŒOÔ&Ð&Ð&ð 'Ð&r2   Ú
zoom_levelúOptional[float]Úorientation_degc                ó˜   — | j         €&t          |�|nd|�|nd| j        ¬¦  «        | _         dS | j                              ||¬¦  «         dS )uD   Cáº­p nháº­t hoáº·c khá»Ÿi táº¡o bá»™ hiá»‡u chuáº©n camera/minimap.Ng      ð?rF   )Ú	base_zoomÚbase_orientation_degrM   )rg   ri   )rW   r   r\   Úset_calibration)r^   rg   ri   s      r3   Úset_camera_calibrationz/MinimapNavigationAdapter.set_camera_calibration‰   su   € ð Œ?Ð"Ý5Ø(2Ð(>˜*˜*ÀCØ8GÐ8S _ _ÐY\Ø"&¤/ðñ ô ˆDŒOˆOˆOð ŒO×+Ò+Ø%Ø /ð ,ñ ô ð ð ð r2   Úmap_nameÚstrúDict[str, Any]c                ó¶  ‡— |                      ¦   «                              ¦   «         Š|d| j        | j        dœ}t	          ˆfd„dD ¦   «         ¦  «        rd|d<   d| _        d| _        n]t	          ˆfd	„d
D ¦   «         ¦  «        rd|d<   d| _        d| _        n.t	          ˆfd„dD ¦   «         ¦  «        rd|d<   d| _        d| _        | j        |d<   | j        |d<   |S )u]  Ä�á»“ng bá»™ Ä‘áº·c tÃ­nh Ä‘á»‹a hÃ¬nh má»Ÿ cá»§a cÃ¡c map T15 cho Monk CI (Doc 56 / CMD-DIV3-STAGE3-STAGE5-REG1-20260918).
        
        Tá»‘i Æ°u hÃ³a gÃ³c quÃ©t Frontier Fog vÃ  dwell time theo tá»«ng dáº¡ng layout:
        - Map má»Ÿ rá»™ng (Deserted, Dunes, Plains, Beach): Dwell dÃ i hÆ¡n (0.45s), tÄƒng ngÆ°á»¡ng bao phá»§ 92%.
        - Map phÃ¡o Ä‘Ã i/má»� Ä‘Ã¡ (Fortress, Mineshaft, Bastion): Dwell vá»«a pháº£i (0.35s), tÄƒng máº­t Ä‘á»™ quÃ©t Ä‘á»ƒ phÃ¡t hiá»‡n ngÃ¡ch.
        - Map Ä‘áº§m láº§y/dÃ²ng suá»‘i (Creek, Marsh, Riverbank): Dwell 0.38s, xá»­ lÃ½ Ä‘á»‹a hÃ¬nh quanh co.
        ÚSTANDARD)ro   Úlayout_typer@   rT   c              3  ó    •K  — | ]}|‰v V — Œ	d S ©Nr1   ©Ú.0ÚkÚ
name_lowers     €r3   ú	<genexpr>zIMinimapNavigationAdapter.apply_map_layout_intelligence.<locals>.<genexpr>ª   s'   øè è € ÐQÐQ 1ˆq�JˆÐQÐQÐQÐQÐQÐQr2   )ÚdesertedÚdunesÚplainsÚbeachÚ	WIDE_OPENrt   gÍÌÌÌÌÌÜ?gq=
×£pí?c              3  ó    •K  — | ]}|‰v V — Œ	d S rv   r1   rw   s     €r3   r{   zIMinimapNavigationAdapter.apply_map_layout_intelligence.<locals>.<genexpr>®   s'   øè è € ÐOÐO Q��j�ÐOÐOÐOÐOÐOÐOr2   )ÚfortressÚ	mineshaftÚbastionÚSEMI_OPEN_CORRIDORrL   gÍÌÌÌÌÌì?c              3  ó    •K  — | ]}|‰v V — Œ	d S rv   r1   rw   s     €r3   r{   zIMinimapNavigationAdapter.apply_map_layout_intelligence.<locals>.<genexpr>²   s'   øè è € ÐJÐJ Q��j�ÐJÐJÐJÐJÐJÐJr2   )ÚcreekÚmarshÚ	riverbankÚWETLAND_MEANDERçR¸…ëQØ?r@   rT   )ÚlowerÚstriprS   rT   Úany)r^   ro   Úsettingsrz   s      @r3   Úapply_map_layout_intelligencez6MinimapNavigationAdapter.apply_map_layout_intelligence›   s&  ø€ ð —^’^Ñ%Ô%×+Ò+Ñ-Ô-ˆ
à Ø%ØÔ/Ø#Ô3ð	
ð 
ˆõ ÐQÐQÐQÐQÐ(PÐQÑQÔQÑQÔQð 	(Ø&1ˆH�]Ñ#Ø%)ˆDÔ"Ø#'ˆDÔ Ð ÝÐOÐOÐOÐOÐ*NÐOÑOÔOÑOÔOð 	(Ø&:ˆH�]Ñ#Ø%)ˆDÔ"Ø#'ˆDÔ Ð ÝÐJÐJÐJÐJÐ*IÐJÑJÔJÑJÔJð 	(Ø&7ˆH�]Ñ#Ø%)ˆDÔ"Ø#'ˆDÔ à $Ô 6ˆ�ÑØ&*Ô&:ˆÐ"Ñ#Øˆr2   Úocr_textrD   c                óº   — | j         €t          | j        ¬¦  «        | _         | j                              |¦  «        }|�| j                              |¬¦  «         dS dS )u4   Tá»± Ä‘á»™ng phÃ¡t hiá»‡n zoom tá»« text banner HUD.N)rM   )rg   TF)rW   r   r\   Údetect_zoom_from_banner_textrm   )r^   r‘   Údetecteds      r3   Úauto_calibrate_from_hudz0MinimapNavigationAdapter.auto_calibrate_from_hud»   s\   € àŒ?Ð"Ý5ÈÌÐXÑXÔXˆDŒOØ”?×?Ò?ÀÑIÔIˆØÐØŒO×+Ò+°xÐ+Ñ@Ô@Ð@Ø�4Øˆur2   Úfullscreen_imgú)Union[np.ndarray, Image.Image, str, Path]úImage.Imagec                óŽ  — | j         j        \  }}}}t          |t          j        ¦  «        rÁ|j        dd…         \  }}t          dt          |dz
  |¦  «        ¦  «        }t          dt          |dz
  |¦  «        ¦  «        }	t          |dz   t          ||¦  «        ¦  «        }
t          |	dz   t          ||¦  «        ¦  «        }||	|…||
…f         }t          �t          j	        |¦  «        S |S t          |t          t          f¦  «        rt          j        |¦  «        }n|}|j        \  }}t          dt          |dz
  |¦  «        ¦  «        }t          dt          |dz
  |¦  «        ¦  «        }	t          |dz   t          ||¦  «        ¦  «        }
t          |	dz   t          ||¦  «        ¦  «        }|                     ||	|
|f¦  «        S )u\   TrÃ­ch xuáº¥t vÃ¹ng áº£nh Minimap gÃ³c trÃªn bÃªn pháº£i tá»« áº£nh chá»¥p toÃ n mÃ n hÃ¬nh.Né   r   é   )rU   Úminimap_screen_bboxÚ
isinstanceÚnpÚndarrayÚshaper]   Úminr   Ú	fromarrayrp   r   ÚopenÚsizeÚcrop)r^   r–   Úbx1Úby1Úbx2Úby2ÚhÚwÚcx1Úcy1Úcx2Úcy2Úcrop_arrÚpil_imgs                 r3   Úextract_minimap_cropz-MinimapNavigationAdapter.extract_minimap_cropÅ   sž  € ð
 "œ]Ô>ÑˆˆS�#�så�n¥b¤jÑ1Ô1ð 	%Ø!Ô'¨¨¨Ô+‰DˆAˆqÝ�a�˜Q ™U C™œÑ)Ô)ˆCÝ�a�˜Q ™U C™œÑ)Ô)ˆCÝ�c˜A‘g�s 1 c™{œ{Ñ+Ô+ˆCÝ�c˜A‘g�s 1 c™{œ{Ñ+Ô+ˆCØ% c¨# g¨s°3¨wÐ&6Ô7ˆHÝÐ Ý” xÑ0Ô0Ð0ØˆOÝ˜­­d¨Ñ4Ô4ð 	%Ý”j Ñ0Ô0ˆGˆGà$ˆGàŒ|‰ˆˆ1õ �!•S˜˜Q™ ‘_”_Ñ%Ô%ˆÝ�!•S˜˜Q™ ‘_”_Ñ%Ô%ˆÝ�#˜‘'�3˜q #™;œ;Ñ'Ô'ˆÝ�#˜‘'�3˜q #™;œ;Ñ'Ô'ˆà�|Š|˜S # s¨CÐ0Ñ1Ô1Ð1r2   gš™™™™™©?ÚdxÚdyÚmodeÚdeadzoneú,Tuple[WasdDirection, Tuple[str, ...], float]c           	     ól  — t          j        | |¦  «        }||k     rt          j        ddfS | |z  }||z  }|t          j        k    �rbd}||z
  |z  }||z   |z  }	d}
g }|	|
k    r|                     d¦  «         n|	|
 k     r|                     d¦  «         ||
k    r|                     d¦  «         n||
 k     r|                     d¦  «         d	                     t          |d
„ ¬¦  «        ¦  «        }t          j	        t          j
        t          j        t          j        t          j        t          j        t          j        t          j        dœ}|                     |t          j        ¦  «        }t          j        t          j        |	|¦  «        ¦  «        dz  }|t)          |¦  «        |fS t          j        t          j        ||¦  «        ¦  «        dz  }d|k    s|dk     rt          j        d|fS d|cxk    rdk     rn nt          j        d|fS d|cxk    rdk     rn nt          j        d|fS d|cxk    rdk     rn nt          j        d|fS d|cxk    rdk     rn nt          j        d|fS d|cxk    rdk     rn nt          j        d|fS d|cxk    rdk     rn nt          j	        d|fS t          j
        d|fS )u­  Chuyá»ƒn Ä‘á»•i vector (dx, dy) thÃ nh 8 hÆ°á»›ng WASD vÃ  gÃ³c Ä‘á»™.

        Args:
            dx: Ä�á»™ lá»‡ch theo trá»¥c X.
            dy: Ä�á»™ lá»‡ch theo trá»¥c Y.
            mode: Cháº¿ Ä‘á»™ chiáº¿u DIRECT_SCREEN hoáº·c ISOMETRIC_WORLD.
            deadzone: NgÆ°á»¡ng vÃ¹ng cháº¿t khÃ´ng phÃ¡t lá»‡nh.

        Returns:
            Tuple[WasdDirection, Tuple[str, ...], float]: (hÆ°á»›ng, phÃ­m, gÃ³c_deg).
        r1   rF   gß'Üež æ?r‹   r   r   r   r!   r#   c                ó0   — g d¢                      | ¦  «        S )N)r   r   r!   r   )Úindex)ry   s    r3   ú<lambda>zCMinimapNavigationAdapter.vector_to_8way_direction.<locals>.<lambda>  s   € Ð<PÐ<PÐ<P×<VÒ<VÐWXÑ<YÔ<Y€ r2   )Úkey)r   r   r   r   r   r    r!   r"   g     €v@g     u@g     €6@)r   g     àP@)r   r   g      \@)r   g     °c@)r   r!   g     Pi@)r!   g     ðn@)r   r!   g     Hr@)r   )r   r   )ÚmathÚhypotr   r0   r5   r7   ÚappendÚjoinÚsortedr(   r)   r*   r+   r,   r-   r.   r/   ÚgetÚdegreesÚatan2Útuple)r³   r´   rµ   r¶   ÚnormÚndxÚndyÚ	inv_sqrt2ÚsxÚsyÚ	thresholdÚ	keys_listÚcomboÚmappingr:   r?   s                   r3   Úvector_to_8way_directionz1MinimapNavigationAdapter.vector_to_8way_directionå   s)  € õ$ Œz˜"˜bÑ!Ô!ˆØ�(Š?ˆ?Ý Ô% r¨3Ð.Ð.à�4‰iˆØ�4‰iˆà•>Ô1Ò1Ñ1à"ˆIØ˜‘)˜yÑ(ˆBØ˜‘)˜yÑ(ˆBØˆIà#%ˆIØ�IŠ~ˆ~Ø× Ò  Ñ%Ô%Ð%Ð%Ø�y�j’�Ø× Ò  Ñ%Ô%Ð%à�IŠ~ˆ~Ø× Ò  Ñ%Ô%Ð%Ð%Ø�y�j’�Ø× Ò  Ñ%Ô%Ð%ð —G’G�F 9Ð2YÐ2YÐZÑZÔZÑ[Ô[ˆEå"Ô(Ý#Ô.Ý"Ô'Ý#Ô.Ý"Ô(Ý#Ô.Ý"Ô'Ý#Ô.ð	ð 	ˆGð  Ÿš E­=Ô+=Ñ>Ô>ˆIÝœ¥d¤j°°RÑ&8Ô&8Ñ9Ô9¸UÑBˆIØ�e IÑ.Ô.°	Ð9Ð9õ
 ”\¥$¤*¨S°#Ñ"6Ô"6Ñ7Ô7¸5Ñ@ˆ	ð �IÒÐ ¨TÒ!1Ð!1Ý Ô% v¨yÐ8Ð8Ø�9Ð#Ð#Ò#Ð#˜tÒ#Ð#Ð#Ð#Ð#Ý Ô+¨Z¸ÐBÐBØ�9Ð$Ð$Ò$Ð$˜uÒ$Ð$Ð$Ð$Ð$Ý Ô&¨°	Ð9Ð9Ø�IÐ%Ð%Ò%Ð% Ò%Ð%Ð%Ð%Ð%Ý Ô+¨Z¸ÐBÐBØ�IÐ%Ð%Ò%Ð% Ò%Ð%Ð%Ð%Ð%Ý Ô% v¨yÐ8Ð8Ø�IÐ%Ð%Ò%Ð% Ò%Ð%Ð%Ð%Ð%Ý Ô+¨Z¸ÐBÐBØ�IÐ%Ð%Ò%Ð% Ò%Ð%Ð%Ð%Ð%Ý Ô&¨°	Ð9Ð9ÝÔ'¨°YÐ>Ð>r2   ©rF   rF   Úminimap_crop_imgúUnion[np.ndarray, Image.Image]Úplayer_grid_posúOptional[Tuple[float, float]]Úplayer_velocityr<   r9   c                ó,  — | j                              |||¬¦  «        }|j        s|j        dk    r<t	          t
          j        dddd|j        |j        |j	        |j        |j
        ¬¦
  «
        S |j        \  }}| j        }| j        �=| j                             ||¦  «        \  }}| j                             | j        ¦  «        }|                      ||| j        ¬¦  «        \  }}	}
t	          ||	||f|
||j        |j        |j	        |j        |j
        ¬¦
  «
        S )uJ   PhÃ¢n tÃ­ch áº£nh crop Minimap vÃ  sinh lá»‡nh di chuyá»ƒn WASD tá»‘i Æ°u.)Úminimap_imgrÔ   rÖ   rÑ   r1   rF   )
r:   r;   r=   r?   r@   rA   rB   rC   rE   rG   N)r³   r´   rµ   )rU   Úanalyze_minimap_and_routerE   Údirection_vectorr9   r   r0   Útarget_screen_xyÚtarget_minimap_xyrC   rG   rS   rW   Útransform_vectorÚadjust_dwell_timerÐ   rR   )r^   rÒ   rÔ   rÖ   Útargetr³   r´   r@   r:   r;   r?   s              r3   Úcompute_navigation_stepz0MinimapNavigationAdapter.compute_navigation_step>  sV  € ð %)¤M×$KÒ$KØ(Ø+Ø+ð %Lñ %
ô %
ˆð Ô#ð 	¨Ô(?À:Ò(MÐ(MÝÝ'Ô,ØØ!ØØØ$Ô5Ø%Ô7Ø%Ô4Ø"(Ô":Ø$Ô2ðñ ô ð ð Ô(‰ˆˆBØÔ*ˆ	ð Œ?Ð&Ø”_×5Ò5°b¸"Ñ=Ô=‰FˆB�Øœ×9Ò9¸$Ô:PÑQÔQˆIà%)×%BÒ%BØØØÔ%ð &Cñ &
ô &
Ñ"ˆ	�4˜õ ØØØ˜�8ØØØ Ô1Ø!Ô3Ø!Ô0Ø$Ô6Ø Ô.ð
ñ 
ô 
ð 	
r2   c                óZ   — |                       |¦  «        }|                      ||¬¦  «        S )uX   Quy trÃ¬nh toÃ n diá»‡n: Chá»¥p toÃ n mÃ n hÃ¬nh -> Cáº¯t Minimap -> Xuáº¥t lá»‡nh WASD.)rÒ   rÖ   )r²   rà   )r^   r–   rÖ   Úminimap_crops       r3   Úprocess_fullscreen_framez1MinimapNavigationAdapter.process_fullscreen_framet  s:   € ð ×0Ò0°Ñ@Ô@ˆØ×+Ò+Ø)Ø+ð ,ñ 
ô 
ð 	
r2   ÚcommandÚsender_funcú/Optional[Callable[[float, float, float], None]]c                ót   — |j         t          j        k    rdS |�|j        \  }} ||||j        ¦  «         dS dS )uN   Gá»­i lá»‡nh di chuyá»ƒn tá»›i Character Controller qua hÃ m phÃ¡t phÃ­m WASD.FNT)r:   r   r0   r=   r@   )r^   rä   rå   ÚvxÚvys        r3   Údispatch_to_controllerz/MinimapNavigationAdapter.dispatch_to_controller€  sL   € ð Ô¥Ô 2Ò2Ð2Ø�5àÐ"Ø”^‰FˆB�ØˆK˜˜B Ô 1Ñ2Ô2Ð2Ø�4àˆur2   )rM   rN   rO   rP   rQ   rP   rR   r5   rS   r>   rT   r>   rU   rV   rW   rX   rY   rZ   )r`   rN   rY   rZ   )NN)rg   rh   ri   rh   rY   rZ   )ro   rp   rY   rq   )r‘   rp   rY   rD   )r–   r—   rY   r˜   )
r³   r>   r´   r>   rµ   r5   r¶   r>   rY   r·   )NrÑ   )rÒ   rÓ   rÔ   rÕ   rÖ   r<   rY   r9   )rÑ   )r–   rÓ   rÖ   r<   rY   r9   rv   )rä   r9   rå   ræ   rY   rD   )r$   r%   r&   r'   r   r5   r6   r_   rf   rn   r�   r•   r²   ÚstaticmethodrÐ   rà   rã   rê   r1   r2   r3   rJ   rJ   W   s\  € € € € € ØgÐgð AJØØØ*8Ô*FØ#'Ø!%Ø15Ø8<ð"
ð "
ð "
ð "
ð "
ðH	9ð 	9ð 	9ð 	9ð '+Ø+/ðð ð ð ð ð$ð ð ð ð@ð ð ð ð2ð 2ð 2ð 2ð@ ð  .Ô;Øð	V?ð V?ð V?ð V?ñ „\ðV?ðv :>Ø/9ð	4
ð 4
ð 4
ð 4
ð 4
ðr 0:ð

ð 

ð 

ð 

ð 

ð HLðð ð ð ð ð ð r2   rJ   ))r'   Ú
__future__r   Údataclassesr   Úenumr   r½   Úpathlibr   Útypingr   r   r	   r
   r   r   r   Únumpyrž   ÚPILr   ÚImportErrorÚ7src.assistant_tool.navigation.minimap_camera_calibratorr   r   Ú2src.assistant_tool.navigation.minimap_fog_explorerr   r   Úsrc.common.coordinate_transformr   r   r   r   r   r   rp   r   r5   r9   rJ   r1   r2   r3   ú<module>r÷      sJ  ððð ð& #Ð "Ð "Ð "Ð "Ð "à !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dà Ð Ð Ð ðØÐÐÐÐÐÐøØð ð ð Ø€E€E€Eðøøøðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð
ð 
ð 
ð 
ð 
�C˜ñ 
ô 
ð 
ð(ð (ð (ð (ð (�S˜$ñ (ô (ð (ð ðð ð ð ð ñ ô ñ „ððwð wð wð wð wñ wô wð wð wð ws   ¶= ½AÁA