m
/Cc           @   s   d  k  Td  k Td  k Td k l Z d  k Td k l Z d k l	 Z	 d k
 Z
 d k Z d k Z d k Z d k Z d k Z d e f d     YZ d f  d     YZ d	 e f d
     YZ d e f d     YZ d S(   (   t   *(   s   Irc(   s   Thread(   s   SafeConfigParserNt   Audioc           B   s,   t  Z d   Z d   Z d   Z d   Z RS(   Nc         C   s   t  i |   t |  _ t i d  d j p t i d d j o d  k a t |  _ nM d  k	 a	 t
   } | i d  | i d d  } t	 i |  |  _ t |  _ | |  _ t i i |  |  _ d  S(   Ni   t   winis   myrmidia.confR   t   mixer(   t   Threadt   __init__t   selft   Truet   runningt   syst   platformt   winsoundR   t   aot   SafeConfigParsert   configt   readt   getR   t   AudioDevicet   devt   Falset   filet   oggt   vorbist
   VorbisFilet	   audiofile(   R   R   R   R   (    (    t1   /home/mike/src/myrmidia/trunk/myrmidia/myrgame.pyR      s    	( 	 				c         C   s   |  i   d  S(   N(   R   t   stop(   R   (    (    R   t   __del__   s    c         C   s   t  |  _ d  S(   N(   R   R   R   (   R   (    (    R   R   "   s    c         C   s   x |  i o| |  i i d  \ } } } | d j o8 |  i o t i	 | t i
  q |  i i | |  q t i i |  i  |  _ q Wd  S(   Ni   i    (   R   R   R   R   t   buft   bytest   bitR   R   t	   PlaySoundt   SND_NODEFAULTR   t   playR   R   R   R   (   R   R   R   R   (    (    R   t   run%   s     

(   t   __name__t
   __module__R   R   R   R"   (    (    (    R   R   
   s   			t   Creaturec           B   sb   t  Z d  Z e d  Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z RS(
   s   Wrapper for creature datac         C   s^   d  |  _ | |  _ | |  _ | |  _ | |  _ | |  _ d |  _ d |  _	 | |  _
 d |  _ d  S(   Ni    t   I(   t   NoneR   t   modelNot   namet   xt   dxt   zt   dzt   interpt   rott
   appearancet   curanim(   R   R)   R*   R,   R0   (    (    R   R   2   s    									c         C   s   t    |  _ | |  _ t |  i |  i d  t |  i d d d  t |  i d d d g  t |  i  t |  i d  t	 |  i |  i d  t
 |  i d |  i  t |  i  t |  i d d d g  |  i   |  i   d  S(	   Ns   .md2f0.070000000000000007i  i    iZ   i   s   .bmpf0.0080000000000000002(   t   getfreeobjectR   R(   R0   t   loadmd2t   scalet   rotatet   zerot   speedt   texturet   maketextR)   t	   unfixtextt	   scaletextt   idlet   display(   R   R0   (    (    R   t	   loadModel>   s    	
c         C   sr   | |  i j o^ | |  _ | d j o |  i   n | d j o |  i   n | d j o |  i   qn n d  S(   Nt   WR&   t   C(   t   animR   R1   t   walkR<   t   crawl(   R   RA   (    (    R   RA   M   s    	c         C   s%   |  i o t |  i d d  n d  S(   Ni    i(   (   R   R(   t   frames(   R   (    (    R   R<   W   s    
c         C   s%   |  i o t |  i d d  n d  S(   Ni   i   (   R   R(   RD   (   R   (    (    R   RC   [   s    
c         C   s   d  S(   N(    (   R   (    (    R   RB   _   s    c         C   sD   |  i o6 |  i t i |  8_ t |  i d d | g  n d  S(   Ni    (   R   R(   R/   t   matht   radianst   angleR5   (   R   RG   (    (    R   R5   b   s    
c         C   s   d  S(   N(    (   R   R*   R,   R/   RA   (    (    R   t   addDestg   s    c         C   s(  |  i o|  i d j o* d |  _ |  i |  _ |  i |  _ d GHn |  i |  i j o |  i |  i j o |  i d 7_ |  i |  i |  i |  i |  _ |  i |  i |  i |  i |  _ t	 d |  i |  i g  } t |  i |  i | d |  i g  t |  i |  i | d |  i g  q$n d  S(   Ni   i    s   Arrived!f0.001f66.200000000000003f64.5(   R   R(   R.   R+   R*   R-   R,   t   ixt   izt   heightt   yt   setpost
   settextpos(   R   RL   (    (    R   R=   j   s    
		&!!#(   R#   R$   t   __doc__R'   R   R>   RA   R<   RC   RB   R5   RH   R=   (    (    (    R   R%   0   s    		
					t   ViewPortc           B   sb   t  Z d  Z d   Z d   Z d   Z d d  Z d   Z d   Z d   Z	 d	   Z
 d
   Z RS(   s   3D display of gamec         C   st  t  i |   | |  _ |  i i d  | |  _ t   t   } yb | i	 d  | i
 d d  i d  \ } } t |  } t |  } t | i
 d d   } Wn d GHd \ } } d
 } n Xt | | |  t d  t d  t   t d d d d d  t d d d d d d g  t d d  t d d d d g  t d d d d d d g  g  |  _ d |  _ d  S(   Ni    s   myrmidia.conft   Graphicst
   resolutionR*   t   deptht   Meepi   iX  i   s   Myrmidia ('Phoenix')id   s	   moon1.bmps	   moon2.bmps	   moon3.bmps	   moon4.bmps	   moon5.bmps   map2.raws	   grass.bmpiiis   FreeSans.ttff0.10000000000000001i(   i<   f0.01i   (   i   iX  (   R   R   R   t   sockt   setblockingt   parentt   wxInitAllImageHandlersR   R   R   R   t   splitt   widthRK   t   intRS   t
   initscreent   titlet	   frameratet	   keyrepeatt   skyboxt	   heightmapt   loadfontt   lightt   fogt   creaturesNearR   (   R   RU   RW   RK   RZ   RS   R   (    (    R   R      s6    			!


	c         C   s   d |  _ d  S(   Ni    (   R   R   (   R   (    (    R   t   shutdown   s    c         C   sE  d } d } d } x|  i ot   }	 |	 d j o
 d } n |	 d j o d } n |	 d j o
 d	 } n |	 d
 j o d	 } n |	 d j o d |  _ n | d j o |
 o |  i d  t	 }
 n | d j p | d j o | d j o t
 |  n | d j o t |  n t   \ } } } t d | | g  } t | | d | g  | d j oS t t t   d   } |  i d t |  d t |  d | d  d } n | d 7} t }
 d } d } n x |  i D] } | i   qWt   |  i   t i d  q W|  i i    t! |  i" t#    t$   d  S(   Nf0.01i    i   i  f0.10000000000000001i  f0.050000000000000003i  f0.02i  i   s   A|If65.5i   s   P|t   |s   |Ci   (%   t   movet   turnt   sendMoveR   R   t   getkeyt   keyt	   justmovedt   sendR   t
   cameramovet
   cameraturnt	   camerapost   cameraXt   cameraYt   cameraZRK   t   cameraHeightt   setcamerapost   strt   roundt   getcamerarotR/   R   Re   t   creatureR=   t   synct   recvt   timet   sleepRU   t   closet   wxPostEventRW   t	   QuitEventRf   (   R   Rr   Rs   Rt   Rh   Rj   R/   Ru   Rz   Rl   Rm   Ri   (    (    R   R"      sX     
	 
  
 
  1



 
i    c         C   sj   t  i  g  |  i g g  |  \ } } } | o |  i i | d  n! | d j o d GH|  i	   n d  S(   Ns   
i    s   Timeout. Connection Lost.(
   t   selectR   RU   t   timeoutt   rt   wt   eRn   t   msgRf   (   R   R   R   R   R   R   (    (    R   Rn      s    'c         C   sW  t  i  |  i g g  g  d  \ } } } | o%|  i i d  |  _ y |  i i   } Wn d Sn X| i
 d d  } | i
 d d  } | d  d j o t |  i t | d   qS| d	  d
 j o |  i | d	  qS| d	  d j o |  i | d	  qS| d  d j o |  i | d  qS| d	  d j o |  i | d	  qSn d  S(   Ni    t   rbi   s   
t    s   i   s   SAY|i   s   C|s   D|i   s   USER|s   A|(   R   R   RU   R   R   R   t   makefilet   fsockt   readlinet   datat   replaceR   RW   t   SayEventt   showCreaturet   deleteCreaturet   creatureDetailst   creatureAnim(   R   R   R   R   R   (    (    R   R|      s&    'c   	      C   s  y% t  i | d  \ } } } } } Wn d GHd  Sn Xd } t	 |  } t	 |  } t	 |  } xB |  i D]7 } | | i j o! | i | | | |  d } Pql ql W| d j oM |  i d |  t |  i t |   t | | |  } |  i i |  n d  S(   NRg   s    Malformed C message from server.i    i   s   USER|(   t   stringRY   R   R)   R*   R,   R/   RA   t   foundt   floatR   Re   Rz   RH   Rn   R   RW   t   AddCreatureEventR%   t   append(	   R   R   RA   R)   R/   Rz   R   R*   R,   (    (    R   R      s(    %
 	c         C   sR   xK |  i D]@ } | | i j o* t |  i t |   |  i i |  q
 q
 Wd  S(   N(   R   Re   Rz   R)   R   RW   t   DelCreatureEventt   remove(   R   R)   Rz   (    (    R   R     s
    
 c         C   s   y t  i | d  \ } } Wn d GHd  Sn XxJ |  i D]? } | | i j o) | | _ | i p | i	 |  n Pq9 q9 Wd  S(   NRg   s#   Malformed USER message from server.(
   R   RY   R   R)   R0   R   Re   Rz   R(   R>   (   R   R   R)   R0   Rz   (    (    R   R     s    
 	
c         C   si   y t  i | d  \ } } Wn d GHd  Sn Xx3 |  i D]( } | | i j o | i |  Pq9 q9 Wd  S(   NRg   s    Malformed A messagr from server.(   R   RY   R   R)   RA   R   Re   Rz   (   R   R   RA   R)   Rz   (    (    R   R     s    
 (   R#   R$   RO   R   Rf   R"   Rn   R|   R   R   R   R   (    (    (    R   RP      s    			,					t   Gamec           B   sh   t  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z RS(   s%   GUI elements (chat pain and tool box)c         C   s,   | |  _  | |  _ | |  _ t i |   d  S(   N(   RU   R   R)   RW   t   wxAppR   (   R   RU   R)   RW   (    (    R   R   '  s    			c         C   s   t  d  |  _ t   |  i   |  i   t |  i |   |  _ |  i i	   t
 |  d d d g |  i  |  _ |  i i	   t   } | i d  t i | i d d   d j o  t d	  |  _ |  i i	   n
 d  |  _ t S(
   Ns   interface.xmls   irc.hethane.sei  s	   #myrmidias   myrmidia.confR   t   enabledt   trues
   guitar.ogg(   t   wxXmlResourceR   t   resRX   t
   initFramest
   initEventsRP   RU   t   viewportt   startt   IrcR)   t   ircR   R   R   Rw   t   lowerR   R   t   audioR'   R   (   R   R   (    (    R   t   OnInit-  s    

!	"	c         C   ss   |  i i d  d  |  _ |  i i   |  i i d  d  |  _ |  i i   t |  i d  } | i	 d |  i
  d  S(   Nt   frmChatt   frmToolst	   lstPeoplei    (   R   R   t	   LoadFrameR'   t   chatt   Showt   toolst   XRCCTRLR   t   InsertStringItemR)   (   R   R   (    (    R   R   ?  s    c         C   sv   t  |  t d  |  i  t |  t d  |  i  t |  |  i  t |  |  i	  t
 |  |  i  t |  |  i  d  S(   Nt   txtChatt   ntbChat(   t   EVT_TEXT_ENTERR   t   XRCIDt   sayt   EVT_NOTEBOOK_PAGE_CHANGEDt   pageChangedt   EVT_SAYt   chatInt   EVT_QUITt   quitt   EVT_ADDCREATUREt   addCreaturet   EVT_DELCREATUREt   delCreature(   R   (    (    R   R   G  s    c         C   s   t  |  i d  } | i   } | i d  t  |  i d  } | i | i	    } t i |  } | d j oI t  |  i d  } | i d |  i d |  |  i i d | d	  n |  i i d
 | d |  d  S(   NR   R   R   t   IRCt   txtIRCt   <s   > s	   #myrmidias   
s   SAY|Rg   (   R   R   R   R   t   GetValuet   textt   SetValuet   notebookt   GetPageTextt   GetSelectiont   channelR   t   uppert   outputt
   AppendTextR)   R   R   R   Rn   (   R   t   eventR   R   R   R   R   (    (    R   R   P  s    c         C   sf   t  |  i d  } t  |  i d  } | i   | i | i    d j o | i   n | i	   d  S(   NR   R   t   Server(
   R   R   R   R   R   t   SetFocusR   R   t   Disablet   Enable(   R   R   R   R   (    (    R   R   ^  s    
c         C   sV   |  i o |  i i   n |  i i   |  i i   |  i i   |  i i	 |  d  S(   N(   R   R   R   R   Rf   R   t   CloseR   RW   R   R   (   R   R   (    (    R   R   g  s    
c         C   s   | i } y" t i | d d  \ } } } Wn d GHd  Sn X| d j o t |  i	 d  } n | d j o t |  i	 d  } n | d j o t |  i	 d	  } n | d
 j o t |  i	 d  } n | i d | d | d  d  S(   NRg   i   s"   Malformed SAY message from server.t   GLOBALt	   txtGlobalt   LOCALt   txtLocalR   R   t   SERVERt	   txtServerR   s   > s   
(   R   R   R   RY   t   userR   t   messageR   R   R   R   R   (   R   R   R   R   R   R   R   (    (    R   R   o  s    	"c         C   s/   | i } t |  i d  } | i d |  d  S(   NR   i    (   R   R   R)   R   R   R   R   R   (   R   R   R   R)   (    (    R   R     s    	c         C   s>   | i } t |  i d  } | i d |  } | i	 |  d  S(   NR   i(
   R   R   R)   R   R   R   R   t   FindItemt   itemt
   DeleteItem(   R   R   R   R   R)   (    (    R   R     s    	(   R#   R$   RO   R   R   R   R   R   R   R   R   R   R   (    (    (    R   R   %  s    											(   t   wxPython.wxt   wxPython.xrct   sabreglt   myrircR   t	   myreventst	   threadingR   t   ConfigParserR   R}   R	   R   R   RE   t
   ogg.vorbisR   R   R%   RP   R   R   (   R   R   R   R   R   R	   RP   RE   R}   R   R   R   R%   (    (    R   t   ?   s   6&Q
