Ë
    Î£jn  ã                   ó  — d dl 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eef   deeef   ded	eeef   fd
„Zdedededee   deeef   d	eeef   fd„Zdee   d	eeef   fd„Zdeeef   dee   d	eeef   fd„Zy)é    N)ÚMapping)Úconfig)ÚPARTICLE_GROUP_MAPPING)ÚdeleteÚ
selectionsÚmod_particles_cacheÚsimple_modeÚreturnc                 óÒ   — |s| S i }| j                  «       D ]M  \  }}|t        v r;t        |   D ].  }|j                  dd«      }||j                  |g «      v sŒ*|||<   Œ0 ŒI|||<   ŒO |S )aà  
    Expand particle group selections to individual particles.
    In simple mode, converts group names to individual particle files.
    In advanced mode, returns selections as-is.

    Args:
        selections: Dict mapping particle/group name to mod name
        mod_particles_cache: Dict mapping mod name to list of particles it contains
        simple_mode: Whether we're in simple (grouped) mode

    Returns:
        Dict mapping individual particle names to mod names
    ú.pcfÚ )Úitemsr   ÚreplaceÚget)r   r   r	   ÚexpandedÚcolumn_nameÚmod_nameÚparticle_fileÚparticle_names           úJC:\Users\pivot\Documents\cueki\casual-preloader\core\services\particles.pyÚexpand_group_selectionsr      sˆ   € ñ& ØÐà€HØ!+×!1Ñ!1Ö!3Ñˆ�XàÔ0Ñ0Ü!7¸Ô!D�Ø -× 5Ñ 5°f¸bÓ A�à Ð$7×$;Ñ$;¸HÀbÓ$IÒIØ.6�H˜]Ò+ñ	 "Eð %-ˆH�[Ò!ð "4ð €Oó    Úmodr   Úmod_particlesÚsaved_selectionsc                 óÄ   ‡ ‡‡— |rB|t         v r:t         |   }t        ˆfd„|D «       «      }|xr t        ˆ ˆfd„|D «       «      }||fS |‰v }|xr |‰v xr ‰|   ‰ k(  }||fS )a°  
    Calculate whether a particle/group checkbox should be enabled and checked.

    Args:
        mod: The mod name
        column_name: The particle or group name
        simple_mode: Whether we're in simple (grouped) mode
        mod_particles: Set of particles this mod contains (without .pcf extension)
        saved_selections: Previously saved selections dict

    Returns:
        Tuple of (should_enable, should_check)
    c              3   óF   •K  — | ]  }|j                  d d«      ‰v –— Œ y­w©r   r   N)r   )Ú.0Úpr   s     €r   Ú	<genexpr>z2calculate_particle_availability.<locals>.<genexpr>I   s)   øè ø€ ð 
á$�ð �I‰I�f˜bÓ! ]Ô2Ù$ùs   ƒ!c              3   óf   •K  — | ](  }‰j                  |j                  d d«      «      ‰k(  –— Œ* y­wr   )r   r   )r   r    r   r   s     €€r   r!   z2calculate_particle_availability.<locals>.<genexpr>M   s4   øè ø€ ð -
á$�ð × Ñ  §¡¨6°2Ó!6Ó7¸3Õ>Ù$ùs   ƒ.1)r   Úany)r   r   r	   r   r   Úgroup_particlesÚshould_enableÚshould_checks   `  ``   r   Úcalculate_particle_availabilityr'   1   sŸ   ú€ ñ* �{Ô&<Ñ<ä0°Ñ=ˆÜó 
á$ó
ó 
ˆð %ò 
¬ô -
á$ó-
ó *
ˆð ˜,Ð&Ð&ð $ }Ð4ˆàò 1ØÐ+Ð+ò1à˜[Ñ)¨SÑ0ð 	ð ˜,Ð&Ð&r   Ú	mod_namesc                 ó²  — g }| D ]v  }t         j                  |z  }|j                  «       s-t        j	                  d|› �«       |j                  d|› �«       ŒS	 t        |«       t        j                  d|› �«       Œx |rdd	j                  |«      fS y
# t        $ r9}t        j                  d|› �«       |j                  d|› d|›�«       Y d}~ŒÌd}~ww xY w)z¶
    Delete particle mod folders from the particles directory.

    Args:
        mod_names: Names of the mod folders to delete

    Returns:
        Tuple of (success, message)
    zCannot delete particle mod z)Could not find a particle mod folder for zDeleted particle mod zFailed to delete particle mod zFailed to delete z: NFÚ
)Tz)Selected particle mods have been deleted.)r   Úparticles_dirÚis_dirÚlogÚwarningÚappendr   ÚinfoÚ	ExceptionÚ	exceptionÚjoin)r(   Úerrorsr   Úmod_pathÚes        r   Údelete_particle_modsr7   ]   sÛ   € ð €FÛˆÜ×'Ñ'¨(Ñ2ˆØ�‰Ô Ü�K‰KÐ5°h°ZÐ@ÔAØ�M‰MÐEÀhÀZÐPÔQØð	AÜ�8ÔÜ�H‰HÐ,¨X¨JÐ7Õ8ð ñ Ø�d—i‘i Ó'Ð'Ð'à<øô ò 	AÜ�M‰MÐ:¸8¸*ÐEÔFØ�M‰MÐ-¨h¨Z°r¸!¸Ð?×@Ñ@ûð	Aús   Á#BÂ	CÂ/CÃCc                 óv   — t        |«      }| j                  «       D ��ci c]  \  }}||vsŒ||“Œ c}}S c c}}w )N)Úsetr   )r   r(   ÚremovedÚparticler   s        r   Úprune_selectionsr<   }   s>   € ä�)‹n€GØ/9×/?Ñ/?Ô/AÔXÑ/A™m˜h¨ÀSÐPWÒEWˆH�c‰MÐ/AÒXÐXùÓXs   Ÿ5¬5)ÚloggingÚcollections.abcr   Úcore.configr   Úcore.constantsr   Úcore.util.filer   Ú	getLoggerr-   ÚdictÚstrÚlistÚboolr   r9   Útupler'   r7   r<   © r   r   Ú<module>rI      s  ðÛ Ý #å Ý 1Ý !à€g×ÑÓ€ð#Ø�S˜#�X‘ð#à˜c 4˜i™ð#ð ð#ð 
ˆ#ˆsˆ(�^ó	#ðL)'Ø	ð)'àð)'ð ð)'ð �s‘8ð	)'ð
 ˜3 ˜8‘nð)'ð ˆ4�ˆ:Ñó)'ðX= D¨¡Ið =°%¸¸c¸	Ñ2Bó =ð@Y ¨¨c¨Ñ!2ð Y¸tÀC¹yð YÈTÐRUÐWZÐRZÉ^ô Yr   