³ò
hHOc        
   @€  se  d  Z  d d k l Z d d k l Z d d k l Z d d k Z d d k l Z d d k	 l
 Z
 d d k l Z e
 d	 ƒ Z e i d
 ƒ a e i d ƒ Z e i d ƒ Z e d ƒ e d ƒ d d g Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ e ƒ  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d S(   sj   
$Rev: 610 $
$LastChangedBy: satoon101 $
$LastChangedDate: 2011-12-31 01:31:07 -0500 (Sat, 31 Dec 2011) $
iÿÿÿÿ(   t   with_statement(   t   shuffle(   t   pathN(   t   getWeaponList(   t   get_game_dir(   t
   langstrings   cfg/gungame51/weapon_orders/s   *.txtt   gg_multikill_overridet   gg_weapon_order_sort_types   #primarys
   #secondaryt   weapon_hegrenadet   weapon_knifet   WeaponOrderErrorc           B€  s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyR
   .   s   t   _BaseWeaponOrderc           B€  s¹   e  Z d  „  Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z e d „  ƒ Z	 e d „  ƒ Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C€  sS   | i  |  _ | |  _ |  i i d d ƒ i ƒ  |  _ h  |  _ h  |  _ |  i	 ƒ  d  S(   Nt   _t    (
   t   namebaset   _namet	   _filepatht   namet   replacet   titlet   _titlet   _defaultt   _randomt   _set_active_order_type(   t   selft   path_instance(    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyt   __init__3   s    			c         C€  s   |  i  S(   N(   t   _active(   R   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyt   active@   s    c         C€  s   |  i  S(   N(   R   (   R   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyR   D   s    c         C€  s   |  i  S(   N(   R   (   R   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyt   filepathH   s    c         C€  s   |  i  S(   N(   R   (   R   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyR   L   s    c         C€  s   |  i  S(   N(   R   (   R   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyt   defaultP   s    c         C€  s   |  i  S(   N(   R   (   R   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyt   randomT   s    c         C€  s   t  |  i ƒ S(   N(   t   lenR   (   R   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyt   totallevelsX   s    c         C€  s–   t  t ƒ d j o |  i |  _ np t  t ƒ d j o |  i |  _ nM t  t ƒ d j o |  i |  _ n* t d d |  i d t  t ƒ d ƒ ‚ d  S(   Ns   #defaults   #randomt   0s"   Unable to initialize weapon order s   "%s" due to invalid s#   gg_weapon_order_sort_type of "%s". s!   Expected "#default" or "#random".(   t   strR   R    R   R!   R
   R   (   R   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyR   \   s    c      	   C€  sÃ   |  i  i ƒ  } g  } x6 t | ƒ D]( } | i d j o Pn | i | ƒ q" W| o! t | ƒ } | t | ƒ  } n t | ƒ | | 7} t t t	 d t | ƒ d ƒ | ƒ ƒ |  _
 |  i ƒ  d  S(   Nt   knifet	   hegrenadei   (   s   knifes	   hegrenade(   R    t   valuest   reversedt   weapont   appendR"   R   t   dictt   zipt   rangeR   R   (   R   t   weaponst   knifeOrNadet   x(    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyt	   randomizej   s     

+c   
      C€  sš  t  i d d ƒ t  i d d t d h  |  i d <ƒ ƒ t  i d d ƒ t d ƒ } g  } | i d ƒ d d	 !D] } | t | ƒ qp ~ } d
 i g  } | D] } | d | q ~ ƒ d
 } t  i d d | ƒ t  i d d | ƒ t  i d d | ƒ x… |  i D]z } |  i | i } |  i | i	 }	 t  i d d t
 | ƒ i | d ƒ t
 |	 ƒ i | d ƒ | i | d d ƒ f ƒ qWt  i d d | ƒ d S(   sE   
        Echos (prints) the current weapon order to console.
        i    R   s
   [GunGame] s   WeaponOrder:Echot   files   WeaponOrder:Echo:TableColumnst   |i   i   t   +t   -s   [GunGame] +s   [GunGame] |%s|%s|%s |i   N(   t   est   dbgmsgR   R   t   splitR"   t   joinR   R*   t   killsR%   t   centert   rjust(
   R   t   echo_stringt   _[1]R1   t   echo_lengthst   _[2]t   echo_columnst   levelR*   t	   multikill(    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyt   echoŒ   s&    72
  c         C€  sF   |  i  ƒ  } |  i | ƒ p t d | d | ƒ ‚ n |  i | i S(   Ns#   Can not get weapon for level: "%s".s    Level is out of range (1-%s).(   t   get_total_levelst   is_valid_levelR
   R   R*   (   R   RC   t   totalLevels(    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyt
   get_weapon£   s    c         C€  sJ   |  i  ƒ  } |  i | ƒ p  t d d | d | ƒ ‚ n |  i | i S(   Ns'   Can not get multikill value for level: s   "%s".s    Level is out of range (1-%s).(   RF   RG   R
   R   R;   (   R   RC   RH   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyt   get_multikill«   s    c         C€  s   t  |  i ƒ S(   N(   R"   R   (   R   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyRF   ³   s    c         C€  s#   |  i  ƒ  } | t d | d ƒ j S(   Ni   (   RF   t   xrange(   R   RC   RH   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyRG   ¶   s    (   R   R   R   t   propertyR   R   R   R   R    R!   R#   R   R2   RE   RI   RJ   RF   RG   (    (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyR   2   s   			"				t   WeaponOrderTXTc           B€  s   e  Z d  „  Z d „  Z RS(   c         O€  s'   t  t |  ƒ i | | Ž  |  i ƒ  d  S(   N(   t   superRM   R   t   _parse(   R   t   argst   kwargs(    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyR   ¼   s    c         C€  s8  yÛ |  i  i ƒ  i } i ƒ  } z° | ~ } g  } | i ƒ  D] } | | i ƒ  q< ~ } t d „  | ƒ } g  } | D]  } | | i d ƒ d i ƒ  qu ~ } g  } | D] } | d i	 | i ƒ  ƒ q© ~ } Wd  | ~ QXWn2 t
 j
 o& }	 t d d |  i  |	 f ƒ ‚ n Xd }
 x| D]} | i d ƒ o< d	 d  k } | i d
 d |  i d d t d d ƒqn y | i ƒ  \ } } Wn t j
 o | } d } n Xd | t j o t d | ƒ ‚ n y t | ƒ } Wn' t j
 o t d | d ƒ ‚ n X|
 d 7}
 t | | ƒ |  i |
 <|  i ƒ  qWd  S(   Nc         S€  s   |  o |  i  d  ƒ S(   s   //(   t
   startswith(   R1   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyt   <lambda>Æ   s    s   //i    R   s   Cannot parse weapon order file s   (%s): IOError: %st   @s   =>iÿÿÿÿs,   Please remove the "@" or "=>" line from the s   weapon order "%s". s   This is s   no longer supported.t
   stackleveli   i   s	   weapon_%ss   "%s" is not a valid weapon!s   "%s" is not a valid s   multikill value.(   RT   s   =>(   R   t   opent   __exit__t	   __enter__t	   readlinest   stript   filterR9   t   lowerR:   t   IOErrorR
   RR   t   warningst   warnR   t   DeprecationWarningt
   ValueErrort   VALID_WEAPONSt   intt   _WeaponOrderEntryR   R2   (   R   R?   RA   t   weaponOrderFilet   _[3]R1   t   linest   _[4]t   _[5]t   eRC   t   lineR^   R*   RD   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyRO   À   sD    (-4@ 


(   R   R   R   RO   (    (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyRM   »   s   	t   _WeaponOrderStoragec           B€  s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   s€   A class-based dictionary to contain instances of _BaseWeaponOrder.

    Note:
        This class is meant for private use.

    c         O€  s-   d |  i  j o t i |  ƒ |  _ n |  i S(   Nt   _the_instance(   t   __dict__R,   t   __new__Rm   (   t   clst   pt   k(    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyRo     s    c         C€  s=   t  | t ƒ p t d d ƒ ‚ n t t |  ƒ i | | ƒ S(   Ns&   Only instances of _BaseWeaponOrder ares$   allowed to be set in the dictionary.(   t
   isinstanceR   R
   RN   Rl   t   __setitem__(   R   R   t   value(    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyRt     s    c         C€  s   t  | t ƒ p t | ƒ } n | i } | i } | d j o t | ƒ |  | <n: | d j o t | ƒ |  | <n t d | d d ƒ ‚ d S(   sÐ   Adds a path instance to the dictionary, setting the namebase as the
        key, and the value as either a WeaponOrderTXT or WeaponOrderINI class
        instance based on the extension of the file.

        s   .txts   .inis   Invalid extension "%s" for s$   weapon order file. Must be ".txt" ors   ".ini".N(   Rs   R   R   t   extRM   t   WeaponOrderINIR
   (   R   t   path_to_orderR   t	   extension(    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyt   add  s    		(   R   R   t   __doc__Ro   Rt   Rz   (    (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyRl     s   		Rd   c           B€  s/   e  Z d  „  Z e d „  ƒ Z e d „  ƒ Z RS(   c         C€  s   | |  _  | |  _ d  S(   N(   t   _killst   _weapon(   R   R*   R;   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyR   1  s    	c         C€  s2   t  t ƒ } |  i d j o | o | Sn |  i S(   NR&   R'   (   s   knifes	   hegrenade(   Rc   R   R*   R|   (   R   t   override(    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyR;   5  s    c         C€  s   |  i  S(   N(   R}   (   R   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyR*   <  s    (   R   R   R   RL   R;   R*   (    (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyRd   0  s   	t   WeaponOrderManagerc           B€  sM   e  Z d  „  Z e d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   c         C€  s9   d |  i  j o" t i |  ƒ |  _ d  |  i _ n |  i S(   NRm   (   Rn   t   objectRo   Rm   t   NoneR   (   Rp   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyRo   B  s    c         C€  s   |  i  S(   N(   R   (   R   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyR   H  s    c         C€  sv   | t  j o t d | d ƒ ‚ n |  i o |  i i | j o d SqN n t  | |  _ |  i i ƒ  |  i ƒ  d S(   s4   Would this not be triggered by gg_weapon_order_file?s    The specified weapon order "%s" s   does not exist.N(   t   weaponOrderStorageR
   R   R   R   R   t   restart_game(   R   R   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyt   activateL  s    

c         C€  sQ   t  i d t d ƒ ƒ t  i i |  d |  i ƒ x t D] } t i | ƒ q6 Wd  S(   Ni    t   Load_WeaponOrderst   server_cvar(	   R7   R8   R   t   addonst   registerForEventR†   t   weaponOrderFilesTXTR‚   Rz   (   R   t	   orderPath(    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyt   load_ordersb  s
     c         C€  sþ   | d } | d } | d j o d  Sn | d j o |  i  | ƒ d  Sn | d j o¢ | d j o d  Sn |  i o | d j o% |  i i |  i i j o d  SqÛ n3 | d j o% |  i i |  i i j o d  SqÛ n |  i i ƒ  |  i ƒ  qú n d  S(	   Nt   cvarnamet	   cvarvalueR$   t   gg_weapon_order_fileR   s   #defaults   #random(   s   #defaults   #random(   R„   R   R    R!   R   Rƒ   (   R   t	   event_varRŒ   R   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyR†   i  s&    


c         C€  sC   |  i  i ƒ  t i t d h  |  i  i d <ƒ ƒ t i d ƒ d  S(   Ns   WeaponOrder:ChangedTot   tos   mp_restartgame 2(   R   RE   R7   t   msgR   R   t   ServerCommand(   R   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyRƒ     s    %c         C€  s   t  i i |  d ƒ d  S(   NR†   (   R7   R‡   t   unregisterForEvent(   R   (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyt
   unregister”  s    (
   R   R   Ro   RL   R   R„   R‹   R†   Rƒ   R”   (    (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyR   A  s   				&	c           C€  s   t  i d ƒ a d S(   s'  Function that retrieves a new list of weapon order files found in the
    GunGame cfg/weapon_orders directory.

    Notes:
        * Should be used sparingly as we do not want to read from the disk
          often.
        * GunGame retrieves the list of weapon orders when it first loads.

    s   *.txtN(   t   weaponOrdersPatht   filesR‰   (    (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pyt   refresh_weapon_order_filesœ  s    (   R{   t
   __future__R    R!   R   R   R7   t	   weaponlibR   t   gungame51.coreR   t"   gungame51.core.messaging.shortcutsR   R•   R–   R‰   t	   ServerVarR   R   Rb   t	   ExceptionR
   R€   R   RM   R,   Rl   R‚   Rd   R   R—   (    (    (    sY   /home/saberrider/srcds/css/cstrike/addons/eventscripts/gungame51/core/weapons/__init__.pys   <module>   s*   ‰F,	[