;ò _‰;c@sðdZdkZdkTdkZdkZdkZdkZdkZdkZdk l Z l Z l Z l Z lZdk lZlZdklZdklZdkZdkZdkZdklZdkTd„Zd efd „ƒYZdS( s>Game Engine handler base class- used in GameMenu and GamePlay.N(s*(sobjshipsobjtextsobjblastsobjbombsobjflame(sobjtextmessages objsstext(sGroundExplosion(s AirExplosion(sBaseGameHandlercCsdS(N((((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysload_game_resourcesss GameEnginecBs¯tZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d „Z d d „Z d „Z d „Z d„Zd„Zd„Zed„Zed„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d „Z!d!„Z"d"„Z#d#„Z$d$„Z%d%„Z&d&„Z'd'„Z(d(„Z)d)„Z*d*„Z+d+„Z,d,„Z-d-„Z.d.„Z/d/„Z0RS(0NcCsti|ƒg|_g|_g|_g|_g|_g|_g|_ g|_ g|_ |i|i|i|i |i|i |i |ig|_ ||_ d|_|i|_tiiƒ|_d|_d|_d|_d|_ti|_ti|_tiƒ|_|it_ti ƒ|_t!i"|i|i|iƒ|_!t#i$i%|_&t'i(|_(ht'i)|i*gf<t'i+|ii,gf<t'i-|ii.gf<t'i/|ii0gf<t'i1|ii2gf<t'i3|ii4dgf<t'i5|ii4dgf<t'i6|ii7gf<t'i8|i9gf<t'i:|i;gf<t'i<|i=gf<t'i>|i=gf<|_?dS(Nsf1.0ii(@sBaseGameHandlers__init__sselfs staticobjsstextobjssairobjss rocketobjss groundobjss blastobjssbombobjss explosionobjss exhaustobjssobjlistss prevhandlersstates dummyfuncs statetickspygamestimes get_ticksslastticks speedadjuststimersobjectivetimers objectivemetsgames start_timers start_possobjshipsShipsplayersexhaustsExhaustslevelssLevelssgfxssurfacesfillsbgfillsinputs translatesENDsuserquitsUPscmd_upsDOWNscmd_downsLEFTscmd_leftsRIGHTs cmd_rightsPRESSs cmd_turbosRELEASEsFIREscmd_firesPAUSEspausesDEBUGs toggle_debugsSELECTs do_nothingsCHEATs input_mapping(sselfs prevhandler((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys__init__s8          9          ! cCs!|i|\}}||ŒdS(N(sselfs input_mappingsisfuncsargs(sselfsisargssfunc((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysinputOscCsdS(N((sselfse((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pyseventSscCs!tiitiƒtiƒSdS(N(spygameseventsgetsinputsjoystick_eventssget_key_events(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys get_eventsVscCsGtiiƒ}|idjo ||_nd|_|iƒdSdS(s*calculate speed adjustment & do state_tickif1.0N(spygamestimes get_tickssnowsselfslastticks speedadjusts statetick(sselfsnow((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysrunYs   cCsdS(N((sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys dummyfuncqscCsZt||id|iƒƒ||_t||d|iƒƒt||dƒ|_dS(Ns_ends_starts_tick(sgetattrsselfsstates dummyfuncs statetick(sselfsstate((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys changestateus cCst|i|if\}}}ti||ƒ|ii |||ƒx”gi }|D]#}|D]}|||fƒq_qU~D]X\}}|i|ƒ|i|ƒ|io(|i|ƒ|iƒ|i|ƒqqWx,|D]$}x|D]}|i|ƒqïWqâWdS(N(sgfxsselfs backgrounds speedadjustsGsBsSs updatestarssexhaustserase_tick_drawsappends_[1]sobjectsslsoserasesticksdeadsdiesremovesdraw(sselfsobjectssBsGslsos_[1]sS((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys runobjectss ;      cCstiiti||ƒSdS(N(sgfxssurfacesblits backgroundsarea(sselfsarea((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys backgroundŽsicCsFtio8titi|t_tidjo dt_qBndS(Nif0.0(sgamestimeleftstimeticks speedadjust(sselfs speedadjust((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys tickleveltime’s cCs d|_dS(Ni(sselfsclocks(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys normal_startšscCs|i|iƒ|id7_|i|iƒ|iƒ|iƒ|iƒ|i i t i t i t it iƒ|iidjo|iidjo4|id8_|idjo|idƒqnE|idjo4|id8_|idjo|idƒqndS(Niis playerdieslevelend(sselfs tickleveltimes speedadjustsclockss runobjectssobjlistsscheck_nonplayer_collisionsscheck_player_collisionss addactorss scoredisplaysupdatesgamesscoresfuelsbombsslivessplayersdeads explodingstimers changestates objectivemetsobjectivetimer(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys normal_ticks   %&cCsdS(N((sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys normal_end¯scCs0ti|7_tidjo dt_ndS(Ni(sgamesscores pointvalue(sselfs pointvalue((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys add_scoreµscCs&d|_ti|_|iiƒdS(Ni(sselfs objectivemetsgamesstate_transition_timesobjectivetimerslevelssmission_complete(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysobjective_done»s  cCs‚|tjo |i}n|ii}x6|iD]+}t ||iiƒdjodSq0q0W|i t |ii|i ƒƒdS(Ni( s explosionlistsNonesselfs explosionobjssobjectsrectscenterxsxsexpsabssappendsGroundExplosionsdx(sselfsobjects explosionlistsexpsx((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysadd_groundexplosionÂs     cCsL|tjo |i}n|it|ii|ii |i |i ƒƒdS(N( s explosionlistsNonesselfs explosionobjssappends AirExplosionsobjectsrectscenterxscenterysdxsdy(sselfsobjects explosionlist((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysadd_airexplosionÍs  cCsœg}x„|iD]y}xp|iD]e}|i|iƒoL|iƒ|i |i ƒ|i ||ƒ|i djo|i ƒq…q q WqW|i|7_x÷|iD]ì}|idjod|_|i |ƒq¦x¹|iD]®}|i|iƒo•|idjoS|iƒ|iƒ|i |i ƒ|i |ƒ|i djo|i ƒq‡qà|i |_|itidti|_qàqàqàWq¦Wx“|iD]ˆ}x|iD]t}|i|iƒo[|iƒ|i|ƒ|iƒo2|i |i ƒ|i djo|i ƒqnPq°q°Wq Wxi|iD]^}|idjoHd|_|itiitijo|i |ƒq”|i|ƒq6q6WdS(Nif0.5( snew_explosionobjssselfs explosionobjsses groundobjssgscollidesrectsmarkdeads add_scores pointvaluesadd_groundexplosions objectivesobjective_donesbombobjssbs explodingsdeadsbombablesgravitysdysdxsgames groundspeeds blastobjssairobjssasadd_airexplosionsys groundarenasbottomsground_explosion_height(sselfsasbsesgsnew_explosionobjs((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pyscheck_nonplayer_collisionsÓsb                  cCs=tidjo)|iiƒd|i_ti|_ndS(Ni(sgamesshieldssselfsplayersdiesactivesstate_transition_timestimer(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys do_player_dies  cCsq|iiiddƒ}xR|D]J}|i|ƒo4d|_|i |i ƒ|i ƒ||iƒqqWdS(sºcheck for collisions with each object in objectlist; if there is a collison, do the things necessary to kill player, and use the add_explosion method to add an explosion.iþÿÿÿiN( sselfsplayersrectsinflatescrects objectlistsobjscollidesdeads add_scores pointvalues do_player_dies add_explosion(sselfs objectlists add_explosionscrectsobj((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysplayer_collides_withs  cCsß|iidjoX|iiitiijo8d|i_d|i_ti|_ |i |iƒqkn|iidjo|ii t i jo|i|i|i ƒn|iidjo|i|i|iƒndS(s>has player hit something- ground, ground objects, air objects?iiN(sselfsplayersdeadsrectsbottomsgames groundarenas explodingsstate_transition_timestimersadd_groundexplosions shipstatesobjships ship_canbombsplayer_collides_withs groundobjssairobjssadd_airexplosion(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pyscheck_player_collisions+s   )cCstit_tit_dS(N(sgames start_fuelsfuels start_bombssbombs(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysplayerstart_start@s cCs|idƒdS(Ns levelstart(sselfs changestate(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysplayerstart_tickDscCsdS(N((sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysplayerstart_endGscCsutidjotid8_ntidjo dt_nti|_|iititi ti tiƒdS(Nii( sgamesinfinite_livesslivessstate_transition_timesselfstimers scoredisplaysupdatesscoresfuelsbombs(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysplayerdie_startLs   cCsetidjo|idƒn|id8_|idjo|idƒn|i|iƒdS(Nisgameoveris playerstart(sgameslivessselfs changestatestimers runobjectssobjlists(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysplayerdie_tickUs cCskd|i_xHgi}|iD]}|D]}||ƒq*q ~D]}d|_qDW|i|iƒdS(Ni( sselfsplayersdeadsappends_[1]sobjlistsslsos runobjects(sselfs_[1]slso((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys playerdie_end]s  8 c Csø|it_tiƒtiiƒtiti i ti i fƒi ƒ}|itiƒtii|ti ƒtiti ƒtiitiƒtitiƒ|_|iiƒ|iititititiƒ|ii|iƒ|ii|iƒd|i_d|_ ti!|_"t#i$|iƒ|i_%|ii|ii%ƒd|i_&d}ti(ti)i*dti)i |gƒ}d|i,i-ƒ|i,i.ƒf}t0i1titi2||t3|t4ddƒ|_5|i5i6ƒ|i,i7ƒdS(Niii(isMission %d: %sscenter(8sselfsplayersgamesgfxs clearscreenssurfacesset_clipspygamesSurfaces ground_rectswidthsheightsconvertsgroundsfills ground_colorsblitsdirtys groundarenas scoredisplays Scoredisplays drawlegendsupdatesscoresfuelsbombsslivessstarts start_poss staticobjssappendsdxs objectivemetsstate_transition_timestimersobjflamesFlamesflamesactivessizesRectsarenasleftsposslevelssget_mission_numbersget_mission_descrstexts objsstextsSubsurfaceTexts backgroundsBABELFISH_FONTPATHs BLUE_GREYs mission_descrsdrawsstart_mission_over(sselfstextsposssizesground((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pyslevelstart_startes4   ' %    '" cCs}|id8_|idjo|idƒn|ii|ii7_|ii|iig|ii_|i |i ƒdS(Niisnormal( sselfstimers changestatesplayersxsdxsysrectstoplefts runobjectssobjlists(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pyslevelstart_ticks !cCs.ddg|i_d|i_d|i_dS(Nii(sselfsplayersmovesblastingsactive(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pyslevelstart_end•s cCs:ti|_d|i_titi ti dƒ|_ dS(NisMission Completed!( sgamesstate_transition_timesselfstimersplayersactivesobjtextmessages TextMessagesgfxssurfaces backgroundslevelend_message(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pyslevelend_starts  cCs>|id8_|idjo2|iiƒo|idƒqQ|idƒn|iid7_|iidjod|i_n|iid 7_|iidjod|i_n|ii|ii7_|ii |ii7_ |ii|ii g|ii _ |i |i ƒ|iƒ|iitiƒdS( Niis levelstartsgamewonf0.040000000000000001f2.6000000000000001f0.02f-1.2(sselfstimerslevelss next_missions changestatesplayersdxsdysxsysrectstoplefts runobjectssobjlistsscheck_nonplayer_collisionss change_statesobjships ship_canshoot(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys levelend_tick¥s"! cCsƒxHgi}|iD]}|D]}||ƒqq~D]}d|_q8W|i|iƒ|iƒ|i i ƒ|i i ƒdS(Ni( sappends_[1]sselfsobjlistsslsosdeads runobjectsscheck_nonplayer_collisionsslevelend_messageserases mission_descr(sselfs_[1]slso((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys levelend_end¾s8   cCs>dt_tit_tit_tit_|i i ƒdS(Ni( sgamesscores start_livesslivess start_fuelsfuels start_bombssbombssselfslevelss start_game(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysgamestart_startÉs     cCs|idƒdS(Ns playerstart(sselfs changestate(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysgamestart_tickÑscCsdS(N((sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys gamestart_endÔscCsZti|_|iititititi ƒt i t i t idƒ}|iƒdS(Ns Game Over(sgamesstate_transition_timesselfstimers scoredisplaysupdatesscoresfuelsbombsslivessobjtextmessages TextMessagesgfxssurfaces backgroundsgameover_messagesdraw(sselfsgameover_message((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysgameover_startØs  % cCsK|id8_|idjo|iƒn|i|iƒ|iƒdS(Nii(sselfstimersfinal_game_ends runobjectssobjlistsscheck_nonplayer_collisions(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys gameover_tickßs cCsZti|_|iititititi ƒt i t i t idƒ}|iƒdS(NsAll missions completed!(sgamesstate_transition_timesselfstimers scoredisplaysupdatesscoresfuelsbombsslivessobjtextmessages TextMessagesgfxssurfaces backgroundsgamewon_messagesdraw(sselfsgamewon_message((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys gamewon_startçs  % cCsK|id8_|idjo|iƒn|i|iƒ|iƒdS(Nii(sselfstimersfinal_game_ends runobjectssobjlistsscheck_nonplayer_collisions(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys gamewon_tickîs cCs#tiiƒ|i}|t_dS(N(spygameseventsgetsselfs prevhandlers nexthandlersgameshandler(sselfs nexthandler((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysfinal_game_end÷s  cCs¦|iidjo‚|iidjo,|iiti|iƒƒd|i_n|iidjo,|i it i |iƒƒd|i_q•n|i i ƒdS(Nii(sselfsplayersdeadsblastings blastobjssappendsobjblastsBlastsbombingsbombobjssobjbombsBombslevelss addactors(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys addactorsscCsti t_d|_dS(Ni(sgames single_framesselfslasttick(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pyspauses cCs7|iƒtiiƒtiidƒ|it_ dS(NiÈ( sselfs playerdie_endspygameseventsgetstimesdelays prevhandlersgameshandler(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pysuserquits  cCstiddt_dS(Nii(sgames debug_mode(sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys toggle_debugscCsdS(N((sself((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys do_nothing$s(1s__name__s __module__s__init__sinputsevents get_eventssruns dummyfuncs changestates runobjectss backgrounds tickleveltimes normal_starts normal_ticks normal_ends add_scoresobjective_donesNonesadd_groundexplosionsadd_airexplosionscheck_nonplayer_collisionss do_player_diesplayer_collides_withscheck_player_collisionssplayerstart_startsplayerstart_ticksplayerstart_endsplayerdie_startsplayerdie_ticks playerdie_endslevelstart_startslevelstart_tickslevelstart_endslevelend_starts levelend_ticks levelend_endsgamestart_startsgamestart_ticks gamestart_endsgameover_starts gameover_ticks gamewon_starts gamewon_ticksfinal_game_ends addactorsspausesuserquits toggle_debugs do_nothing(((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys GameEngines\ 8               C         (              (s__doc__spygames pygame.localssrandomsmathsgamesgfxsinputssndsspritessobjshipsobjtextsobjblastsobjbombsobjflamesobjtextmessages objsstextssprites.objgroundexplosionsGroundExplosionssprites.objairexplosions AirExplosions scoredisplaysexhaustslevelssbasegamehandlersBaseGameHandlerstextsload_game_resourcess GameEngine(sgfxsobjflamesobjblasts GameEnginesobjtextmessagesGroundExplosionsobjshipsload_game_resourcessBaseGameHandlerspygamesinputsmathsexhaustssndsrandoms AirExplosionsgameslevelss scoredisplaysobjbombsobjtexts objsstext((sH/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/gameengine.pys?s $%