§
    `Âªj  ã                  óè  — U d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	  G d„ de
e¦  «        Z ed¬	¦  «         G d
„ d¦  «        ¦   «         Zej         edd¬¦  «        ej         edd¬¦  «        ej         edd¬¦  «        ej         edd¬¦  «        ej         edd¬¦  «        ej         edd¬¦  «        iZded<    ed¬	¦  «         G d„ d¦  «        ¦   «         Z e¦   «         Zd#d„Zefd$d!„Zd"S )%u  AutoPOE2 - Skill & Action Bar Geometry and Constants.

Ä�á»‹nh nghÄ©a hÃ¬nh há»�c Action Bar, Pop-up Skill menu vÃ  tá»· lá»‡ tá»�a Ä‘á»™ Ä‘a Ä‘á»™ phÃ¢n giáº£i.
TuÃ¢n thá»§ Rule 1, Rule 4 (Kiáº¿n trÃºc Module HÃ³a), Rule 7 (Chuáº©n ngÆ°á»�i chÆ¡i tháº­t).
é    )Úannotations)Ú	dataclass)ÚEnum)ÚDictÚTuplec                  ó2   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )ÚActionBarSlotuI   Danh má»¥c cÃ¡c phÃ­m táº¯t ká»¹ nÄƒng trÃªn thanh Action Bar cá»§a POE2.ÚQÚEÚRÚTÚFÚRMBÚLMBÚMMBN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚSLOT_QÚSLOT_EÚSLOT_RÚSLOT_TÚSLOT_FÚSLOT_RMBÚSLOT_LMBÚSLOT_MMB© ó    úAC:\Projects\AutoPOE2\src\assistant_tool\skills\skill_constants.pyr	   r	      s<   € € € € € ØSÐSØ€FØ€FØ€FØ€FØ€FØ€HØ€HØ€H€H€Hr   r	   T)Úfrozenc                  ó0   — e Zd ZU dZded<   ded<   dd
„ZdS )ÚNormalizedSlotCoorduT   Tá»�a Ä‘á»™ chuáº©n hÃ³a [0.0, 1.0] theo kÃ­ch thÆ°á»›c Client Area (width, height).ÚfloatÚnorm_xÚnorm_yÚclient_wÚintÚclient_hÚreturnúTuple[int, int]c                ó’   — t          t          | j        |z  ¦  «        ¦  «        t          t          | j        |z  ¦  «        ¦  «        fS )u[   Quy Ä‘á»•i tá»�a Ä‘á»™ chuáº©n hÃ³a thÃ nh tá»�a Ä‘á»™ pixel thá»±c táº¿ trong client area.)r(   Úroundr%   r&   )Úselfr'   r)   s      r    Úto_client_pixelsz$NormalizedSlotCoord.to_client_pixels    s;   € å•5˜œ xÑ/Ñ0Ô0Ñ1Ô1µ3µu¸T¼[È8Ñ=SÑ7TÔ7TÑ3UÔ3UÐUÐUr   N)r'   r(   r)   r(   r*   r+   )r   r   r   r   Ú__annotations__r/   r   r   r    r#   r#      sH   € € € € € € à^Ð^Ø€M€M�MØ€M€M�MðVð Vð Vð Vð Vð Vr   r#   gaÃÓ+eå?g¥,Cëâî?)r%   r&   gÏ÷Sã¥›æ?g¨5Í;NÑç?gdÌ]KÈé?g=
×£p=ê?g)ËÇº¸ë?z(Dict[ActionBarSlot, NormalizedSlotCoord]ÚACTION_BAR_DEFAULT_OFFSETSc                  ó¼   — e Zd ZU dZdZded<   dZded<   dZded<   d	Zded
<   dZ	ded<   dZ
ded<   dZded<   dZded<   dZded<   dZded<   dZded<   dZded<   dS )ÚSkillPopupGeometryuH   ThÃ´ng sá»‘ hÃ¬nh há»�c cá»§a Pop-up Menu ACTIONS / SKILLS / GEM SKILLS.g?5^ºIÊ?r$   Úwidth_ratiog�(í¾0Õ?Úheight_ratiogÇº¸�ð–?Úmargin_bottom_ratiogs×òAÏî?Úclose_btn_rel_xgÜ×�sF”¦?Úclose_btn_rel_yg      à?Úunbind_rel_xgÂ†§WÊ2Ì?Úunbind_rel_ygÛù~j¼tß?Úskills_row_rel_y)g+‡ÙÎÇ?g;ßO�—nÚ?g{®Gázä?zTuple[float, ...]Úskills_col_rel_xgOjMóè?Úgem_skills_start_rel_yg$¹ü‡ôÛÇ?Úgem_skills_row_spacing_ratio)g¸…ëQ¸¾?gÁÊ¡E¶óÕ?gé&1¬â?gsh‘í|?é?Úgem_skills_col_rel_xN)r   r   r   r   r4   r0   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r   r   r    r3   r3   7   sò   € € € € € € àRÐRà€KÐÐÐÑØ €LÐ Ð Ð Ñ Ø!'ÐÐ'Ð'Ð'Ñ'ð $€OÐ#Ð#Ð#Ñ#Ø#€OÐ#Ð#Ð#Ñ#ð €LÐÐÐÑØ €LÐ Ð Ð Ñ ð %ÐÐ$Ð$Ð$Ñ$Ø*?ÐÐ?Ð?Ð?Ñ?ð %+ÐÐ*Ð*Ð*Ñ*Ø*0Ð Ð0Ð0Ð0Ñ0Ø.JÐÐJÐJÐJÑJÐJÐJr   r3   Úslotr'   r(   r)   r*   r+   c                óŠ   — t                                | ¦  «        }|st          d| › �¦  «        ‚|                     ||¦  «        S )ud   TÃ­nh toÃ¡n tá»�a Ä‘á»™ pixel (x, y) cá»§a Ã´ slot trÃªn Action Bar theo kÃ­ch thÆ°á»›c Client Area.u5   KhÃ´ng tÃ¬m tháº¥y cáº¥u hÃ¬nh hÃ¬nh há»�c cho slot: )r1   ÚgetÚ
ValueErrorr/   )r@   r'   r)   Úcoords       r    Úget_slot_client_posrE   U   sL   € å&×*Ò*¨4Ñ0Ô0€EØð YÝÐWÐQUÐWÐWÑXÔXÐXØ×!Ò! (¨HÑ5Ô5Ð5r   ÚgeoúTuple[int, int, int, int]c                ót  — t          | ||¦  «        \  }}t          t          |j        |z  ¦  «        ¦  «        }t          t          |j        |z  ¦  «        ¦  «        }t          t          |j        |z  ¦  «        ¦  «        }||dz  z
  }	|	|z   |dz
  k    r||z
  dz
  }	|	dk     rd}	||z
  }
|
|z
  }|	|z   }|	|||
fS )uZ   TÃ­nh toÃ¡n bounding box (left, top, right, bottom) cá»§a Pop-up Menu khi báº­t tá»« slot.é   é   )rE   r(   r-   r4   r5   r6   )r@   r'   r)   rF   Úslot_xÚslot_yÚpwÚphÚmargin_bÚleftÚbottomÚtopÚrights                r    Úget_popup_bounding_boxrT   ]   sÙ   € õ )¨¨x¸ÑBÔB�N€FˆFÝ	�U�3”? XÑ-Ñ.Ô.Ñ	/Ô	/€BÝ	�U�3Ô# hÑ.Ñ/Ô/Ñ	0Ô	0€BÝ•5˜Ô0°8Ñ;Ñ<Ô<Ñ=Ô=€Hð �B˜!‘GÑ€DØˆb�y�8˜a‘<ÒÐØ˜"‰}˜qÑ ˆØˆa‚x€xØˆà�hÑ€FØ
�2‰+€CØ�2‰I€EØ��e˜VÐ#Ð#r   N)r@   r	   r'   r(   r)   r(   r*   r+   )
r@   r	   r'   r(   r)   r(   rF   r3   r*   rG   )r   Ú
__future__r   Údataclassesr   Úenumr   Útypingr   r   Ústrr	   r#   r   r   r   r   r   r   r1   r0   r3   ÚSKILL_POPUP_GEOMETRYrE   rT   r   r   r    ú<module>r[      s&  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ð Ð ð	ð 	ð 	ð 	ð 	�C˜ñ 	ô 	ð 	ð €�$ÐÑÔðVð Vð Vð Vð Vñ Vô Vñ ÔðVð& ÔÐ-Ð-°VÀFÐKÑKÔKØÔÐ-Ð-°VÀFÐKÑKÔKØÔÐ-Ð-°VÀFÐKÑKÔKØÔÐ-Ð-°VÀFÐKÑKÔKØÔÐ-Ð-°VÀFÐKÑKÔKØÔÐ/Ð/°vÀfÐMÑMÔMðHÐ ð ð ð ñ ð €�$ÐÑÔðKð Kð Kð Kð Kñ Kô Kñ ÔðKð4 *Ð)Ñ+Ô+Ð ð6ð 6ð 6ð 6ð 3ð	$ð $ð $ð $ð $ð $ð $r   