Ñò
6b)Lc           @   sÔ   d  d k  l Z l Z d  d k Z e d ƒ \ Z Z Z d  d k Z e i	 d d ƒ e i
 Z
 d e f d „  ƒ  YZ xE d D]= Z e d „ Z e d „ Z e e e ƒ Z e e e e ƒ qy Wd e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   divt   truedivNi   t   allt   ignoret   BuyableClassc           B   sP   e  Z d  d „ Z d „  Z e e ƒ Z e d „ Z d „  Z d „  Z	 d „  Z
 RS(   t    c         C   sP   | |  _  |  _ | |  _ | |  _ | |  _ | o | d |  _ n
 d |  _ d  S(   Nt   _R   (   t   namet   idt   descriptiont   _costt   prerequisitest   prefix(   t   selfR   R	   t   costR   t   type(    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   __init__   s    			c         C   sV   t  |  i t ƒ } | t c t i t i i 9<| t c d :<| t c t i	 9<| S(   Ni'  (
   t   arrayR
   t   longt   labort   gt   minutes_per_dayt   plt   labor_bonust   cput   seconds_per_day(   R   R   (    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   get_cost*   s
    c         C   sk   t  i | t ƒ } t  i | t ƒ } d } | p' d t  i | t ƒ i d d ƒ } n d | | | f S(   NR   s   , %st    u   Â u   %sÂ CPU, %sÂ money%s(   R   t   to_cpuR   t   to_moneyt   casht   to_timeR   t   replace(   R   R   t	   hide_timet   cpu_costt	   cash_costt
   labor_cost(    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   describe_cost3   s    'c         C   s/   |  i  |  i ƒ } d } | |  i | |  i f S(   Ns   %s
Cost: %s
---
%s(   R%   R   R   R	   (   R   t   cost_strt   template(    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   get_info;   s    c         C   s   t  t |  i ƒ t | i ƒ ƒ S(   N(   t   cmpt   tupleR   (   R   t   other(    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   __cmp__@   s    c         C   s   t  } t |  i ƒ t j p t ‚ xe |  i D]Z } | d j o
 t } n | t i j o! t i | i o | o t Sq- | p t  Sq- W| S(   Nt   OR(	   t   FalseR   R   t   listt   AssertionErrort   TrueR   t   techst   done(   R   t   or_modet   prerequisite(    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt	   availableF   s    
 
!		(   t   __name__t
   __module__R   R   t   propertyR   R.   R%   R(   R,   R6   (    (    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyR      s   			t   countt   complete_countt   total_countt   total_complete_countc         C   s"   t  i i |  i |  i d | ƒ S(   NR   (   R   t   statst   get_statisticR   R   (   R   t   stat(    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   getY   s    c         C   s%   t  i i |  i |  i d | | ƒ S(   NR   (   R   R>   t   set_statisticR   R   (   R   t   valueR@   (    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   set[   s    t   Buyablec           B   s˜   e  Z d  d „ Z e d „  ƒ Z d „  Z d „  Z d „  Z d „  Z e e e ƒ Z	 d d „ Z
 d	 „  Z d
 „  Z d d d d „ Z d „  Z d „  Z RS(   i   c         C   s¥   | |  _  | i | 7_ | i | 7_ | i |  _ | i |  _ | i |  _ | i |  _ | i | |  _ |  i t	 c | <t
 |  i t ƒ |  _ | |  _ t |  _ d  S(   N(   R   R:   R<   R   R   R	   R   R   t
   total_costR   R   R   t	   cost_leftR.   R3   (   R   R   R:   (    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyR   b   s    		c         C   s
   |  i  i S(    (   R   R6   (   R   (    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   <lambda>u   s    c         C   sH   | d j  o7 t  |  i t ƒ |  _ t  |  i t ƒ |  _ d |  _ n d  S(   Ng¤p=
×£@i   (   R   RG   R   RF   R:   (   R   t   save_version(    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   convert_fromw   s    c         C   s`   |  i  pR |  i i |  i 7_ |  i i |  i 7_ t d d d g t ƒ |  _ t |  _  n d  S(   Ni    (	   R3   R   R;   R:   R=   R   R   RG   R1   (   R   (    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   finish}   s
    
c         C   s   |  i  |  i S(   N(   RF   RG   (   R   (    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   get_cost_paid„   s    c         C   s   |  i  | |  _ d  S(   N(   RF   RG   (   R   RC   (    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   set_cost_paid‡   s    i    c         C   s&   t  | t ƒ } t |  i | |  i ƒ S(   N(   R   R   R   t	   cost_paidRF   (   R   R6   t   available_array(    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   _percent_completeŒ   s    c         C   s   | |  i  d j i ƒ  S(   Ni    (   RF   t   min(   R   t   complete(    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt	   min_valid   s    c         C   s   |  i  |  i ƒ  ƒ S(   N(   RS   RP   (   R   (    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   percent_complete“   s    c         C   sÙ   | d j o t i i } n | d j o t i i } n |  i | | | g ƒ } |  i | ƒ } t d | d ƒ } | | | | j <| |  i } |  i	 } t
 i t
 i t
 i t
 i | ƒ ƒ | ƒ }	 |	 | }
 |
 |	 f S(   s   Given an amount of available resources, calculates and returns the
           amount that would be spent and the progress towards completion.i   gš™™™™™©?N(   t   NoneR   R   R   t   cpu_poolRP   RS   RQ   RF   RN   t   numpyt   maximumt   castt   int64t   ceil(   R   t   cash_availablet   cpu_availablet   timet   pct_completet   least_completet   complete_capt   raw_paidt   was_completeRN   t   spent(    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   calculate_work—   s    	"	
c         O   s‹   |  i  o d S|  i | | Ž  \ } |  _ t i i t | t ƒ 8_ t i i t | t ƒ 8_ |  i	 d j i
 ƒ  o |  i ƒ  t St S(   s   As calculate_work, but apply the changes.

        Returns a boolean indicating whether this buyable is done afterwards.
        Ni    (   R3   Re   RN   R   R   RV   t   intR   R   RG   R   RK   R1   R.   (   R   t   argst   kwargsRd   (    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   work_on¸   s    

c         C   s<   |  i  i |  i 8_ |  i o |  i  i |  i 8_ n d  S(   N(   R   R:   R3   R;   (   R   (    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   destroyÍ   s    
(   i    i    i    N(   R7   R8   R   R9   R6   RJ   RK   RL   RM   RN   RP   RS   RT   RU   Re   Ri   Rj   (    (    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyRE   a   s   						!	(   s   counts   complete_counts   total_counts   total_complete_count(   t   operatorR    R   R   t   rangeR   R   R   RW   t   seterrR   t   objectR   R@   RA   RD   R9   t	   stat_propt   setattrRE   (    (    (    sE   /home/trcarlson/Desktop/python/endg-singularity/trunk/code/buyable.pyt   <module>   s   	8 