Ë
    Î£ji)  ã                   óX  — 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  e j                  «       Z
 G d„ d«      Zdee   ded	ee   fd
„Zdee   ded	ee   fd„Zdee   deeeef      d	ee   fd„Zdee   dee   d	ee   fd„Zdee   d	eeeef      fd„Zdee   dee   d	ee   fd„Zy)é    N)ÚMapping)ÚPath)ÚVPKFilec            	       ó6   — e Zd Zd„ Zdededee   dedz  fd„Zy)ÚSoundHandlerc                 ó&   — ddg| _         dg| _        y )Nz.wavz.mp3z.txt)Úsound_extensionsÚscript_extensions)Úselfs    úNC:\Users\pivot\Documents\cueki\casual-preloader\core\handlers\sound_handler.pyÚ__init__zSoundHandler.__init__   s   € Ø!'¨Ð 0ˆÔØ"( ˆÕó    Útemp_mods_dirÚbackup_scripts_dirÚ	vpk_pathsÚreturnNc           	      ó(  — |dz  }|j                  «       sy |j                  d«      D �cg c]:  }|j                  «       r(|j                  j	                  «       | j
                  v r|‘Œ< }}|sy t        ||«      }|sdddddœS |D �cg c]  }|d   ‘Œ	 }	}t        |	|«      }
|dz  }t        |
|«      }t        |«      }g }|r|rt        ||«      }t        |«      t        |«      t        |«      dt        |«      › d	t        |«      › d
�dœS c c}w c c}w )NÚsoundÚ*r   z'No sound files found in VPK for mapping)Úfiles_movedÚscripts_updatedÚscripts_copiedÚmessageÚcanonical_pathÚscriptszMoved z sounds, updated z scripts)ÚexistsÚrglobÚis_fileÚsuffixÚlowerr	   Úcreate_vpk_based_mappingsÚidentify_needed_scriptsÚcopy_needed_scriptsÚmove_sound_filesÚupdate_script_pathsÚlen)r   r   r   r   Útemp_sound_dirÚfÚall_sound_filesÚfile_mappingsÚmappingÚcanonical_pathsÚneeded_scriptsÚtemp_scripts_dirÚcopied_scriptsÚmoved_filesÚmodified_scriptss                  r   Úprocess_temp_sound_modsz$SoundHandler.process_temp_sound_mods   sT  € Ø&¨Ñ0ˆØ×$Ñ$Ô&Øð &×+Ñ+¨CÔ0ó
Ù0�!Ø�y‰yŒ{˜qŸx™xŸ~™~Ó/°4×3HÑ3HÑHò Ð0ð 	ð 
ñ
 Øä1°/À9ÓMˆÙà Ø#$Ø"#ØDñ	ð ñ ERÓRÁM¸˜7Ð#3Ó4ÀMˆÐRô 1°ÐBTÓUˆð )¨9Ñ4ÐÜ,¨^Ð=MÓNˆô ' }Ó5ˆð ÐÙ™mÜ2°>À=ÓQÐô ˜{Ó+Ü"Ð#3Ó4Ü! .Ó1Ø¤ KÓ 0Ð1Ð1BÄ3À~ÓCVÐBWÐW_Ð`ñ	
ð 	
ùòG
ùò$ Ss   ª?D
ÂD)Ú__name__Ú
__module__Ú__qualname__r   r   ÚlistÚdictr2   © r   r   r   r      s6   „ ò*ð-
°Tð -
Ètð -
Ð`dÐeiÑ`jð -
ÐosÐvzÑozô -
r   r   r,   r   r   c                 ó  — t        «       }t        «       }| D ]f  }|j                  dd«      j                  «       }t        t	        |«      j                  d«      «      j                  dd«      }|j                  |«       Œh t        |j                  d«      «      }t        «       }|D ]£  }		 t        |	ddd¬«      5 }
|
j                  «       }|j                  «       j                  dd«      }d d d «       g }|D ]Q  }|v sŒ|j                  |«       |j                  |«       t        |	«      |vsŒ8|j                  t        |	«      «       ŒS Œ¥ t        |«      S # 1 sw Y   ŒnxY w# t        $ r t        j                  d	|	› �«       Y Œàw xY w)
NÚ\Ú/Ú z*sound*.txtÚrúutf-8Úignore©ÚencodingÚerrorsz Error reading sound script file )ÚsetÚreplacer    Ústrr   Úwith_suffixÚaddr6   ÚglobÚopenÚreadÚappendÚ	ExceptionÚlogÚ	exception)r,   r   r-   Úpaths_to_matchÚpathÚnormalized_pathÚpath_without_extÚscript_filesÚfound_sound_pathsÚscript_filer(   ÚcontentÚnormalized_contentÚfound_matchess                 r   r"   r"   A   sj  € ä“U€Nô “U€NÛˆØŸ,™, t¨SÓ1×7Ñ7Ó9ˆäœt OÓ4×@Ñ@ÀÓDÓE×MÑMÈdÐTWÓXÐØ×ÑÐ+Õ,ð	  ô Ð*×/Ñ/°Ó>Ó?€LÜ›Ðã#ˆð	Ü�k 3°ÀÕJÈaØŸ&™&›(�Ø%,§]¡]£_×%<Ñ%<¸TÀ3Ó%GÐ"÷ Kð
 ˆMÛ&�ØÐ-Ò-Ø!×(Ñ(¨Ô.Ø%×)Ñ)¨$Ô/Ü˜;Ó'¨~Ò=Ø&×*Ñ*¬3¨{Ó+;Õ<ñ 'ð $ô( �ÓÐ÷% KÐJûô ò 	Ü�M‰MÐ<¸[¸MÐJÔKÙð	ús6   Â*E#Â91EÃ*E#Ã>/E#Ä.E#ÅE 	ÅE#Å#!FÆFr-   r.   c                 ó(  — |j                  dd¬«       g }| D ]M  }t        |«      }||j                  z  }	 t        j                  ||«       |j                  t        |«      «       ŒO |S # t        $ r t        j                  d|› d|› �«       Y Œxw xY w)NT©ÚparentsÚexist_okzError copying script file ú to )
Úmkdirr   ÚnameÚshutilÚcopy2rK   rE   rL   rM   rN   )r-   r.   r/   rU   Úscript_pathÚtarget_paths         r   r#   r#   h   sš   € à×Ñ 4°$ÐÔ7Ø€Nã%ˆÜ˜;Ó'ˆØ&¨×)9Ñ)9Ñ9ˆð	WÜ�L‰L˜ kÔ2Ø×!Ñ!¤# kÓ"2Õ3ð &ð Ðøô ò 	WÜ�M‰MÐ6°{°mÀ4ÈÀ}ÐUÖVð	Wús   ¶0A*Á*$BÂBrS   Úpath_mappingsc                 óB  ‡‡— g }| D �]+  }	 t        |ddd¬«      5 }|j                  «       }d d d «       }|D ]¸  \  }Š|j                  dd«      }‰j                  dd«      Št        j                  |«      j                  dd«      }d	|› d
�}	t        j                  t        j                  |«      t        j                  «      Šˆˆfd„}
t        j                  |	|
|t        j                  ¬«      }Œº ||k7  sŒò	 t        |dd¬«      5 }|j                  |«       d d d «       |j                  |«       �Œ. |S # 1 sw Y   �ŒxY w# t        $ r t        j	                  d|› �«       Y �Œbw xY w# 1 sw Y   ŒTxY w# t        $ r t        j	                  d|› �«       Y �Œ–w xY w)Nr=   r>   r?   r@   zError reading r:   r;   z[/\\]z("wave"\s*")([^"]*z
[^"]*?)(")c                 ó¢  •— | j                  d«      }| j                  d«      }| j                  d«      }d}t        j                  d|› d�|«      }|r#|j                  d«      }|j                  d«      }nd}|}|j                  dd	«      }‰j	                  |«      r#‰j                  ˆfd
„|«      }	|› |	› �}
|› |
› |› �S | j                  d«      S )Né   é   é   z&[\*\#\@\>\<\^\(\)\{\}\$\!\?\&\~\`\+\%]z^(z+)(.*)r<   r:   r;   c                 ó   •— ‰S )Nr8   )Ú_Únew_paths    €r   Ú<lambda>z;update_script_files.<locals>.replace_wave.<locals>.<lambda>¤   s   ø€ Ár   r   )ÚgroupÚreÚmatchrD   ÚsearchÚsub)rp   ÚprefixÚ	wave_pathr   Úspecial_charsÚspecial_prefix_matchÚspecial_prefixÚactual_pathÚnormalized_actual_pathÚnew_actual_pathÚnew_wave_pathrl   Úold_path_res              €€r   Úreplace_wavez)update_script_files.<locals>.replace_wave‘   sà   ø€ ØŸ™ Q›�Ø!ŸK™K¨›N�	ØŸ™ Q›�ð !J�Ü')§x¡x°2°m°_ÀFÐ0KÈYÓ'WÐ$á'Ø%9×%?Ñ%?ÀÓ%B�NØ"6×"<Ñ"<¸QÓ"?‘Kà%'�NØ"+�Kð *5×)<Ñ)<¸TÀ3Ó)GÐ&Ø×%Ñ%Ð&<Ô=Ø&1§o¡oÓ6HÐJ`Ó&a�OØ'5Ð&6°Ð6GÐ$H�MØ$˜X m _°V°HÐ=Ð=à—{‘{ 1“~Ð%r   )ÚflagsÚw)rA   zError writing )rI   rJ   rL   rM   rN   rD   ro   ÚescapeÚcompileÚ
IGNORECASErr   ÚwriterK   )rS   rd   Úmodified_filesrU   r(   rV   Úoriginal_contentÚold_pathÚescaped_old_pathÚpatternr}   rl   r|   s              @@r   Úupdate_script_filesr‰   z   s„  ù€ à€NÜ#ˆð	Ü�k 3°ÀÕJÈaØŸ&™&›(�÷ Kð #ÐÛ"/ÑˆH�hØ×'Ñ'¨¨cÓ2ˆHØ×'Ñ'¨¨cÓ2ˆHô  "Ÿy™y¨Ó2×:Ñ:¸3ÀÓIÐØ+Ð,<Ð+=¸ZÐHˆGô Ÿ*™*¤R§Y¡Y¨xÓ%8¼"¿-¹-ÓHˆKõ&ô2 —f‘f˜W l°GÄ2Ç=Á=ÔQ‰GðI #0ðN Ð&Ó&ð>Ü˜+ s°WÕ=ÀØ—G‘G˜GÔ$÷ >à×%Ñ% kÖ2ði $ðp Ð÷m KÑJûäò 	Ü�M‰M˜N¨;¨-Ð8Ô9Úð	ú÷\ >Ð=ûô ò >Ü—‘ ¨{¨mÐ<×=ð>úsQ   ŒE›D8¬EÃ:E9ÄE-ÄE9Ä8E	Ä=EÅ!E*Å)E*Å-E6	Å2E9Å9!FÆFÚsound_filesr   c                 ó€  — g }|D ]  }	 t        |«      }|j                  |«       Œ! |st        j                  dd¬«       g S g }g }g d¢}| D ]�  }|j                  }	d }
|D ]  }|j                  |	«      }|sŒ|dd  }
 n |
r=t        |
«      j                  }|d   |v r|
}nd|
› �}||
||	d	œ}|j                  |«       Œq|j                  |«       Œƒ d}|D ]  }	 |j                  «        |d
z  }Œ |S # t        $ r t        j	                  d|› �«       Y �Œw xY w# t        $ r t        j	                  d|› �«       Y Œhw xY w)NzError loading z"No valid VPK files could be loadedT©Ú
stack_info)ÚmiscÚvoÚuié   r   zmisc/)Úsource_filer   Ú
final_pathÚfilenamerg   zError removing )r   rK   rL   rM   rN   Úerrorr_   Úfind_file_pathr   ÚpartsÚunlink)rŠ   r   Ú	vpk_filesÚvpk_pathÚvpkr*   Úfiles_to_removeÚvpk_no_prefixÚ
sound_filer”   r   Úvpk_file_pathÚcanonical_partsr“   r+   Úremoved_countÚfile_to_removes                    r   r!   r!   ¸   s‹  € à€IÛˆð	Ü˜(Ó#ˆCØ×Ñ˜SÕ!ð ñ Ü�	‰	Ð6À4ˆ	ÔHØˆ	à€MØ€OÚ(€Mã!ˆ
Ø—?‘?ˆØˆó ˆCØ×.Ñ.¨xÓ8ˆMÚØ!.¨q¨rÐ!2�Ùð	 ñ ä" >Ó2×8Ñ8ˆOØ˜qÑ! ]Ñ2à+‘
ð  % ^Ð$4Ð5�
ð  *Ø"0Ø(Ø$ñ	ˆGð × Ñ  Õ)ð ×"Ñ" :Õ.ð= "ðB €MÛ)ˆð	>Ø×!Ñ!Ô#Ø˜QÑ‰Mð *ð Ðøôk ò 	Ü�M‰M˜N¨8¨*Ð5Ô6Úð	ûôd ò 	>Ü�M‰M˜O¨NÐ+;Ð<Ö=ð	>ús#   ‰C1ÃDÃ1!DÄDÄ!D=Ä<D=r*   c                 óø  — g }| D ]È  }|d   }|d   }d }|j                   D ]  }|j                  dk(  sŒ|} n |r||z  }nt        j                  d|› d�d¬«        |S |j                  j                  dd¬«       	 ||k7  rMt        j                  t        |«      t        |«      «       |j                  t        |«      t        |«      f«       ŒÊ |S # t        $ r t        j                  d	|› d
|› �«       Y Œów xY w)Nr’   r“   r   zNo z found!TrŒ   rZ   zError moving r]   )r[   r_   rM   r•   Úparentr^   r`   ÚmoverE   rK   rL   rN   )r*   r0   r+   r’   r“   Ú	sound_dirr¤   rc   s           r   r$   r$   ø   s  € à€Kã ˆØ˜mÑ,ˆØ˜\Ñ*ˆ
àˆ	Ø!×)Ô)ˆFØ�{‰{˜gÓ%Ø"�	Ùð *ñ
 Ø# jÑ0‰Kä�I‰I˜˜I˜; gÐ.¸4ˆIÔ@Øð Ðð 	×Ñ× Ñ ¨¸Ð Ô=ð	JØ˜kÒ)Ü—‘œC Ó,¬c°+Ó.>Ô?Ø×"Ñ"¤C¨Ó$4´c¸+Ó6FÐ#GÔHøð+ !ð2 Ðøô ò 	JÜ�M‰M˜M¨+¨°d¸;¸-ÐHÖIð	Jús   Á<ACÃ$C9Ã8C9c                 ó   — i }|D ]U  }t        t        |d   «      «      j                  dd«      }t        t        |d   «      «      j                  dd«      }|||<   ŒW t        | t	        |j                  «       «      «      S )Nr   r:   r;   r“   )rE   r   rD   r‰   r6   Úitems)rS   r*   rd   r+   Úcanonical_with_extÚfinal_with_exts         r   r%   r%     s~   € à€MÛ ˆÜ ¤ gÐ.>Ñ&?Ó!@ÓA×IÑIÈ$ÐPSÓTÐÜœT '¨,Ñ"7Ó8Ó9×AÑAÀ$ÈÓLˆØ,:ˆÐ(Ò)ð !ô
 ˜|¬T°-×2EÑ2EÓ2GÓ-HÓIÐIr   )Úloggingro   r`   Úcollections.abcr   Úpathlibr   Úvalve_parsersr   Ú	getLoggerrM   r   r6   rE   r"   r#   Útupler‰   r7   r!   r$   r%   r8   r   r   Ú<module>r±      s+  ðÛ Û 	Û Ý #Ý å !à€g×ÑÓ€÷2
ñ 2
ðj$ ¨T°#©Yð $ ÈDð $ ÐUYÐZ]ÑU^ó $ ðN¨¨S©	ð ÀTð ÈdÐSVÉió ð$; d¨3¡ið ;ÀÀUÈ3ÐPSÈ8Á_Ñ@Uð ;ÐZ^Ð_bÑZcó ;ð|<¨4°©:ð <À$ÀtÁ*ð <ÐQUÐVZÑQ[ó <ð@ D¨¡Mð °d¸5ÀÀcÀ¹?Ñ6Kó ðBJ d¨3¡ið JÀÀWÁð JÐRVÐWZÑR[ô Jr   