ó
*šÓ\c           @  sÝ   d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l j Z d  d l	 Z	 d  d l
 Z
 d  d l Z d  d l Z d  d l Z d  d l Z e j ƒ  a d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(	   iÿÿÿÿ(   t   print_functionNc         C  sb   t  j  ƒ  } d j |  | t ƒ }  t j j j |  ƒ t j rX t j j	 rX t
 |  ƒ n  | a d  S(   Ns   {} took {:.2f}s(   t   timet   formatt
   last_clockt   renpyt   displayt   logt   writet   androidt   configt   log_to_stdoutt   print(   t   st   now(    (    s   renpy/main.pyt	   log_clock)   s    c           C  s   t  j  ƒ  a d  S(   N(   R   R   (    (    (    s   renpy/main.pyt   reset_clock5   s    c         C  s  t  ƒ  t j j ƒ  t d ƒ t j j ƒ  t d ƒ t j j ƒ  t d ƒ t j	 j
 j ƒ  t d ƒ t j j j ƒ  t d ƒ |  s£ t j	 j
 j ƒ  t d ƒ n  t j j j ƒ  t d ƒ |  s÷ t j j ƒ  t d ƒ t j j j ƒ  t d	 ƒ n  t j j ƒ  st j j ƒ  n  t j j r5t j j j ƒ  n  t j j j ƒ  t j j  ƒ  t _! t j" j# t$ ƒ g t _% t j j& d
 ƒ rŠd
 } n d } t j' ƒ  j( | ƒ y. t j j! d t) j* ƒ  ƒ t j j! d ƒ Wn n X|  t j+ _, t j j- j. ƒ  t d j/ | ƒ ƒ t j" j0 t$ ƒ d S(   sp   
    This is called during a single run of the script. Restarting the script
    will cause this to change.
    s   Cleaning storess   Init translations   Build styless   Load screen analysiss   Analyze screenss   Save screen analysiss   Prepare screenss   Save pyanalysis.s   Save bytecode.t   _startt   starts   --- t    s
   Running {}N(1   R   R   t   pythont   clean_storesR   t   translationt   init_translationt   stylet   build_stylest   sl2t   slastt
   load_cacheR   t   screent   analyze_screenst
   save_cachet   prepare_screenst
   pyanalysist   gamet   scriptt   save_bytecodet	   argumentst	   post_initt   exportst   quitR	   t   clear_linest
   scripteditt   linest   cleart	   presplasht   sleept   RollbackLogR   t	   executiont   Contextt   Truet   contextst	   has_labelt   contextt
   goto_labelR   t   ctimet   storet   _restartt	   interfacet   enter_contextR   t   run_context(   t   restartt   start_label(    (    s   renpy/main.pyt   run:   sR    






	c         B  sJ   e  j |  ƒ } | j d ƒ } | j ƒ  e j j d |  ƒ | e ƒ  Ud  S(   Ns
   autorun.pyi    (   t   zipfilet   ZipFilet   readt   closet   syst   patht   insertt   dict(   t   fnt   zfnt   autorun(    (    s   renpy/main.pyt   load_rpeŽ   s
    
c          C  s}  d t  j k r9 t t  j d j ƒ  ƒ d  g t j _ d  Sd  g t j _ t j rTt j j j	 d d ƒ t j j j	 d d ƒ d d  l }  d d  l
 } d d  l } d d l m } ys | d ƒ } | j } | j } t d | d	 | ƒ | d
 k r#| j d ƒ r#t d ƒ t j j j	 d d ƒ n  Wn n X|  j j ƒ  } | j d ƒ r†t d ƒ t j j j	 d d ƒ t j j j	 d d ƒ d  St j j j	 d d ƒ | j j ƒ  t j j ƒ  } | j | j | j ƒ |  j ƒ  }	 t d |	 d ƒ |	 d k r%t j j j	 d d ƒ t j j j	 d d ƒ qyt j j j	 d d ƒ t j j j	 d d ƒ n%t j r+t j j j	 d d ƒ t j j j	 d d ƒ d d l m } | d ƒ }
 |
 j ƒ  j } t d | ƒ | d k rüt j j j	 d d ƒ t j j j	 d d ƒ qyt j j j	 d d ƒ t j j j	 d d ƒ nN t j  rMt j j j	 d d ƒ n t j j j	 d d ƒ t j j j	 d d ƒ d  S(    Nt   RENPY_VARIANTi    t   mobileR   iÿÿÿÿ(   t	   autoclasss   android.os.Buildt   Manufacturert   modelt   Amazont   AFTs   Running on a Fire TV.t   firetvs    android.hardware.type.televisions   Running on a television.t   tvt   smallt   touchs   Screen diagonal iss   inches.i   t   tablett   mediumt   phonet   iost   UIDevices   iOS device idiomi   t   webt   pct   large(!   t   ost   environt   listt   splitt   NoneR   R	   t   variantsR   RE   t   matht   pygame_sdl2t   jniusRM   t   MANUFACTURERt   MODELR   t
   startswitht   activityt   getPackageManagert   hasSystemFeatureR   t   initt   get_infot   hypott	   current_wt	   current_ht   get_dpiRY   t   pyobjust   currentDevicet   userInterfaceIdiomt
   emscripten(   R   Rd   t   pygameRM   t   Buildt   manufacturerRO   t   package_managert   infot   diagRZ   t   idiom(    (    s   renpy/main.pyt   choose_variants˜   sj    &			

"		c          C  sŽ
  t  d ƒ d t j _ t j j ƒ  t j j j ƒ  t j	 j ƒ  t
 ƒ  d t j	 j k t j _ t  d ƒ t j	 j t _ t j	 j g t j	 _ t j t j	 j ƒ }  t j j |  ƒ rÖ t j	 j j |  ƒ |  t j	 _ n d  t j	 _ d t j k rt j	 j j t j d j d ƒ ƒ n  t j r¡g  t j	 _ d  t j	 _ d t j k r¡t j j t j d d ƒ } t d	 | ƒ t j j  | ƒ ržt j	 j j! d
 | ƒ qžq¡n  xX t j	 j D]J } xA t j" | ƒ D]0 } | j# ƒ  j$ d ƒ rÄt% | d | ƒ qÄqÄWq®WxU t& t j" t j	 j ƒ ƒ D]8 } | j$ d ƒ s3qn  | d  } t j	 j' j | ƒ qWt j	 j' j( ƒ  t j) j* ƒ  t j) j+ ƒ  t  d ƒ t j, j- ƒ  t _. t/ j0 d t j1 _1 t j2 j3 ƒ  t _2 t j2 t j1 _2 t j4 j5 t6 ƒ g t _7 t8 t j7 d
 _9 t j4 j: d ƒ d t j _ t j; j< ƒ  t j _; t j= j> d t6 ƒ rNt8 t j j? _@ n  t jA jB d ƒ t jA jC d ƒ s‚t jA jC d ƒ r•t jA jB d ƒ n  t j	 jD ƒ  t j2 jE ƒ  t  d ƒ t j j? jF d k rt j j? jG rxœ t j j; jH D]‹ \ } } | d  k rqîn  t j jI t j j | | d ƒ ƒ sîy1 t j j | | d ƒ } t jJ | | d ƒ WqytK k
 ruqyXqîqîWt j) jL ƒ  t j j; jM ƒ  n  t j j; jN ƒ  t  d ƒ t j j? jF d k rBtO jO ƒ  } xC tP d ƒ D]5 } t | ƒ t j; j< ƒ  t j _; t j j; jN ƒ  qåWt tO jO ƒ  | ƒ t/ jQ d
 ƒ n  d t j _ t j	 jR d  k r~t jS t j	 j ƒ t j	 _R n  t j j? jR r¥t j j? jR t j	 _R n  t jT j ƒ  t _T t jT jU t _V xD t j jT jW D]3 } | t j j; jX jY k rÖt j jZ d  7_Z qÖqÖWt jT j[ r:t jT j[ \ t j	 _\ t j	 _] n  t j^ j ƒ  zét j_ j ƒ  t  d! ƒ t jT j` ƒ  t jT jU t _V t  d" ƒ i  t _a t jT t j1 _T t jV t j1 _U t jb jc jd t j1 _d t je jf ƒ  rät j jg ƒ  ‚ n  d# t j _ xO t j; jh D]A \ } }	 ti |	 t jj jk ƒ r7t j jl ƒ  jm |	 ƒ qý|	 ƒ  qýWd$ t j _ t j p`t j	 jn t _ t j. jo ƒ  x t j jo D] } | ƒ  q€Wt j j; jp ƒ  t j jq jr js ƒ  t j	 j\ t j	 j] f t jT _[ t  d% ƒ t jt ju ƒ  t  d& ƒ t j j; jv ƒ  t jw jx ƒ  t  d' ƒ t j) j* ƒ  t  d( ƒ d) t j k t j _y d* t j k t j _z d+ t j k t j _{ t j| j| t6 ƒ t j j; j} ƒ  t  d, ƒ t j j~ j j ƒ  t  d- ƒ t j, j€ ƒ  t  d. ƒ t j‚ ƒ  t j	 jƒ r>	t j„ t j	 j… Œ  t† t j j> d/ d
 ƒ ƒ }
 t j	 j‡ r.	|
 t jˆ O}
 n  t j‰ |
 ƒ n  t  d0 ƒ t jŠ j‹ ƒ  t jŒ s{	t j j jŽ ƒ  t  d1 ƒ n  d  } x« t8 r.
| r£	t j j j ƒ  n  za y; z tm | ƒ Wd  t j	 j‘ d2 d3 f } t jT j` t8 ƒ XWn t j’ k
 r
} | j“ } n XWd  t j jŒ j” ƒ  t j_ j• j– d4 ƒ Xq„	WWd  t j‰ d
 ƒ t j) j— ƒ  t j^ j˜ ƒ  t j™ jš ƒ  Xt j j› jœ sŠ
t j j jž ƒ  n  d  S(5   Ns#   Bootstrap to the start of init.inits   Before loading the script.RU   s
   Early initt   RENPY_SEARCHPATHs   ::t   ANDROID_PUBLICR!   s   Android searchpath: i    s   .rpet   /s   .rpaiüÿÿÿs   Loader initR7   i<   s   While loading the script.t   compilet   _errorhandlings   tl/None/common.rpyms   tl/None/common.rpymcs   tl/None/commons   Loading error handlings   .rpys   .rpycs   .baks   Loading scripts	   load-testi   s   After loading the script.i   s   Loading save slot metadata.s   Loading persistents   While executing init code:s,   After initialization, but before game start.s   Running init codes   Loading analysis datas   Analyze and compile ATLs   Index archivest   RENPY_LESS_MEMORYt   RENPY_LESS_MOUSEt   RENPY_LESS_UPDATESs   Dump and make backups.s   Cleaning caches   Making clean storest   RENPY_GC_DEBUGs   Initial gc.s   Creating interface objectt   _invoke_main_menut
   _main_menug      @(Ÿ   R   R   R!   t   exception_infoR$   t   pre_initR   t   slparserRm   R	   R~   Rc   R   RU   t   gamedirt   basepatht
   searchpatht   __main__t   path_to_commont
   renpy_baseR^   RD   t   isdirt   appendt	   commondirRb   R_   t   extendRa   R   t   joinR   t   existsRE   t   listdirt   lowert   endswithRJ   t   sortedt   archivest   reverset   loadert   index_archivest	   auto_initR   R.   R   RC   t   modulesR7   R   t   StyleManagerR/   R0   t   FalseR2   R1   t
   init_phaset   not_infinite_loopR"   t   Scriptt   sessiont   gett   argsR‚   R&   t   load_modulet   loadablet   init_system_stylesR   t   commandt   keep_orphan_rpyct   script_filest   isfilet   renamet   OSErrort   cleardirfilest   scan_script_filest   load_scriptR   t   ranget   exitt   savedirt   path_to_savest
   persistentt   _preferencest   preferencest   _seen_translatest
   translatort   default_translatest   seen_translates_countt   _virtual_sizet   screen_widtht   screen_heightt   savelocationt   loadsavet   updatet   seen_sessiont   testt   testastt   _testt   parsert   report_parse_errorst   ParseErrorExceptiont   initcodet
   isinstancet   astt   NodeR4   R>   t   simulate_androidR%   t   report_duplicate_labelst   imaget   image_namest   sortR    R   t   analyzet   atlt   compile_allt   less_memoryt
   less_mouset   less_updatest   dumpt   make_backupst   imt   cachet   make_clean_storest   gct   collectt	   manage_gct   set_thresholdt   gc_thresholdst   intt   gc_print_unreachablet   DEBUG_SAVEALLt	   set_debugt   debugt   init_main_thread_openR9   t   coret	   InterfaceR   t   before_restartt   end_game_transitiont   FullRestartExceptiont   reasont   finish_pendingt   autosave_not_runningt   waitt	   auto_quitR'   R   t   write_updated_stringst   errort   error_handledt   rendert   check_at_shutdown(   R•   t   android_gamet   dirRG   t   it   dnt   nameR   t   _priot   nodet   gc_debugR<   t   e(    (    s   renpy/main.pyt   mainð   sJ   

&	"

$
%%

!

	








		 (   t
   __future__R    t   renpy.displayR   t   renpy.stylet	   renpy.sl2t
   renpy.testt
   renpy.gameR!   R^   RC   R   R?   Rã   R   R   R   R   R>   RJ   R~   R  (    (    (    s   renpy/main.pyt   <module>   s$   			T	
	X