Ë
    Î£j¯&  ã                   óä   — d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ  ej                  «       Zdedefd	„Zd
edee   fd„Zdedefd„Zdedefd„Zdedefd„Z G d„ d«      Zy)é    N)ÚPath)Úconfig)Úmake_precache_list)Úcheck_root_lod)Ú	StudioMDLÚ	input_strÚreturnc                 óî   — | j                  «       } | j                  dd«      } | j                  d«      r| dd  } d| v r"| d | j                  d«       j                  «       } | j	                  d«      s| dz  } | S )NÚ"Ú zmodels/é   ú//ú.mdl)ÚstripÚreplaceÚ
startswithÚindexÚendswith)r   s    úTC:\Users\pivot\Documents\cueki\casual-preloader\core\quickprecache\quick_precache.pyÚhandle_stringr      s„   € à—‘Ó!€IØ×!Ñ! # rÓ*€Ið ×Ñ˜IÔ&Ø˜a˜b�Mˆ	ð ˆyÑØÐ4˜yŸ™¨tÓ4Ð5×;Ñ;Ó=ˆ	ð ×Ñ˜fÔ%Ø�VÑˆ	àÐó    Ú	list_filec                 óv  — t        «       }	 t        | d«      5 }|D ]]  }|j                  «       }|r|j                  d«      rŒ't	        |«      }|sŒ5|j                  |«       t        j                  d|› �«       Œ_ 	 d d d «       |S # 1 sw Y   |S xY w# t        $ r t        j                  d| › �«       Y |S w xY w)NÚrr   zAdded model: zError loading model list from )
ÚsetÚopenr   r   r   ÚaddÚlogÚinfoÚ	ExceptionÚ	exception)r   Ú
model_listÚfÚlineÚmodels        r   Úload_list_from_filer&   "   s¶   € ä“€JðDÜ�)˜SÔ! QÛ�Ø—z‘z“|�ñ ˜tŸ™¨tÔ4Øä% dÓ+�ÚØ—N‘N 5Ô)Ü—H‘H˜}¨U¨GÐ4Õ5ñ ÷ "ð Ð÷ "ð Ðûô ò DÜ�‰Ð6°y°kÐBÕCàÐðDús4   ŒB ˜7BÁ+BÁ<B ÂBÂB ÂB Â!B8Â7B8r%   c                 ó   — d| › d�S )Nz$modelname "z.mdl"
© )r%   s    r   Úget_model_namer)   9   s   € à˜%˜ Ð(Ð(r   Úincludec                 ó   — d| › d�S )Nz$includemodel "z"
r(   )r*   s    r   Úget_include_modelr,   >   s   € à˜W˜I SÐ)Ð)r   r   c                 ó   — t        d| › �«      S )NÚ	precache_)r)   )r   s    r   Úget_precache_string_builderr/   C   s   € ä˜I e WÐ-Ó.Ð.r   c            	       ó¢   — e Zd ZdZddedefd„Zdefd„Zde	fd	„Z
d
edefd„Zdee   ddfd„Zdededefd„Zdefd„Zdd„Zddedededefd„Zy)ÚQuickPrecachei   NÚ	game_pathÚdebugc                 ó    — || _         || _        t        «       | _        g | _        d| _        d | _        g | _        || _        d| _	        d| _
        y )Nr   )r2   r3   r   r"   Úfailed_vpksÚbuilder_indexÚ
studio_mdlÚ
temp_filesÚprogress_callbackÚcompiled_countÚtotal_compiles)Úselfr2   r3   r9   s       r   Ú__init__zQuickPrecache.__init__L   sO   € à(ˆŒØˆŒ
Ü›%ˆŒØˆÔØˆÔØˆŒØˆŒØ!2ˆÔØˆÔØˆÕr   Úmessagec                 ó¾   — | j                   rQ| j                  dkD  rAd}d}| j                  | j                  z  |z  }|t        |«      z   }| j                  ||«       y y y )Nr   é
   éU   )r9   r;   r:   Úint)r<   r>   Úprogress_rangeÚstart_progressÚprogress_percentÚcurrent_progresss         r   Úupdate_progresszQuickPrecache.update_progressY   sh   € Ø×!Ò! d×&9Ñ&9¸AÒ&=ØˆNØˆNØ $× 3Ñ 3°d×6IÑ6IÑ IÈ^Ñ[ÐØ-´Ð4DÓ0EÑEÐØ×"Ñ"Ð#3°WÕ=ð '>Ð!r   r	   c                 ó2  — | j                   dz  dz  }d}|j                  «       rr|j                  d«      D ]^  }|j                  dk(  s8|j                  j	                  d«      sŒ.|j                  j                  d«      sŒJ|j                  «        |dz  }Œ` |S )	NÚtfÚmodelsr   Ú*zprecache.mdlr.   r   é   )r2   ÚexistsÚglobÚnamer   r   Úunlink)r<   Úmodels_folderÚcountÚfiles       r   Úflush_fileszQuickPrecache.flush_filesa   s„   € àŸ™¨Ñ-°Ñ8ˆØˆà×ÑÔ!Ø%×*Ñ*¨3Ö/�Ø—I‘I Ò/ØŸ™×-Ñ-¨kÕ:¸t¿y¹y×?QÑ?QÐRXÕ?YØ—K‘K”MØ˜Q‘J‘Eð	 0ð ˆr   Úoutput_filec                 óô   — 	 t        |d«      5 }t        | j                  «      D ]  }|j                  |› d�«       Œ 	 d d d «       y# 1 sw Y   yxY w# t        $ r t
        j                  d|› �«       Y yw xY w)NÚwÚ
TzError saving model list to F)r   Úsortedr"   Úwriter    r   r!   )r<   rU   r#   r%   s       r   Úsave_list_to_filezQuickPrecache.save_list_to_fileo   sr   € ð	Ü�k 3Ô'¨1Ü# D§O¡OÖ4�EØ—G‘G˜u˜g R˜LÕ)ñ 5÷ (ð ÷ (ð ûÜò 	Ü�M‰MÐ7¸°}ÐEÔFÙð	ús-   ‚A Ž/A¾A ÁAÁA ÁA Á!A7Á6A7Ústringsc                 ó¶  — t        | j                  «      }t        «       }t        dt	        |«      dz  «      }|dz   | _        d| _        t        j                  |«      D ]ù  }||v rŒt        |«      }t	        |«      t	        |«      z   | j                  k  r||z  }|j                  |«       nJ| j                  d| j                  › d�|«       | xj                  dz  c_        t        | j                  «      }t	        |«      t	        |«      k(  sŒ°| j                  d| j                  › d�|«       | xj                  dz  c_        | j                  dz   | _         y  y )NrL   r@   r   r.   ú.qc)r/   r6   r   ÚmaxÚlenr;   r:   Ú	itertoolsÚcycler,   ÚMAX_SPLIT_SIZEr   Úmake_precache_sub_list_file)r<   r\   ÚbuilderÚpassed_stringsÚestimated_buildersÚsÚinclude_lines          r   Úmake_precache_sub_listz$QuickPrecache.make_precache_sub_listz   sE  € ä-¨d×.@Ñ.@ÓAˆÜ›ˆÜ  ¤C¨£L°BÑ$6Ó7ÐØ0°1Ñ4ˆÔØˆÔô —‘ Ö)ˆAØ�NÑ"Øä,¨QÓ/ˆLô �7‹|œc ,Ó/Ñ/°4×3FÑ3FÒFØ˜<Ñ'�Ø×"Ñ" 1Õ%ð ×0Ñ0°9¸T×=OÑ=OÐ<PÐPSÐ1TÐV]Ô^Ø×"Ò" aÑ'Õ"Ü5°d×6HÑ6HÓI�ô �7‹|œs >Ó2Ó2à×0Ñ0°9¸T×=OÑ=OÐ<PÐPSÐ1TÐV]Ô^Ø×"Ò" aÑ'Õ"Ø&*×&8Ñ&8¸1Ñ&<�Ô#Ùñ- *r   ÚfilenameÚdatac                 ó¶  — 	 t         j                  j                  dd¬«       t        j                  dddt         j                  ¬«      }t        |j                  «      }|j                  |«       |j                  «        | j                  s| j                  j                  |«       | j                  d| j                  dz   › d	| j                  › d
�«       | j                  j!                  |«      }| xj                  dz  c_        | j                  d| j                  › d	| j                  › d
�«       |S # t"        $ r t$        j'                  d|› �«       Y yw xY w)NT©ÚparentsÚexist_okrW   r^   F©ÚmodeÚsuffixÚdeleteÚdirzCompiling precache models (rL   Ú/ú)...zError creating QC file )r   Útemp_dirÚmkdirÚtempfileÚNamedTemporaryFiler   rO   rZ   Úcloser3   r8   ÚappendrG   r:   r;   r7   Ú
make_modelr    r   r!   )r<   rk   rl   Ú	temp_fileÚ	temp_pathÚsuccesss         r   rd   z)QuickPrecache.make_precache_sub_list_file›   s5  € ð	ä�O‰O×!Ñ!¨$¸Ð!Ô>Ü ×3Ñ3ØØØÜ—O‘Oô	ˆIô ˜YŸ^™^Ó,ˆIð �O‰O˜DÔ!Ø�O‰OÔØ—:’:Ø—‘×&Ñ& yÔ1ð × Ñ Ð#>¸t×?RÑ?RÐUVÑ?VÐ>WÐWXÐY]×YlÑYlÐXmÐmqÐ!rÔsØ—o‘o×0Ñ0°Ó;ˆGà×Ò 1Ñ$ÕØ× Ñ Ð#>¸t×?RÑ?RÐ>SÐSTÐUY×UhÑUhÐTiÐimÐ!nÔoàˆNøÜò 	Ü�M‰MÐ3°H°:Ð>Ô?Ùð	ús   ‚D1D4 Ä4!EÅEc                 óü  — 	 t         j                  j                  dd¬«       t        j                  dddt         j                  ¬«      }t        |j                  «      }|j                  t        d«      «       t        | j                  «      D ]   }|j                  t        d|› d	�«      «       Œ" |j                  «        | j                  s| j                  j                  |«       | j!                  d
| j"                  dz   › d| j$                  › d�«       | j&                  j)                  |«      }| xj"                  dz  c_        | j!                  d«       |S # t*        $ r t,        j/                  d«       Y yw xY w)NTrn   rW   r^   Frq   Úprecacher.   r   z Compiling final precache model (rL   rv   rw   zQuickPrecache complete!z$Error creating main precache QC file)r   rx   ry   rz   r{   r   rO   rZ   r)   Úranger6   r,   r|   r3   r8   r}   rG   r:   r;   r7   r~   r    r   r!   )r<   r   r€   ÚiÚresults        r   Úmake_precache_list_filez%QuickPrecache.make_precache_list_file¼   sE  € ð	ä�O‰O×!Ñ!¨$¸Ð!Ô>Ü ×3Ñ3ØØØÜ—O‘Oô	ˆIô ˜YŸ^™^Ó,ˆIð �O‰OœN¨:Ó6Ô7Ü˜4×-Ñ-Ö.�Ø—‘Ô 1°I¸a¸SÀÐ2EÓ FÕGð /ð �O‰OÔØ—:’:Ø—‘×&Ñ& yÔ1ð × Ñ Ð#CÀD×DWÑDWÐZ[ÑD[ÐC\Ð\]Ð^b×^qÑ^qÐ]rÐrvÐ!wÔxØ—_‘_×/Ñ/°	Ó:ˆFØ×Ò 1Ñ$ÕØ× Ñ Ð!:Ô;àˆMøÜò 	Ü�M‰MÐ@ÔAÙð	ús   ‚EE ÅE;Å:E;c                 ó¶   — | j                   D ]#  }	 |j                  «       r|j                  «        Œ% y # t        $ r t        j                  d|› �«       Y ŒJw xY w)NzError removing temporary file )r8   rM   rP   r    r   r!   )r<   r   s     r   ÚcleanupzQuickPrecache.cleanupÞ   sV   € ØŸœˆIðLØ×#Ñ#Ô%Ø×$Ñ$Ô&øñ )øô ò LÜ—‘Ð >¸y¸kÐJÖKðLús   ‘ 4´!AÁAÚautor   Úflushc                 ó¤  — 	 | j                  «       }|rMt        j                  d«       t        j                  d|› d�«       	 | j                  s| j	                  «        yyt        | j                  «      | _        t        | j                  «       |rCt        j                  d«       t        | j                  «      | _
        |r>| j                  |«       n,|sd}t        j                  d|› �«       t        |«      | _
        t        j                  dt        | j                  «      › d	�«       t        | j                  «      D ]  }t        j                  |› «       Œ | j                  | j                  «       | j!                  «        | j"                  r<t        j%                  d
«       | j"                  D ]  }t        j%                  |› «       Œ 	 | j                  s| j	                  «        yy# t&        $ r5 t        j)                  d«       Y | j                  s| j	                  «        yyw xY w# | j                  s| j	                  «        w w xY w)Nz&Flush completed. Exiting as requested.zRemoved z existing precache filesTzAuto-scanning for models...zprecachelist.txtzLoading model list from zFound z models to precache:zFailed to load invalid vpk(s):zError in precache processF)rT   r   r   r3   r‰   r   r2   r7   r   r   r"   r[   r&   r`   rY   rj   r‡   r5   Úwarningr    r!   )r<   rŠ   r   r‹   Úfiles_removedr%   Úvpk_paths          r   ÚrunzQuickPrecache.runæ   sÙ  € ð5	à ×,Ñ,Ó.ˆMáÜ—‘ÐAÔBÜ—‘˜8 M ?Ð2JÐKÔLØðZ —:’:Ø—‘•ð ôS (¨¯©Ó7ˆDŒOô ˜4Ÿ>™>Ô*ñ Ü—‘Ð6Ô7Ü"4°T·^±^Ó"D�”ñ Ø×*Ñ*¨9Õ5ñ !Ø 2�Iä—‘Ð3°I°;Ð?Ô@Ü"5°iÓ"@�”ô �H‰H�vœc $§/¡/Ó2Ð3Ð3GÐHÔIÜ §¡Ö0�Ü—‘˜E˜7Õ$ð 1ð ×'Ñ'¨¯©Ô8Ø×(Ñ(Ô*ð ×ÒÜ—‘Ð<Ô=Ø $× 0Ô 0�HÜ—K‘K 8 *Õ.ð !1ð ð
 —:’:Ø—‘•ð øô	 ò 	Ü�M‰MÐ5Ô6Øà—:’:Ø—‘•ð ð		ûð —:’:Ø—‘•ð ús+   ‚A G/ Á!E/G/ Ç/H-ÈH0 È,H-È-H0 È0I)FN)r	   N)Fr   F)Ú__name__Ú
__module__Ú__qualname__rc   r   Úboolr=   ÚstrrG   rB   rT   r[   r   rj   rd   r‡   r‰   r�   r(   r   r   r1   r1   H   s­   „ à€Nñ  $ð  ¨tó  ð> só >ð˜Só ð	¨Sð 	°Tó 	ð¨c°#©hð ¸4ó ðB°Cð ¸sð Àtó ðB ¨ó  óDLñ7˜ð 7°ð 7À$ð 7ÐSWô 7r   r1   )ra   Úloggingrz   Úpathlibr   Úcore.configr   Ú core.quickprecache.precache_listr   Úcore.quickprecache.r_rootlodr   Úcore.quickprecache.studio_mdlr   Ú	getLoggerr   r•   r   r   r&   r)   r,   rB   r/   r1   r(   r   r   Ú<module>r�      sœ   ðÛ Û Û Ý å Ý ?Ý 7Ý 3à€g×ÑÓ€ð˜Sð  Só ð( 3ð ¨3¨s©8ó ð.)˜#ð ) #ó )ð
*˜sð * só *ð
/ sð /¨só /÷
Uò Ur   