
86ic           @   s
  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   Z d   Z 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(   iNt   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   (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\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   (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\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   (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyt   __repr__2   s    (   t   __name__t
   __module__R	   R
   R   (    (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyR       s   	
	
t   mousec         C   s8   | a  | a |  t j j   j _ t j j j	 |   d  S(   N(
   t   argumentt   screen_of_focusedt   renpyt   gamet   contextt   scene_listst   focusedt   displayt   ttst   displayable(   R   R   R   (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyt   set_focusedU   s    c           C   s   t  j j   j j S(   N(   R   R   R   R   R   (    (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyt   get_focusedc   s    c          C   s'   t    }  |  d  k r d  S|  j j Sd  S(   N(   R   t   Nonet   styleR   (   R   (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyt	   get_mousei   s    	c         C   s   |  a  t j j   d  S(   N(   t   grabR   t   exportst   cancel_gesture(   R   (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyt   set_grabq   s    c           C   s   t  S(   N(   R   (    (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyt   get_grabx   s    c          C   sw   g  a  t j j j t   d  a x& t  D] }  |  j d  k r& |  a q& q& Wt d  k	 rs t   d  k rs t	 t t
  n  d  S(   N(   t
   focus_listR   R   t   rendert   take_focusesR   t   default_focusR   R   t   change_focust   True(   t   f(    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\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(    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\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	 | d |  PqqWd }
 n  |
 d k rxM   D]2 \ } } } | j
 rk| }
 t	 | d |  PqkqkWt	 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(   R)   t   n(   t   fwn(    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyt   callback   s    i    i   t   defaultN(   t   find_focusableR   t   gett   full_focus_namet   replaced_byt   idR-   t   popR   R   R2   R   R   R   t   push_current_screent   unfocusR(   t   pop_current_screenR   t   focusR   t   clear(   t   rootsR1   t   roott	   namecountt   fwn2t	   fwn_tupleR)   R/   R   t   serialR*   t   current_name(    (   R0   sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyt   before_interact   s^    
				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(   NR2   (   R   R   R   R   R   R   t   pending_focus_typet
   focus_typeR   R   R   R9   R   R:   R;   R   R<   (   t   newfocusR2   t   rvR   R*   (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyR'     s2    			'c           C   s   t  d  d S(   s=   
    Clears the focus when the window loses mouse focus.
    N(   R'   R   (    (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyt   clear_focus8  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   R2   (   R   t   typet   pygamet   MOUSEMOTIONt   MOUSEBUTTONUPt   MOUSEBUTTONDOWNRF   R   R   R$   t   focus_at_pointR&   R'   (   t   evR   R   R2   t	   new_focus(    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyt   mouse_handlerB  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   R'   (   t   xmult   ymult   wmult   hmult	   max_focust	   max_scoreR)   t   score(    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyt   focus_extreme^  s     c         C   s    |  | | d | | | d S(   Ni   (    (   t   x0t   y0t   x1t   y1t   xfudget   yfudge(    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyt   points_distw  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      ?(   Rb   R   t   configt   focus_crossrange_penalty(   t   ax0t   ay0t   ax1t   ay1t   bx0t   by0t   bx1t   by1(    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\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      ?(   Rb   R   Rc   Rd   (   Re   Rf   Rg   Rh   Ri   Rj   Rk   Rl   (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\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   (   RF   R#   R   R'   R   R   R   R   R   R[   R   R   R   R   Rc   Rd   R   t   keyboard_focus(   t   from_x0t   from_y0t   from_x1t   from_y1t   to_x0t   to_y0t   to_x1t   to_y1t	   line_distt	   conditionRT   RU   RV   RW   R*   R)   t
   from_focust   fx0t   fy0t   fx1t   fy1t	   placelessRR   t   new_focus_distt   tx0t   ty0t   tx1t   ty1t   dist(    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\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(   NRo   i    i   (   RF   R   R   R#   R   R   R   R   Rp   R-   t   lenR'   (	   t   deltaR   t
   candidatest   indexR*   t   current_indexR)   RR   t	   new_index(    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyt   focus_ordered  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_upig?g?c         S   s   |  j  |  j | j  k S(   N(   R   R   (   t   oldt   new(    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyt   <lambda>G  s    i    c         S   s   | j  | j |  j  k S(   N(   R   R   (   R   R   (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyR   N  s    c         S   s   | j  | j |  j  k S(   N(   R   R   (   R   R   (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyR   U  s    c         S   s   |  j  |  j | j  k S(   N(   R   R   (   R   R   (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyR   \  s    (   R   R   t   behaviort	   map_eventR   t   preferencest   self_voicingR   R   Rn   Rm   (   RQ   R   (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyt   key_handler6  s<    
("   t   pygame_sdl2RL   t   renpy.displayR   t   objectR    R   R   R   R   R&   RG   RF   R   R   R   R!   R"   R#   R%   R,   R6   RE   t   FalseR'   RJ   RS   R[   Rb   Rm   Rn   R   R   R   (    (    (    sb   Z:\home\souce\.local\share\Steam\steamapps\common\Doki Doki Literature Club\renpy\display\focus.pyt   <module>   s8   "								d,	
						R	2