Ñò Ú‹:Kc@sFddkTddklZgZgZd„Zd„Zd„Zdd%d„ƒYZee ƒei e e ƒei e ƒee ƒei e e ƒei e ƒde fd „ƒYZd e fd „ƒYZd eieifd „ƒYZei eeƒei eƒdeieifd„ƒYZei eeƒei eƒdeieifd„ƒYZei eeƒei eƒdeieifd„ƒYZei eeƒei eƒdefd„ƒYZeeeƒeeƒei eeƒei eƒdeieifd„ƒYZei eeƒei eƒdeieifd„ƒYZei eeƒei eƒdeieifd„ƒYZei eeƒei eƒdd&d„ƒYZeeeƒdefd„ƒYZeeeƒd efd!„ƒYZ ee!e ƒd"d'd#„ƒYZ"ee#e"ƒd$S((iÿÿÿÿ(t*(tpbcCs*||ijo|i|f7_ndS(N(t __bases__(t origClasstaddClass((sB/home/sjbrown/work/writing_games_tutorial/code_examples/network.pyt MixInClass scCs$t|tiƒt|tiƒdS(N(RRtCopyablet RemoteCopy(t someClass((sB/home/sjbrown/work/writing_games_tutorial/code_examples/network.pytMixInCopyClassesscCsêt|ƒ}|ttttttdƒgjo|S|ttgjo2g}x$|D]}|i t ||ƒƒqVW|S|t joDh}x6|i ƒD](\}}t ||ƒ|t ||ƒR=( tTrueR>RR=thas_keytSectort evManagerRtFalse(R#t stateDictRt neededObjIDstsuccess((sB/home/sjbrown/work/writing_games_tutorial/code_examples/network.pytsetCopyableState¤s   (R(R)R!RG(((sB/home/sjbrown/work/writing_games_tutorial/code_examples/network.pyR<¡s tCopyablePlayerJoinEventcBseZd„ZRS(cCs6d|i|_t|iƒ|_|i||iW||gS(NRR(R?R>tMapt STATE_BUILTtBuildt enumerateRS(R#RDRRERFtitsectID((sB/home/sjbrown/work/writing_games_tutorial/code_examples/network.pyRG s (R(R)R'RG(((sB/home/sjbrown/work/writing_games_tutorial/code_examples/network.pyRPs t CopyableGamecBs eZdddgZd„ZRS(R6R>R2cCsàg}t}|d|_|d|jo2t|iƒ||d<|i|dƒt}n||d|_g|_x]|dD]Q}||jo*t|iƒ||<|i|ƒt}q|ii||ƒqW||gS(NR>R6R2( R?R>RVRBRRCR6R2tPlayer(R#RDRRERFtpID((sB/home/sjbrown/work/writing_games_tutorial/code_examples/network.pyRGs"       (R(R)R!RG(((sB/home/sjbrown/work/writing_games_tutorial/code_examples/network.pyR\stCopyablePlayercBs eZdddgZd„ZRS(R,R0t charactorscCsºg}t}|d|_|i|dƒp dGHn||d|_g|_x]|dD]Q}||jo*t|iƒ||<|i|ƒt}q[|ii||ƒq[W||gS(NR,R0s,Something is wrong. should already be a gameR`( R?R,R@R0R`t CharactorRBRRC(R#RDRRERFtcID((sB/home/sjbrown/work/writing_games_tutorial/code_examples/network.pyRG<s       (R(R)R!RG(((sB/home/sjbrown/work/writing_games_tutorial/code_examples/network.pyR_9stCopyableSectorcBseZd„Zd„ZRS(cCshS(N((R#R((sB/home/sjbrown/work/writing_games_tutorial/code_examples/network.pyR'ZscCs tggS(N(R?(R#RDR((sB/home/sjbrown/work/writing_games_tutorial/code_examples/network.pyRGds(R(R)R'RG(((sB/home/sjbrown/work/writing_games_tutorial/code_examples/network.pyRcYs N(((($texamplettwisted.spreadRtserverToClientEventstclientToServerEventsRR RR t QuitEventtsetUnjellyableForClassRtGameStartRequesttobjectR+R.RRR/R5R8R;R<RatPlayerJoinRequestRHRKRNRPRVR\tGameR_R]RcRA(((sB/home/sjbrown/work/writing_games_tutorial/code_examples/network.pytsb                      &