§
    pAºje  ã                   ój   — d Z ddlZddlmc mZ ddlZddlZddl	m
Z
mZmZmZ d„ Zd„ Zd„ Zd„ Zd„ ZdS )	uÐ   AutoPOE2 - Unit test xÃ¡c thá»±c tÃ­nh nháº¥t quÃ¡n toÃ¡n há»�c Isometric giá»¯a C++ vÃ  Python (SSoT Parity).
Kiá»ƒm tra world_to_screen_isometric vÃ  world_to_wasd trong src/common/coordinate_transform.py.
é    N)Úworld_to_screen_isometricÚworld_to_wasdÚScreenPointÚ
WasdVectorc                  ó  — t          dd¦  «        \  } }}}d}| |u }|s—t          j        d|fd| |f¦  «        dt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}}d
}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}}d
}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}}d
}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}}t          dd¦  «        \  } }}}d
}| |u }|s—t          j        d|fd| |f¦  «        dt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}}d}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}}d
}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}}d
}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}}t          dd¦  «        \  } }}}d
}| |u }|s—t          j        d|fd| |f¦  «        dt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}}d
}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}}d
}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}}d}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}}t          dd¦  «        \  } }}}d
}| |u }|s—t          j        d|fd| |f¦  «        dt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}}d
}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}}d}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}}d
}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}}d	S )us   Kiá»ƒm tra 4 hÆ°á»›ng mÃ n hÃ¬nh thuáº§n tÃºy W, A, S, D (tÆ°Æ¡ng á»©ng vá»›i gÃ³c nghiÃªng 45 Ä‘á»™ tháº¿ giá»›i).ç      $@T©Úis©z%(py0)s is %(py3)sÚup©Úpy0Úpy3úassert %(py5)sÚpy5NFÚdownÚleftÚrightç      $À©	r   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation©r   r   r   r   Ú@py_assert2Ú@py_assert1Ú@py_format4Ú@py_format6s           ú>C:\Projects\AutoPOE2\tests\test_coordinate_isometric_parity.pyÚ$test_world_to_wasd_screen_directionsr%      s€  € õ *¨$°Ñ5Ô5Ñ€Bˆˆd�EØÐˆ2�ˆ:ÐÐÐÕÔÐÐÐÐˆ2�ÐÑÔÐÕÔÑÔÐÐÕÔˆ2ÑÔÐÕÔˆ2ÑÔÐÐÕÔ�ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ4�5ˆ=ÐÐÐÕÔÐÐÐÐˆ4�5ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�5ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ4�5ˆ=ÐÐÐÕÔÐÐÐÐˆ4�5ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�5ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ5�Eˆ>ÐÐÐÕÔÐÐÐÐˆ5�EÐÑÔÐÕÔÑÔÐÐÕÔˆ5ÑÔÐÕÔˆ5ÑÔÐÐÕÔ�EÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐõ *¨%°Ñ7Ô7Ñ€Bˆˆd�EØÐˆ2�ˆ;ÐÐÐÕÔÐÐÐÐˆ2�ÐÑÔÐÕÔÑÔÐÐÕÔˆ2ÑÔÐÕÔˆ2ÑÔÐÐÕÔ�ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ4�4ˆ<ÐÐÐÕÔÐÐÐÐˆ4�4ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�4ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ4�5ˆ=ÐÐÐÕÔÐÐÐÐˆ4�5ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�5ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ5�Eˆ>ÐÐÐÕÔÐÐÐÐˆ5�EÐÑÔÐÕÔÑÔÐÐÕÔˆ5ÑÔÐÕÔˆ5ÑÔÐÐÕÔ�EÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐõ *¨$°Ñ6Ô6Ñ€Bˆˆd�EØÐˆ2�ˆ;ÐÐÐÕÔÐÐÐÐˆ2�ÐÑÔÐÕÔÑÔÐÐÕÔˆ2ÑÔÐÕÔˆ2ÑÔÐÐÕÔ�ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ4�5ˆ=ÐÐÐÕÔÐÐÐÐˆ4�5ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�5ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ4�5ˆ=ÐÐÐÕÔÐÐÐÐˆ4�5ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�5ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ5�Dˆ=ÐÐÐÕÔÐÐÐÐˆ5�DÐÑÔÐÕÔÑÔÐÐÕÔˆ5ÑÔÐÕÔˆ5ÑÔÐÐÕÔ�DÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐõ *¨%°Ñ6Ô6Ñ€Bˆˆd�EØÐˆ2�ˆ;ÐÐÐÕÔÐÐÐÐˆ2�ÐÑÔÐÕÔÑÔÐÐÕÔˆ2ÑÔÐÕÔˆ2ÑÔÐÐÕÔ�ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ4�5ˆ=ÐÐÐÕÔÐÐÐÐˆ4�5ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�5ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ4�4ˆ<ÐÐÐÕÔÐÐÐÐˆ4�4ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�4ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ5�Eˆ>ÐÐÐÕÔÐÐÐÐˆ5�EÐÑÔÐÕÔÑÔÐÐÕÔˆ5ÑÔÐÕÔˆ5ÑÔÐÐÕÔ�EÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐó    c                  óŠ
  — t          dd¦  «        \  } }}}d}| |u }|s—t          j        d|fd| |f¦  «        dt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        dœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}}d}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}}d}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}}d}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}}t          dd¦  «        \  } }}}d}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}}d}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}}d}| |u }|s—t          j        d|fd| |f¦  «        dt          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        dœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}}d}||u }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd	|iz  }t          t          j        |¦  «        ¦  «        ‚d
x}}d
S )ux   Kiá»ƒm tra 4 trá»¥c chÃ­nh tháº¿ giá»›i tÆ°Æ¡ng á»©ng vá»›i tá»• há»£p 2 phÃ­m WASD trong gÃ³c nhÃ¬n Isometric 45 Ä‘á»™.ç        r   Tr	   r   r   r   r   r   Nr   Fr   r   r   r   r   s           r$   Ú&test_world_to_wasd_cardinal_directionsr)   .   sD  € õ *¨#¨tÑ4Ô4Ñ€Bˆˆd�EØÐˆ2�ˆ:ÐÐÐÕÔÐÐÐÐˆ2�ÐÑÔÐÕÔÑÔÐÐÕÔˆ2ÑÔÐÕÔˆ2ÑÔÐÐÕÔ�ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ4�4ˆ<ÐÐÐÕÔÐÐÐÐˆ4�4ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�4ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ4�5ˆ=ÐÐÐÕÔÐÐÐÐˆ4�5ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�5ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ5�Eˆ>ÐÐÐÕÔÐÐÐÐˆ5�EÐÑÔÐÕÔÑÔÐÐÕÔˆ5ÑÔÐÕÔˆ5ÑÔÐÐÕÔ�EÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐõ *¨#¨uÑ5Ô5Ñ€Bˆˆd�EØÐˆ4�4ˆ<ÐÐÐÕÔÐÐÐÐˆ4�4ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�4ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ5�Dˆ=ÐÐÐÕÔÐÐÐÐˆ5�DÐÑÔÐÕÔÑÔÐÐÕÔˆ5ÑÔÐÕÔˆ5ÑÔÐÐÕÔ�DÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ2�ˆ;ÐÐÐÕÔÐÐÐÐˆ2�ÐÑÔÐÕÔÑÔÐÐÕÔˆ2ÑÔÐÕÔˆ2ÑÔÐÐÕÔ�ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆ4�5ˆ=ÐÐÐÕÔÐÐÐÐˆ4�5ÐÑÔÐÕÔÑÔÐÐÕÔˆ4ÑÔÐÕÔˆ4ÑÔÐÐÕÔ�5ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐr&   c                  ó2  — t          ddd¬¦  «        \  } }}}| |||g}t          |¦  «        }| }|s•ddt          j        ¦   «         v st	          j        t          ¦  «        rt	          j        t          ¦  «        ndt	          j        |¦  «        t	          j        |¦  «        dœz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}t          dd¦  «        \  } }}}| |||g}t          |¦  «        }| }|s•ddt          j        ¦   «         v st	          j        t          ¦  «        rt	          j        t          ¦  «        ndt	          j        |¦  «        t	          j        |¦  «        dœz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}dS )	uT   Kiá»ƒm tra vÃ¹ng cháº¿t (deadzone) khÃ´ng phÃ¡t phÃ­m khi khoáº£ng cÃ¡ch quÃ¡ nhá»�.çü©ñÒMbP?gš™™™™™©?)Údeadzonez0assert not %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}Úany)r   Úpy2Úpy4Nr(   )	r   r-   r   r   r   r   r   r   r   )r   r   r   r   r!   Ú@py_assert3Ú@py_assert5r#   s           r$   Útest_world_to_wasd_deadzoner2   ?   s½  € å)¨%°ÀÐFÑFÔFÑ€Bˆˆd�EØ˜˜d EÐ*Ð+�sÐ*Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+�sÑ+Ô+Ð+Õ+Ô+�sÑ+Ô+Ð+Ð+Õ+Ô+Ð*Ñ+Ô+Õ+Ô+Ð+Ñ+Ô+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+å)¨#¨sÑ3Ô3Ñ€Bˆˆd�EØ˜˜d EÐ*Ð+�sÐ*Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+�sÑ+Ô+Ð+Õ+Ô+�sÑ+Ô+Ð+Ð+Õ+Ô+Ð*Ñ+Ô+Õ+Ô+Ð+Ñ+Ô+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+r&   c                  óâ	  — t          dddd¬¦  «        \  } }t          j        }d}d} || ||¬¦  «        }|sùdd	t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd	t          j        |¦  «        d
t          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd
t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}t          j        }d}d} ||||¬¦  «        }|sùdd	t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd	t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}t          ddddd¬¦  «        \  } }t          j        }d}d} ||||¬¦  «        }|sùdd	t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd	t          j        |¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}}t          j        }d}d}d}||z  }||z
  }d}	 || ||	¬¦  «        }
|
�sdd	t          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd	t          j        |¦  «        d
t          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        nd
t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |	¦  «        t          j        |
¦  «        dœz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}x}x}x}x}	}
dS )uK   Kiá»ƒm tra phÃ©p chiáº¿u Isometric tá»« vector delta sang pixel mÃ n hÃ¬nh.r(   ç      ž@ç     à�@)Úscreen_wÚscreen_hg      Ž@r+   )Úabs_tolzcassert %(py9)s
{%(py9)s = %(py2)s
{%(py2)s = %(py0)s.isclose
}(%(py3)s, %(py5)s, abs_tol=%(py7)s)
}ÚmathÚtx)r   r.   r   r   Úpy7Úpy9Ng     à€@Útyg      Y@)Údistr6   r7   g     ð~@gß'Üež æ?z~assert %(py15)s
{%(py15)s = %(py2)s
{%(py2)s = %(py0)s.isclose
}(%(py3)s, (%(py5)s - (%(py7)s * %(py9)s)), abs_tol=%(py13)s)
})r   r.   r   r   r;   r<   Úpy13Úpy15)
r   r9   Úiscloser   r   r   r   r   r   r   )r:   r=   r!   Ú@py_assert4Ú@py_assert6Ú@py_assert8Ú@py_format10Ú@py_assert10Ú@py_assert11Ú@py_assert12Ú@py_assert14Ú@py_format16s               r$   Ú)test_world_to_screen_isometric_projectionrK   H   s  € õ ' s¨C¸&È6ÐRÑRÔR�F€BˆÝŒ<Ð0˜EÐ0¨4Ð0ˆ<ˆ<˜˜E¨4Ð0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0�4Ñ0Ô0Ð0Õ0Ô0�4Ñ0Ô0Ð0Ð0Õ0Ô0ˆ<Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0˜Ñ0Ô0Ð0Õ0Ô0˜Ñ0Ô0Ð0Ð0Õ0Ô0˜EÑ0Ô0Õ0Ô0¨4Ñ0Ô0Õ0Ô0Ð0Ñ0Ô0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ÝŒ<Ð0˜EÐ0¨4Ð0ˆ<ˆ<˜˜E¨4Ð0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0�4Ñ0Ô0Ð0Õ0Ô0�4Ñ0Ô0Ð0Ð0Õ0Ô0ˆ<Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0˜Ñ0Ô0Ð0Õ0Ô0˜Ñ0Ô0Ð0Ð0Õ0Ô0˜EÑ0Ô0Õ0Ô0¨4Ñ0Ô0Õ0Ô0Ð0Ñ0Ô0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0õ ' s¨E¸ÈÐY_Ð`Ñ`Ô`�F€BˆåŒ<Ð0˜EÐ0¨4Ð0ˆ<ˆ<˜˜E¨4Ð0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0�4Ñ0Ô0Ð0Õ0Ô0�4Ñ0Ô0Ð0Ð0Õ0Ô0ˆ<Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0˜Ñ0Ô0Ð0Õ0Ô0˜Ñ0Ô0Ð0Ð0Õ0Ô0˜EÑ0Ô0Õ0Ô0¨4Ñ0Ô0Õ0Ô0Ð0Ñ0Ô0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0åŒ<ÐE˜EÐE EÐE¨JÐE E¨JÑ$6ÐE˜EÐ$6Ñ6ÐEÀÐEˆ<ˆ<˜Ð6ÀÐEÑEÔEÐEÐEÑEÐEÐEÕEÔEÑEÔEÐEÐEÕEÔE�4ÑEÔEÐEÕEÔE�4ÑEÔEÐEÐEÕEÔEˆ<ÑEÔEÐEÕEÔEÑEÔEÐEÐEÕEÔE˜ÑEÔEÐEÕEÔE˜ÑEÔEÐEÐEÕEÔE˜EÑEÔEÕEÔE EÑEÔEÕEÔE¨JÑEÔEÕEÔEÀÑEÔEÕEÔEÐEÑEÔEÐEÐEÑEÐEÕEÕEÔEÐEÑEÔEÑEÔEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEÐEr&   c                  óÌ  — t          ddddd¬¦  «        \  } }d}|| k    }d}d}||z
  }| |k    }|r|s¿t          j        d||fd|| |f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        | ¦  «        rt          j        | ¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}x}x}x}x}}d}||k    }d}d}||z
  }||k    }|r|s¿t          j        d||fd|||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }d
d|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}x}x}x}x}}dS )uB   Kiá»ƒm tra giá»›i háº¡n biÃªn an toÃ n (Screen Boundary Clamping).g     ˆÃ@r4   r5   g      I@)r6   r7   Úmargin)ú<=rN   )z%(py1)s <= %(py4)sz%(py4)s <= (%(py6)s - %(py8)s)r:   )Úpy1r/   Úpy6Úpy8zassert %(py11)sÚpy11Nr=   )	r   r   r   r   r   r   r   r   r   )
r:   r=   Ú@py_assert0r    r1   Ú@py_assert7Ú@py_assert9r0   rE   Ú@py_format12s
             r$   Ú'test_world_to_screen_isometric_clampingrW   W   sd  € õ ' w°À&ÐSYÐbfÐgÑgÔg�F€BˆØÐ&ˆ4�2Ò&Ð&˜Ð& $Ð&˜ $™Ð&�2˜Ò&Ð&Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð&ˆ4�2˜Ð&Ñ&Ô&Õ&Ô&ˆ4Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�2Ñ&Ô&Ð&Õ&Ô&�2Ñ&Ô&Ð&Ð&Õ&Ô&˜Ñ&Ô&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÐ&ˆ4�2Ò&Ð&˜Ð& $Ð&˜ $™Ð&�2˜Ò&Ð&Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð&ˆ4�2˜Ð&Ñ&Ô&Õ&Ô&ˆ4Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�2Ñ&Ô&Ð&Õ&Ô&�2Ñ&Ô&Ð&Ð&Õ&Ô&˜Ñ&Ô&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&r&   )Ú__doc__Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   r9   ÚpytestÚsrc.common.coordinate_transformr   r   r   r   r%   r)   r2   rK   rW   © r&   r$   ú<module>r`      sÑ   ððð ð € € € € € € € € € € € € €€€€Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð>ð ð ð",ð ,ð ,ðFð Fð Fð'ð 'ð 'ð 'ð 'r&   