
Oc           @   s   d  d l  Z  d Z d Z d Z d Z d Z g  Z g  a g  a	 d e
 f d     YZ d e f d     YZ e   Z d	 e f d
     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d S(   iNg?i   i
   t   Elementc           B   s   e  Z d  Z d Z d Z d Z d Z d Z d Z e	 Z
 e	 Z d d  Z d   Z d	   Z d
   Z d   Z d   Z d e d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   g      ?i   i   s   Base Elementi    id   g     pr@c         C   s<   | | |  _  |  _ | |  _ | |  _ | |  _ |  j   d  S(   N(   t   xt   yt   temperaturet   gridt   activet	   on_create(   t   selfR   R   R   R   R   (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyt   __init__   s
    			c         C   s   d  S(   N(    (   R   (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyR      s    c         C   sD   |  j  j |   |  |  j |  j |  j <t |  j |  j f g 7a d  S(   N(   R   t   appendR   R   R   t   changed(   R   (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyt   register   s    c         C   sl   t  |  j |  j f g 7a  d  |  j |  j |  j <t j |   t |  _ |  |  j	 k rh |  j	 j
 |   n  d  S(   N(   t   changedemptyR   R   t   NoneR   t   toremoveR	   t   Truet   removedR   t   remove(   R   (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyR   "   s    	c         C   s?   | |  j  |  j |  j |  j |  j  } | j   |  j   d  S(   N(   R   R   R   R   R   R   R   (   R   t   finalt   new(    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyt	   transform*   s    '
c         C   s   |  j  |  j f S(   N(   R   R   (   R   (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyt   position.   s    c         C   s  |  j  r d S|  j } |  j } |  j | d |  _ |  j | d |  _ |  j d k rb d |  _ n |  j t d k r t |  _ n  d |  j | | <|  |  j |  j |  j <|  j t k r |  j   d S|  j t k r |  j   d St	 j
 |  j |  j f  t j
 | | f  d S(   s2   sets a new x&y position based on a direction tupleNi    i   i   (   R   R   R   t   MAXXR   R   t   MINYR   t   MAXYR
   R	   R   (   R   t	   directiont   gravityt   oldxt   oldy(    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyt   move0   s(    			

c         C   s  |  j    } g  | D]$ } | d k	 r | t k	 r | ^ q } x | D] } |  j |  qD Wg  | D] } | t k	 rb | ^ qb } x | D] } |  j |  q Wt |  r d S|  j d k rt j   |  j k  r| d d k r |  j	 d  q| d t k	 r,|  j
 | d j
 k r,|  j | d  q| d d k rL|  j	 d  q| d d k rl|  j	 d  q| d d k r|  j r|  j	 d  q| d	 d k r|  j r|  j	 d  qqn |  j d k  rt j   |  j k  r| d d k r|  j	 d  q| d d k r(|  j	 d  q| d
 d k rH|  j	 d  q| d d k rq|  j rq|  j	 d  q| d	 d k r|  j r|  j	 d  qqn  d S(   s   does stuff based on what is around this item.
		nearby is a tuple containing a clockwise list of
		elements next to this one starting at the top left
		0	1	2
		7	x	3
		6	5	4
		
		Ni    i   i   i   ii   i   i   i   (   i    i   (   ii   (   i   i   (   ii    (   i   i    (   i    i(   ii(   i   i(   ii    (   i   i    (   t   nearbyR   t   BOUNDARYt	   temperatet   reactiont   allR   t   randomt   moverateR   t   namet   densitycheckt   liquid(   R   R   t   nt   nb(    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyt   actJ   sH    	1%&c           C   s   d  S(   N(    (    (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyt
   last_thingx   s    c         C   sY   t  |  j | j  } |  j | j | t } |  j | 8_ | j | 7_ |  j   d  S(   N(   t   mint   conductivityR   t   GLOBAL_TEMP_FACTORt   temp_action(   R   t   touchingt   kct   dt(    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyR    {   s
    c         C   s   | j  |  j  k  r |  j } |  j } | j } | j } | |  _ | |  _ | | _ | | _ |  |  j |  j |  j <| |  j | j | j <n  d S(   s>   checks density of what's below to see if it can take its placeN(   t   densityR   R   R   (   R   t   itemt   x0t   y0t   x1t   y1(    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyR&      s    								c         C   s   d  S(   N(    (   R   (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyR/      s    c         C   s   |  j  S(   N(   t	   basecolor(   R   (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyt   color   s    c         C   s   |  j  } |  j } |  j } | | d | d } | | | d } | | d | d } | | d | } | | d | d } | | | d }	 | | d | d }
 | | d | } | | | | | |	 |
 | f S(   Ni   (   R   R   R   (   R   R   R   R   t   n0t   n1t   n2t   n3t   n4t   n5t   n6t   n7(    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyR      s    			c         C   s   d  S(   N(    (   R   R0   (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyR!      s    (   i   i   i   (   i    i   (   t   __name__t
   __module__R$   t   specific_heatR-   R9   R%   R   R3   t   FalseR'   R   R   R   R   R   R   R   R   R   R*   R+   R    R&   R/   R:   R   R!   (    (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyR       s0   						.						t   Boundaryc           B   sD   e  Z d  Z d Z d Z d Z d Z e Z d d d d d d  Z
 RS(   t   boundaryi   i    i  g     pr@c         C   s2   | | |  _  |  _ | |  _ | |  _ | |  _ d  S(   N(   R   R   R   R   R   (   R   R   R   R   R   R   (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyR      s    		(   i   i   i   N(   RC   RD   R%   R9   R$   R   R3   RF   R'   R   R   (    (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyRG      s   t   Waterc           B   s;   e  Z d  Z d Z d Z d Z d Z d Z e Z	 d   Z
 RS(	   RI   i2   i   id   gffffff?i   i   c         C   s8   |  j  d k r4 t j   d k  r4 |  j t  q4 n  d  S(   Niz  g      ?(   R   R#   R   t   Steam(   R   (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyR/      s    (   i2   i2   i   (   RC   RD   R%   R9   RE   R$   R   R3   R   R'   R/   (    (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyRI      s   t   Oilc           B   s;   e  Z d  Z d Z d Z d Z d Z d Z e Z	 d   Z
 RS(   RK   i   g?i   i
   i2   c         C   s8   |  j  d k r4 t j   d k  r4 |  j t  q4 n  d  S(   Ni  g?(   R   R#   R   t   Fire(   R   (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyR/      s    (   i   i   i   (   RC   RD   R%   R9   R$   R   R3   RE   R   R'   R/   (    (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyRK      s   RJ   c           B   s;   e  Z d  Z d Z d Z d Z d Z d Z e Z	 d   Z
 RS(	   RJ   i2   i   g?ii   ix   c         C   s8   |  j  d k  r4 t j   d k  r4 |  j t  q4 n  d  S(   Nir  g      ?(   R   R#   R   RI   (   R   (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyR/      s    (   i2   i2   i   (   RC   RD   R%   R9   R$   R   R3   RE   R   R'   R/   (    (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyRJ      s   t   Wallc           B   s;   e  Z d  Z d Z d Z d Z e Z d Z d Z	 d   Z
 RS(   RM   id   g      ?i    i   c         C   s&   t  d t |  j d d   d d f S(   Nid   i   i   (   t   maxR,   R   (   R   (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyR:      s    (   id   id   id   (   RC   RD   R%   R9   R$   R   RF   R'   R3   RE   R:   (    (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyRM      s   RL   c           B   sD   e  Z d  Z d	 Z d Z d Z d Z e Z d Z	 d   Z
 d   Z RS(
   RL   i   i2   g      ?ii   id   c         C   s   d |  _  d  S(   Ni  (   R   (   R   (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyR      s    c         C   s#   t  j    d k r |  j   n  d  S(   NgGz?(   R#   R   (   R   (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyR/      s    (   i   i2   i2   (   RC   RD   R%   R9   R$   R   R3   R   R'   RE   R   R/   (    (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyRL      s   	(   NNNNNNNN(   R#   R   t   NEARBYR.   R   R   R   R   R
   R   t   objectR    RG   R   RI   RK   RJ   RM   RL   (    (    (    s9   C:\Users\Dano\Desktop\development\fallingsand\elements.pyt   <module>   s    	