Ñò
Ñ§£Pc           @   sà   d  d k  l Z d  d k Td  d k l Z d  d k l Z h h  d 6h  d 6e ƒ  d 6Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d d „ Z d „  Z d S(   iÿÿÿÿ(   t   unpack(   t   *(   t   chain(   t   vehiclest   vehTypeFragst   vehDossiersCutt   rareAchievementsc         C   s£   h  } d } x† |  d D]z } | | | <| | } | d d j p) | d d j p | d d j p t  ‚ | d d j o q n | | d 7} q W| | d <| S(   Ni    t   pt   st   bi   t   _staticRecordsSize(   t   AssertionError(   t   recordsLayoutt   recordPackingst	   positionst   sumt   recordt   recordPacking(    (    s    scripts/common/dossiers/utils.pyt   buildStaticRecordPositions   s     

:
c         C   sO   d } xB |  d D]6 } | | } | d d j o q n | | d 7} q W| S(   Nt   <i    R	   i   (    (   R   R   t   fmtR   t   packing(    (    s    scripts/common/dossiers/utils.pyt   buildStaticRecordsFmt%   s     
c         C   s   |  S(   N(    (   t   data(    (    s    scripts/common/dossiers/utils.pyt   _getTupleValues2   s    c         C   s   |  S(   N(    (   t   values(    (    s    scripts/common/dossiers/utils.pyt   _getTupleData9   s    c         C   sA   t  |  ƒ } d | f } | g } | |  7} | | d d | f S(   Ns   H%dIi   i   (   t   len(   t   achievementst   countR   R   (    (    s    scripts/common/dossiers/utils.pyt   getRareAchievementsFmtValues?   s
    	
c         C   sa   t  d |  | | d !ƒ d } | d d | } t  d | f |  | d | !ƒ } t | ƒ | f S(   Ns   <Hi   i    i   s   <%dI(   R    t   list(   t	   compDescrt   offsetR   t   next_offsetR   (    (    s    scripts/common/dossiers/utils.pyt   unpackRareAchievementsI   s    !c         C   sZ   t  |  ƒ } d | | f } | g } | |  i ƒ  7} | |  i ƒ  7} | | d d | f S(   Ns   H%dI%dHi   i   (   R   t   keysR   (   R   R   R   R   (    (    s    scripts/common/dossiers/utils.pyt   getVehTypeFragsFmtValuesR   s    	c         C   s‘   t  d |  | | d !ƒ d } | d d | } t  d | | f |  | d | !ƒ } h  } x* t | ƒ D] } | | | | | | <qg W| | f S(   Ns   <Hi   i    i   s   <%dI%dH(   R    t   xrange(   R    R!   R   R"   R   R   t   i(    (    s    scripts/common/dossiers/utils.pyt   unpackVehTypeFrags]   s    $ c         C   sw   t  |  ƒ } d d | f } | g } x9 |  i ƒ  D]+ \ } \ } } } | | | | | f 7} q3 W| | d d | f S(   Ns   H%dIi   i   i   (   R   t	   iteritems(   R   R   R   R   t   vehTypeCompDescrt   battlesCountt   winst   markOfMastery(    (    s    scripts/common/dossiers/utils.pyt   getVehDossiersCutFmtValuesi   s    	 c         C   s»   t  d |  | | d !ƒ d } | d d | } t  d d | f |  | d | !ƒ } h  } xS t | ƒ D]E } | d | d | d | d | d | d f | | d | <qh W| | f S(	   Ns   <Hi   i    i   s   <%dIi   i   i   (   R    R&   (   R    R!   R   R"   R   R   R'   (    (    s    scripts/common/dossiers/utils.pyt   unpackVehDossiersCutt   s    % Cc         C   sF   t  |  d ƒ } d d | | d | t t f | | <d | t | <d  S(   Ni   R   s   %dHi   i    (   i    (   R   R   R   t   RECORD_DEFAULT_VALUES(   R   t
   recordNamet   record_packingt   dynRecordsCount(    (    s    scripts/common/dossiers/utils.pyt   extendRecordPacking‚   s    c          C   sU  x0 t  d D]$ }  |  t j o t d |  ƒ q q WxC t t Œ  D]5 }  |  t  j o" |  d d j o t d |  ƒ q@ q@ WxC t t Œ  D]5 }  |  t  j o" |  d d j o t d |  ƒ q† q† WxC t t Œ  D]5 }  |  t  j o" |  d d j o t d |  ƒ qÌ qÌ WxI t i ƒ  D]; \ }  } | d d j o |  t j o t d |  ƒ qqWd  S(   Ni   s'   Packing for the record is not specifiedi    t   _s.   Layout containg record that is not in the listR   s-   Default value is not specified for the record(	   t   RECORD_NAMESt   _RECORD_PACKINGt   LOG_WARNINGR   t   _ACCOUNT_RECORDS_LAYOUTt   _VEHICLE_RECORDS_LAYOUTt   _TANKMAN_RECORDS_LAYOUTR)   R0   (   R   R   (    (    s    scripts/common/dossiers/utils.pyt   checkIntegrity�   s(         c         C   s>  h  } | d  j o t |  | ƒ } n | d  j o t |  | ƒ } n | d } t | | |  ƒ } d } x’ |  d D]† }	 | |	 }
 |
 d d j o | | | |	 <| d 7} qt |
 d d j o qt qt |
 d | | | |
 d !ƒ | |	 <| |
 d 7} qt Wx9 |  d D]- }	 | |	 }
 |
 d | | ƒ \ | |	 <} q	W| S(	   NR
   i    R   i   R	   i   i   i   (   t   NoneR   R   R    (   R   R2   R    R   t   staticRecordPositionsR   R!   R   t   indexR   R   (    (    s    scripts/common/dossiers/utils.pyt   unpackDossierCompDescr¢   s.    
 
# 
!c         C   s,   t  i |  ƒ \ } } } t  i i | ƒ | S(   N(   R   t   parseIntCompactDescrt   g_listt   getList(   R    t
   itemTypeIDt   nationIDt	   vehicleID(    (    s    scripts/common/dossiers/utils.pyt   vehicleTypeByCompactDescr¿   s    N(   t   structR    t   debug_utilst	   itertoolsR   t   itemsR   R   R0   R   R   R   R   R   R#   R%   R(   R.   R/   R4   R<   R=   R@   RG   (    (    (    s    scripts/common/dossiers/utils.pyt   <module>   s*   

					
								