; _;c@sdZdkZdkZdkZdkZdkTdkZdkZdkl Z dk Z dk Z dk Z dk Z dkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdkZdk Zdk!Zdk"Zdk#Zdk$Zdk%Zdk&Zdk'Zdk(Zdk)Zdk*Tdk+l,Z,dkl Z dZ-dZ.ei/i0e-e.Z1eiZ2e3a4dZ5dfd YZ6e7d joe5t8i9ndS( s Levels classN(s*(s LevelsData(s NestedDictsdatas levels.txtcCsAy)ttd}|ia|iWndtnXdS(NsrsError reading %s file(sopens LEVELS_PATHsfilesreads levels_textsclose(sfile((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pysload_game_resources5s sLevelscBstZdZdZdZdZdZdZdZdZ d Z d Z d Z d Z d ZdZRS(NcCsd|_tt|_||_||_||_ |ii |_ |ii t |i |_|idjo dn|i|idS(Nis No missions!(sselfsdebugs LevelsDatas levels_texts levels_datas groundobjectss groundobjss airobjectssairobjssexhaustsmissionss missions_datasshowslens missions_lensvalidate_missionss start_game(sselfs groundobjectss airobjectssexhaust((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pys__init__Bs       cCs>|itjo"|ii|ijodSqjn9|iitjo%|ii|iijodSqjnt}||ijot |i|i }|i djo d|_ n|i djo |idjodSn|itjo|ii|n+|itjo|ii|nd|iSntSdS(s+given one actor, see if we should add it...iis(Error: sprite object has undefined type!N(sactors max_instancessNones class_objectscountsmaxsRANDOMsps probabilitysapplys parameterss actor_objects is_objectives objectivesselfs mission_overstypes GROUND_OBJECTs groundobjssappends AIR_OBJECTsairobjs(sselfsactors actor_objectsp((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pysaddactor`s*      cCs|iddjoh|iitjoQ|iti|iii|ijo&|id7_|i |iiqxq|n|i |iti djo&|i }|i i }t||ndS(s%Use levels data when adding actors...iiiN(sselfstimescurrent_mission_datas refuel_actorsNonesgames desired_fpssintervalsrefuel_countersaddactors update_partsadd_actor_intervalscurrent_part_datasactorssmap(sselfsaddactorsactors((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pys addactorss'   cCsD|id7_|iti}||iijo|indS(sFdo this at every tick- increments time, and changes part if necessary.iN(sselfstimesgames desired_fpsssecondsscurrent_part_datas next_part(sselfsseconds((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pys update_parts cCsd|_|i|ijo|id|_n|i|i|_t|ii}|i |jo|d|_ n|ii|i |_ dS(Nii( sselfs mission_overscurrent_mission_numbers missions_lens missions_datascurrent_mission_dataslenspartss parts_lenscurrent_part_numberscurrent_part_data(sselfs parts_len((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pysset_mission_and_parts cCs9|i|_|id7_|i|i|ijSdS(sGreturn 1 if there is a next mission, 0 if there are no more missions...iN(sselfscurrent_mission_numberslast_mission_numbersset_mission_and_part(sself((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pys next_missions   cCs|id7_|idS(Ni(sselfscurrent_part_numbersset_mission_and_part(sself((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pys next_partscCs|iiSdS(N(sselfscurrent_mission_datas description(sself((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pysget_mission_descrscCs|idSdS(Ni(sselfscurrent_mission_number(sself((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pysget_mission_numberscCs d|_dS(Ni(sselfs mission_over(sself((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pysmission_completescCs9d|_d|_d|_d|_|i|iSdS(Nii(sselfstimescurrent_mission_numberslast_mission_numberscurrent_part_numbersset_mission_and_part(sself((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pys start_games      cCs0d|_d|_d|_|i|iSdS(Nii(sselfstimesrefuel_counterscurrent_part_numbersset_mission_and_partscurrent_mission_number(sself((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pysstart_mission_overs     cCsy&d|i}t|}||_Wndt|ifnXg}xr|iD]g}t |t djo;yt|}|i |Wqdt|fqXqS|i |qSW||_ dS(Ns sprites.%ss&In %s, Module sprite has no method %s!ssIn %s, no method %s!(sactors class_strings method_namesevalsmethods class_objects LEVELS_PATHsnew_parameterssparameters_sequences parameterstypes new_parametersappends parameters(sselfsactorsnew_parameterss method_names new_parameters parametersmethod((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pysvalidate_actors"     cCsqxj|iD]_}x2|iD]'}x|iD]}|i|q*WqW|it jo|i|iq q WdS(spcheck the missions data structure to make sure the classes are all valid, and fill in the class objectN( sselfs missions_datasmissionspartsspartsactorssactorsvalidate_actors refuel_actorsNone(sselfspartsmissionsactor((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pysvalidate_missions s   (s__name__s __module__s__init__saddactors addactorss update_partsset_mission_and_parts next_missions next_partsget_mission_descrsget_mission_numbersmission_completes start_gamesstart_mission_oversvalidate_actorsvalidate_missions(((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pysLevelsAs  )        s__main__(:s__doc__sossstringsglobspygames pygame.localssrandomsmaths levelsdatas LevelsDatasgamesgfxsinputssndssprites.objairexplosionsspritesssprites.objblastssprites.objbombssprites.objexhaustssprites.objflamessprites.objgroundexplosionssprites.objplane0ssprites.objplane1ssprites.objballoonssprites.objradarssprites.objrocketssprites.objrocketlauncherssprites.objshipssprites.objshiptestssprites.objsstextssprites.objstoragetank0ssprites.objstoragetank1ssprites.objtowerssprites.objhousessprites.objbuildingssprites.objcactusssprites.objtree0ssprites.objtank0ssprites.objtank1ssprites.objheadquartersssprites.objicbmssprites.objfuelships basespriteobjs nesteddicts NestedDicts LEVELS_DIRsLEVELS_FILENAMEspathsjoins LEVELS_PATHsRANDOMsNones levels_textsload_game_resourcessLevelss__name__s levels_datasshow(sgfxs LevelsDatasrandoms NestedDictsload_game_resourcessLevelsspygames LEVELS_PATHsinputsmathssndsstringsLEVELS_FILENAMEsglobsRANDOMsgames LEVELS_DIRsosssprites((sD/mnt/gmirror/ports/games/farblazer/work/farblazer-0.7/code/levels.pys?s^  $