ó
\a]c           @  s,  d  d l  m Z d  d l Z d  d l Z d e f d „  ƒ  YZ d a	 d a
 d a d a d a d a d a d „  Z d „  Z d „  Z d d	 „ Z d
 „  Z d „  Z g  a d „  Z d „  Z i  Z d „  Z e d „ Z d „  Z e d „ Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d S(   iÿÿÿÿ(   t   print_functionNt   Focusc           B  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C  sC   | |  _  | |  _ | |  _ | |  _ | |  _ | |  _ | |  _ d  S(   N(   t   widgett   argt   xt   yt   wt   ht   screen(   t   selfR   R   R   R   R   R   R   (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   __init__    s    						c         C  s1   t  |  j |  j |  j |  j |  j |  j |  j ƒ S(   N(   R   R   R   R   R   R   R   R   (   R	   (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   copy*   s    c         C  s2   d |  j  |  j |  j |  j |  j |  j |  j f S(   Ns"   <Focus: %r %r (%r, %r, %r, %r) %r>(   R   R   R   R   R   R   R   (   R	   (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   __repr__4   s    (   t   __name__t
   __module__R
   R   R   (    (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyR      s   	
	
t   mousec         C  s{   | a  | a |  t j j ƒ  j _ t j j j	 |  ƒ |  d  k rI d  } n |  j ƒ  } t | k rw | a t j j ƒ  n  d  S(   N(   t   argumentt   screen_of_focusedt   renpyt   gamet   contextt   scene_listst   focusedt   displayt   ttst   displayablet   Nonet   _get_tooltipt   tooltipt   exportst   restart_interaction(   R   R   R   t   new_tooltip(    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   set_focused[   s    	c           C  s   t  j j ƒ  j j S(   s1   
    Gets the currently focused displayable.
    (   R   R   R   R   R   (    (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   get_focusedt   s    c          C  s'   t  ƒ  }  |  d k r d S|  j j Sd S(   sK   
    Gets the mouse associated with the currently focused displayable.
    N(   R!   R   t   styleR   (   R   (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt	   get_mouse|   s    	c         C  sN   |  d k r t St d k r  d St j d |  k r7 t St j |  k rJ t Sd S(   s'   
    Gets the tooltip information.
    i    N(   R   R   R   t   screen_namet   tag(   R   (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   get_tooltipˆ   s    c         C  s   |  a  t j j ƒ  d  S(   N(   t   grabR   R   t   cancel_gesture(   R   (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   set_grabœ   s    c           C  s   t  S(   N(   R'   (    (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   get_grab£   s    c          C  s¤   g  a  t j j j t  ƒ d  a t }  x> t  D]6 } | j d  k rJ | a n  | j	 t
 k r, t }  q, q, W|  su d  a
 n  t d  k	 r  t ƒ  d  k r  t t t ƒ n  d  S(   N(   t
   focus_listR   R   t   rendert   take_focusesR   t   default_focust   FalseR   R   R'   t   TrueR!   t   change_focus(   t
   grab_foundt   f(    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyR-   ­   s    		c          C  sX   t  ƒ  }  xH t D]@ } | j |  k r | j t k r | j | j | j | j f Sq Wd S(   sß   
    :doc: other

    This attempts to find the coordinates of the currently-focused
    displayable. If it can, it will return them as a (x, y, w, h)
    tuple. If not, it will return a (None, None, None, None) tuple.
    N(   NNNN(
   R!   R+   R   R   R   R   R   R   R   R   (   t   currentt   i(    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   focus_coordinatesÈ   s
    		 c           sê  g  ‰  ‡  f d †  } x |  D] } | j  | d ƒ q Wi  } g  } x{ ˆ  D]s } | \ } } } | j | d ƒ }	 |	 d | | <| d k r qI n  | |	 f | _ | t t | ƒ <| j | ƒ qI W| ‰  t j d d ƒ t ƒ  }
 t j t |
 ƒ |
 ƒ }
 |
 d k	 rX|
 j } xI ˆ  D]8 \ } } } | j | k r| }
 t	 | t
 | ƒ PqqWd }
 n  |
 d k rýg  } x< ˆ  D]4 \ } } } | j rq| j | j | | f ƒ qqqqW| rýt | ƒ d k rÎ| j ƒ  n  | d \ } } } | }
 t	 | d | ƒ qýn  |
 d k rt	 d d d ƒ n  xa ˆ  D]Y \ } } } | |
 k	 r#t j j j | ƒ z | j d t ƒ Wd t j j j ƒ  Xq#q#W|
 rÄt j j j t ƒ z |
 j d t ƒ Wd t j j j ƒ  Xn  t j t t ƒ d ƒ a t j ƒ  d S(   s\   
    Called before each interaction to choose the focused and grabbed
    displayables.
    c           s#   ˆ  j  |  | t j j j f ƒ d  S(   N(   t   appendR   R   R   t   _current_screen(   R3   t   n(   t   fwn(    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   callbackê   s    i    i   iÿÿÿÿt   defaultN(   t   find_focusableR   t   gett   full_focus_namet   replaced_byt   idR7   t   popR!   R    R   R<   t   lent   sortR   R   R   t   push_current_screent   unfocusR0   t   pop_current_screenR   t   focusR'   t   clear(   t   rootsR;   t   roott	   namecountt   fwn2t	   fwn_tupleR3   R9   R   t   serialR4   t   current_namet   defaultst   _(    (   R:   sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   before_interactÞ   sj    
				 c         C  s=  d  } t r d  S|  d  k r% d  } n	 |  j } t ƒ  } | | k rb |  d  k s^ |  j t k rb | St a | d  k	 r² z' t j	 j
 j t ƒ | j d | ƒ Wd  t j	 j
 j ƒ  Xn  | } |  d  k	 rÝ t | |  j |  j
 ƒ n t d  d  d  ƒ | d  k	 r9z) t j	 j
 j t ƒ | j d | ƒ } Wd  t j	 j
 j ƒ  Xn  | S(   NR<   (   R   R'   R   R!   R   R   t   pending_focus_typet
   focus_typeR   R   R   RE   R   RF   RG   R    RH   (   t   newfocusR<   t   rvR   R4   (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyR1   L  s2    			'c           C  s   t  d ƒ d S(   s=   
    Clears the focus when the window loses mouse focus.
    N(   R1   R   (    (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   clear_focusx  s    c         C  sw   |  d k	 r: |  j t j t j t j f k r1 d Sd a n  t j j	 j
 | | ƒ } | d k rg t } n  t | d | ƒS(   s˜   
    Handle mouse events, to see if they change the focus.

    `ev`
        If ev is not None, this function checks to see if it is a mouse event.
    NR   R<   (   R   t   typet   pygamet   MOUSEMOTIONt   MOUSEBUTTONUPt   MOUSEBUTTONDOWNRT   R   R   R,   t   focus_at_pointR.   R1   (   t   evR   R   R<   t	   new_focus(    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   mouse_handler‚  s    
!		c         C  s   d  } d } xl t D]d } | j d  k r. q n  | j |  | j | | j | | j | } | | k r | } | } q q W| r‹ t | ƒ Sd  S(   Ni   i   l        lýÿÿÿ     (   R   R+   R   R   R   R   R1   (   t   xmult   ymult   wmult   hmult	   max_focust	   max_scoreR3   t   score(    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   focus_extremež  s     c         C  s    |  | | d | | | d S(   Ni   (    (   t   x0t   y0t   x1t   y1t   xfudget   yfudge(    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   points_dist·  s    c         C  s  | |  k o" | k o" | k n sœ |  | k oI | k oI | k n sœ |  | k op | k op | k n sœ | |  k o— | k o— | k n r¨ | | d S|  | k oÊ | k oÊ | k n rî t  | | | | t j j d ƒ St  |  | | | t j j d ƒ Sd  S(   Ni   g      ð?(   Rp   R   t   configt   focus_crossrange_penalty(   t   ax0t   ay0t   ax1t   ay1t   bx0t   by0t   bx1t   by1(    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   horiz_line_distÀ  s    '''''c         C  s  | | k o" | k o" | k n sœ | | k oI | k oI | k n sœ | | k op | k op | k n sœ | | k o— | k o— | k n r¨ |  | d S| | k oÊ | k oÊ | k n rî t  | | | | d t j j ƒ St  |  | | | d t j j ƒ Sd  S(   Ni   g      ð?(   Rp   R   Rq   Rr   (   Rs   Rt   Ru   Rv   Rw   Rx   Ry   Rz   (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   verti_line_distÔ  s    '''''c      
   C  s&  d a  t s d  St ƒ  } | s1 t t d ƒ d  SxH t D]. } | j | k r8 | j t k r8 | } Pq8 q8 Wt t d ƒ d  S| j d  k r¢ t	 |
 | | | ƒ d  S| j | j
 |  } | j | j | } | j | j
 | } | j | j | } d  } d  } d t j j d } xñ t D]é } | | k r1qn  | j j j sFqn  | j d  k ra| } qn  |	 | | ƒ svqn  | j | j
 | } | j | j | } | j | j
 | } | j | j | } | | | | | | | | | ƒ } | | k  r| } | } qqW| p| } | r"t | ƒ Sd  S(   Nt   keyboardi    g      ð@i   (   RT   R+   R!   R1   R   R   R   R   R   Ri   R   R   R   R   Rq   Rr   R"   t   keyboard_focus(   t   from_x0t   from_y0t   from_x1t   from_y1t   to_x0t   to_y0t   to_x1t   to_y1t	   line_distt	   conditionRb   Rc   Rd   Re   R4   R3   t
   from_focust   fx0t   fy0t   fx1t   fy1t	   placelessR`   t   new_focus_distt   tx0t   ty0t   tx1t   ty1t   dist(    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   focus_nearestò  sZ    	c   	      C  s@  d a  d  } g  } d } t ƒ  } d  } x‚ t D]z } | j d  k rO | } q. n  | j d  k	 rd q. n  | j j j sy q. n  | j | k r‘ | } n  | j	 | ƒ | d 7} q. Wd  } | d  k rñ | r*|  d k rá | |  d } qî | |  } q*n9 | |  } d | k ot
 | ƒ k  n r*| | } n  | p3| } t | ƒ S(   NR}   i    i   (   RT   R   R!   R+   R   R   R   R"   R~   R7   RC   R1   (	   t   deltaRŽ   t
   candidatest   indexR4   t   current_indexR3   R`   t	   new_index(    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   focus_orderedD  s:    		
"c         C  s  t  j j j } t  j j j rq | |  d ƒ s< | |  d ƒ rF t d ƒ S| |  d ƒ sd | |  d ƒ r}t d ƒ Sn| |  d ƒ r´ t d d d d d d d d t	 d	 „  d d
 d
 d
 ƒ S| |  d ƒ r÷ t d d d d d d d d t	 d „  d d
 d d
 ƒ S| |  d ƒ r:t d d d d d d d d t
 d „  d
 d d
 d ƒ S| |  d ƒ r}t d d d d d d d d t
 d „  d
 d d
 d
 ƒ Sd  S(   Nt   focus_rightt
   focus_downi   t
   focus_leftt   focus_upiÿÿÿÿgÍÌÌÌÌÌì?gš™™™™™¹?c         S  s   |  j  |  j | j  k S(   N(   R   R   (   t   oldt   new(    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   <lambda>‡  s    i    c         S  s   | j  | j |  j  k S(   N(   R   R   (   R    R¡   (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyR¢   Ž  s    c         S  s   | j  | j |  j  k S(   N(   R   R   (   R    R¡   (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyR¢   •  s    c         S  s   |  j  |  j | j  k S(   N(   R   R   (   R    R¡   (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyR¢   œ  s    (   R   R   t   behaviort	   map_eventR   t   preferencest   self_voicingR›   R•   R|   R{   (   R_   R¤   (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   key_handlerv  s<    
(&   t
   __future__R    t   pygame_sdl2RZ   t   renpy.displayR   t   objectR   R   R   R   R'   R.   RU   RT   R   R    R!   R#   R&   R)   R*   R+   R-   R6   R@   RS   R/   R1   RX   Ra   Ri   Rp   R{   R|   R•   R›   R§   (    (    (    sl   C:\Users\romet\Desktop\TwistedScarlett Patreon Pack #13\FriendshipwithBenefits-0.1-pc\renpy\display\focus.pyt   <module>   s>   "								n,	
						R	2