def get_info_layers(self): self.title_layer_0 = dmd.TextLayer(128/2, 12, font_named("04B-03-7px.dmd"), "center").set_text('Ball in Play : '+str(self.game.ball)+ ' of '+str(self.game.balls_per_game)) self.value_0_layer = dmd.TextLayer(128/2, 22, font_named("04B-03-7px.dmd"), "center").set_text('Extra Balls to Play : '+str(self.game.utilities.get_player_stats('extra_balls'))) self.layer_0 = dmd.GroupedLayer(128, 32, [self.title_layer_0, self.value_0_layer]) self.title_layer_1a = dmd.TextLayer(128/2, 12, font_named("04B-03-7px.dmd"), "center").set_text('Missions completed : '+str(self.game.utilities.get_player_stats('kills_completed'))) self.title_layer_1b = dmd.TextLayer(128/2, 22, font_named("04B-03-7px.dmd"), "center").set_text('Next mission : '+self.game.utilities.get_player_stats('next_mission')) self.layer_1 = dmd.GroupedLayer(128, 32, [self.title_layer_1a, self.title_layer_1b]) self.title_layer_2a = dmd.TextLayer(128/2, 12, font_named("04B-03-7px.dmd"), "center").set_text('Loop shots : '+str(self.game.utilities.get_player_stats('loop_shots'))) self.title_layer_2b = dmd.TextLayer(128/2, 22, font_named("04B-03-7px.dmd"), "center").set_text('Yagov shots : '+str(self.game.utilities.get_player_stats('yagov_shots'))) self.layer_2 = dmd.GroupedLayer(128, 32, [self.title_layer_2a, self.title_layer_2b]) self.title_layer_3a = dmd.TextLayer(128/2, 12, font_named("04B-03-7px.dmd"), "center").set_text('Multiballs played : '+str(self.game.utilities.get_player_stats('multiballs_played'))) self.title_layer_3b = dmd.TextLayer(128/2, 22, font_named("04B-03-7px.dmd"), "center").set_text('Balls locked : '+str(self.game.utilities.get_player_stats('balls_locked'))) self.layer_3 = dmd.GroupedLayer(128, 32, [self.title_layer_3a, self.title_layer_3b]) self.title_layer_4a = dmd.TextLayer(128/2, 12, font_named("04B-03-7px.dmd"), "center").set_text('Spinner score : '+str(self.game.utilities.get_player_stats('spinner_score'))) self.title_layer_4b = dmd.TextLayer(128/2, 22, font_named("04B-03-7px.dmd"), "center").set_text('Bumper score : '+str(self.game.utilities.get_player_stats('bumper_score'))) self.layer_4 = dmd.GroupedLayer(128, 32, [self.title_layer_4a, self.title_layer_4b]) return [self.layer_0, self.layer_1, self.layer_2, self.layer_3, self.layer_4]
def __init__(self, font, font_path, text): fonts = { "plain": dmd.font_named("04B-03-7px.dmd"), "Font18x12": dmd.font_named("Font18x12.dmd"), "Font18x11": dmd.font_named("Font18x11.dmd"), "Font18x10": dmd.font_named("Font18x10.dmd"), "Font14x10": dmd.font_named("Font14x10.dmd"), "Font14x9": dmd.font_named("Font14x9.dmd"), "Font14x8": dmd.font_named("Font14x8.dmd"), "Font09x5": dmd.font_named("Font09x5.dmd"), "Font09x6": dmd.font_named("Font09x6.dmd"), "Font09x7": dmd.font_named("Font09x7.dmd"), } super(DmdFontWidthsGame, self).__init__(pinproc.MachineTypeCustom, fonts) self.reset() w = 128 h = 32 self.font = font self.font_path = font_path self.text = text self.text_layer = dmd.TextLayer(0, 0, font) self.text_layer.set_text(text) mode = game.Mode(game=self, priority=9) mode.layer = dmd.GroupedLayer(w, h, [dmd.FrameLayer(frame=dmd.Frame(w, h)), self.text_layer]) self.modes.add(mode) self.dirty = False
def __init__(self, width=128, min_height=32, animation_library=None): self.width = width self.min_height = min_height self.frame = None self.animation_library = animation_library self.font_plain = font_named('Font07x5.dmd') self.font_bold = font_named('Font09Bx7.dmd')
def reset(self): self.text1a_layer = dmd.TextLayer(64, 1, font_named("04B-03-7px.dmd"), "center", opaque=False).set_text("Choose game with flippers") self.text1b_layer = dmd.TextLayer(64, 9, font_named("04B-03-7px.dmd"), "center", opaque=False).set_text("then press start to select") self.text2_layer = dmd.TextLayer(64, 18, font_named("04B-03-7px.dmd"), "center", opaque=False) self.text3_layer = dmd.TextLayer(64, 25, font_named("04B-03-7px.dmd"), "center", opaque=False) self.layer = dmd.GroupedLayer(128, 32, [self.text3_layer,self.text2_layer, self.text1a_layer, self.text1b_layer])#set clear time
def display_text(self,txt,txt2=None,time=2,blink=2): if txt2==None: self.layer = dmd.TextLayer(128/2, 7, font_named("beware11.dmd"), "center", opaque=True).set_text(txt,seconds=time,blink_frames=blink) else: self.press_layer = dmd.TextLayer(128/2, -5, font_named("beware20aa.dmd"), "center").set_text(txt,seconds=time) self.start_layer = dmd.TextLayer(128/2, 10, font_named("beware20aa.dmd"), "center").set_text(txt2,seconds=time, blink_frames=blink) self.start_layer.composite_op = 'blacksrc' self.layer = dmd.GroupedLayer(128, 32, [self.press_layer,self.start_layer]) self.delay(name='dmdoff',event_type=None,delay=time,handler=self.display_clear)
def reset(self): self.title_layer = dmd.TextLayer(64, 1, font_named('Font_CC_12px_az.dmd'), "center", opaque=False) font = font_named("04B-03-7px.dmd") self.text1_layer = dmd.TextLayer(64, 1, font, "center", opaque=False) self.text2_layer = dmd.TextLayer(64, 9, font, "center", opaque=False) self.text3_layer = dmd.TextLayer(64, 17, font, "center", opaque=False) self.text4_layer = dmd.TextLayer(64, 25, font, "center", opaque=False) self.layer = dmd.GroupedLayer(128, 32, [self.text4_layer, self.text3_layer, self.text2_layer, self.text1_layer, self.title_layer])
def reset(self): # if changing this font, adjust the row as necessary to avoid clipping top of title self.title_layer = dmd.TextLayer(64, -2, font_named('Font_CC_12px_az.dmd'), "center", opaque=False) font = font_named("04B-03-7px.dmd") self.text1_layer = dmd.TextLayer(64, 0, font, "center", opaque=False) self.text2_layer = dmd.TextLayer(64, 8, font, "center", opaque=False) self.text3_layer = dmd.TextLayer(64, 16, font, "center", opaque=False) self.text4_layer = dmd.TextLayer(64, 24, font, "center", opaque=False) self.layer = dmd.GroupedLayer(128, 32, [self.text4_layer, self.text3_layer, self.text2_layer, self.text1_layer, self.title_layer])
def __init__(self, game, priority): super(Mystery, self).__init__(game, priority) self.title_layer = dmd.TextLayer(128/2, 7, font_named("04B-03-7px.dmd"), "center") self.element_layer = dmd.TextLayer(128/2, 15, font_named("04B-03-7px.dmd"), "center") self.value_layer = dmd.TextLayer(128/2, 22, font_named("04B-03-7px.dmd"), "center") self.layer = dmd.GroupedLayer(128, 32, [self.title_layer,self.element_layer, self.value_layer]) self.awards = ['Light Extra Ball', 'Light Lock', '30000 Points', 'Bonus X+1', 'Hold Bonus X', 'Quick Multiball'] self.awards_allow_repeat = [False, True, True, True, False, False] self.awards_remaining = self.awards[:] self.delay_time = 0.200 self.award_ptr = 0 self.award_ptr_adj = 0 self.title_layer.set_text("Sortie Award") self.element_layer.set_text("Left Flipper collects:") self.active = False
def __init__(self, game, priority): super(Info, self).__init__(game, priority) self.title_layer = dmd.TextLayer(128/2, 1, font_named("04B-03-7px.dmd"), "center").set_text('SECOND SORTIE - INSTANT INFO') #self.item_layer = dmd.TextLayer(128/2, 15, self.game.fonts['tiny7'], "center") #self.value_layer = dmd.TextLayer(128/2, 23, self.game.fonts['tiny7'], "center") self.info_layer = dmd.GroupedLayer(128, 32, [self.title_layer])
def total(self): self.log.info('Total') self.fourth_layer = dmd.TextLayer(26, 26, font_named("Font_CC_5px_az.dmd")).set_text("TOTAL "+str(self.total_value)) self.fourth_layer.composite_op = 'blacksrc' self.layer = dmd.GroupedLayer(128, 32, [self.first_layer,self.second_layer,self.third_layer,self.fourth_layer]) self.game.utilities.score(self.total_value) # this should upadte the player score in question self.delay(name='next_frame', event_type=None, delay=self.delay_time, handler=self.finish)
def bonus(self): self.log.info('Initial Bonus') self.second_layer = dmd.TextLayer(26, 14, font_named("Font_CC_5px_az.dmd")).set_text("BONUS "+str(self.game.utilities.get_player_stats('bonus') * self.bonus_value)) self.second_layer.composite_op = 'blacksrc' self.layer = dmd.GroupedLayer(128, 32, [self.first_layer,self.second_layer]) self.game.utilities.acFlashSchedule(coilname='upKicker_flasher3',schedule=0x0000000C, cycle_seconds=1, now=True) self.delay(name='next_frame', event_type=None, delay=self.delay_time, handler=self.multiplier)
def mode_started(self): self.change_lampshow() anim = dmd.Animation().load("./dmd/f14launch.dmd") self.takeoff_layer = dmd.AnimatedLayer(frames=anim.frames, hold=False, repeat=False, frame_time=5) self.f14_splash_layer = dmd.FrameLayer(opaque=True, frame=dmd.Animation().load('./dmd/f14bw2.dmd').frames[0]) self.f14_sunset_layer = dmd.FrameLayer(opaque=True, frame=dmd.Animation().load('./dmd/f14sun.dmd').frames[0]) self.f14_layer = dmd.FrameLayer(opaque=True, frame=dmd.Animation().load('./dmd/tomcat20beware.dmd').frames[0]) self.press_layer = dmd.TextLayer(128/2, -8, font_named("beware22aa.dmd"), "center").set_text("PRESS") self.start_layer = dmd.TextLayer(128/2, 8, font_named("beware22aa.dmd"), "center").set_text("START") self.start_layer.composite_op = 'blacksrc' self.press_start_layer = dmd.GroupedLayer(128, 32, [self.press_layer,self.start_layer]) gen = dmd.MarkupFrameGenerator() gen.font_plain=font_named("beware11.dmd") gen.font_bold=font_named("beware20aa.dmd") credits_frame = gen.frame_for_markup(""" #CREDITS# [Rules + Coding] [Mark Sunnucks] [Special thanks] [G. Stellenberg] [A. Preble] [S. van der Staaij] [P-ROC] [pyprocgame] """) self.credits_layer = dmd.PanningLayer(width=128, height=32, frame=credits_frame, origin=(0,0), translate=(0,1), bounce=False) self.credits_layer.composite_op = 'blacksrc' self.credits_overlay_layer = dmd.GroupedLayer(128, 32, [self.takeoff_layer,self.credits_layer]) script = [{'seconds':5.0, 'layer':self.f14_splash_layer}, {'seconds':5.0, 'layer':self.press_start_layer}, {'seconds':20.0, 'layer':self.credits_overlay_layer}, {'seconds':5.0, 'layer':self.f14_sunset_layer}, {'seconds':5.0, 'layer':self.press_start_layer}] self.layer = dmd.ScriptedLayer(width=128, height=32, script=script)
def show_next_game(self,direction=0): self.gi_enable(dim=False) if self.selected_game is None: # from title, go to either 0 (first) or -1 (last) game/config self.game_index = self.config_index = 0 if direction > 0 else -1 if self.game.lamps.has_key('startButton'): self.game.lamps.startButton.schedule(schedule=0xff00ff00, cycle_seconds=0, now=False) else: self.config_index += direction # If the user goes "left" of the first config, roll to the last # config of the previous game if self.config_index == -1: self.game_index -= 1 # note that we need to load the configs for this new game_index # before we can set config_index to the last configuration # If we have gone past the last config, roll over to the first # configuration of the next game. elif self.config_index == len(self.configs): self.game_index += 1 self.config_index = 0 # use the modulus operator to wrap-around game_index self.game_index = self.game_index % len(self.games) self.selected_game = self.games[self.game_index] if self.selected_game.has_key('configuration'): self.configs = self.selected_game['configuration'] else: self.configs = [{'description': 'default configuration'}] if self.config_index == -1: # We can now select the last configuration of the newly-selected game. self.config_index = len(self.configs) - 1 self.selected_config = self.configs[self.config_index] # Update the DMD screen to describe the current game/config option. self.text1_layer.set_text(self.selected_game['line1']) self.text2_layer.set_text(self.selected_game['line2']) self.text3_layer.set_text(self.selected_config['description']) scores = self.load_gc() if len(scores) == 0: scores = [''] layer_script = [] for s in scores: l = dmd.TextLayer(64, 24, font_named("04B-03-7px.dmd"), "center", opaque=False) l.set_text(s) layer_script.append({'seconds':2.5, 'layer':dmd.GroupedLayer(128, 32, [l, self.text3_layer, self.text2_layer, self.text1_layer])}) self.layer = dmd.ScriptedLayer(width=128, height=32, script=layer_script)
def move_target(self): #self.game.lamps[self.game.tomcatTargetIndex[self.current_position]].disable() self.current_position += random.choice([-1,1]) if self.current_position == 12: self.current_position = 0 elif self.current_position == -1: self.current_position = 11 #self.game.lamps[self.game.tomcatTargetIndex[self.current_position]].enable() mission_text = list("------------") mission_text[self.current_position] = '+' self.third_layer= dmd.TextLayer(128/2, 24, font_named("Font_CC_7px_az.dmd"), "center").set_text(''.join(mission_text)) self.layer = dmd.GroupedLayer(128, 32, [self.first_layer,self.second_layer,self.third_layer]) self.delay(name='move_target',delay=self.target_speed,handler=self.move_target) self.update_lamps()
def mode_started(self): self.active = True self.log.info("kill 1 starting") self.game.utilities.set_player_stats('mission_in_progress','kill1') self.game.utilities.set_player_stats('kill1',1) self.game.update_lamps() for target in self.tomcatTargets: self.tomcatTargets[target]=False self.game.utilities.arduino_write_alpha(display=2,text='FUEL') self.game.utilities.arduino_write_number(display=0,number=960) self.game.utilities.arduino_start_count(display=0,direction=1,limit=0,ticks=1) self.current_position = random.randint(0,11) anim = dmd.Animation().load("/P-ROC/games/F14SecondSortie/assets/dmd/alpha2.dmd") self.first_layer = dmd.AnimatedLayer(frames=anim.frames, hold=False, repeat=True, frame_time=4) self.second_layer = dmd.TextLayer(128/2, 14, font_named("Font_CC_5px_az.dmd"),"center").set_text("SHOOT THE MOVING TARGET") self.third_layer = dmd.TextLayer(128/2, 20, font_named("Font_CC_5px_az.dmd"),"center").set_text("BEFORE FUEL RUNS OUT") self.second_layer.composite_op = 'blacksrc' self.third_layer.composite_op = 'blacksrc' self.layer = dmd.GroupedLayer(128, 32, [self.first_layer,self.second_layer,self.third_layer]) self.delay(name='move_target',delay=3,handler=self.move_target) self.delay(name='fuel_out',delay=30,handler=self.fuel_out)
def play_animation(self, file, frametime=2, txt=None, txtPos='over', seconds=2): if txt == None: self.layer = self.game.animations[file] elif txtPos == 'over': self.anim_layer = self.game.animations[file] # self.text_layer = dmd.TextLayer(128/2, 26, font_named("Font_CC_5px_az.dmd"),width=100,height=8,fill_color=10, justify="center").set_text(txt,seconds=2) self.text_layer = dmd.TextLayer(128 / 2, 26, font_named("Font_CC_5px_az.dmd"), width=128, height=8, justify="center").set_text(txt, seconds=seconds) # self.text_layer.composite_op = 'blacksrc' self.layer = dmd.GroupedLayer(128, 32, [self.anim_layer, self.text_layer]) elif txtPos == 'after': self.after_text = txt self.layer_build = self.game.animations[file] self.layer_build.add_frame_listener(-1, self.display_text_after_anim) self.layer = self.layer_build
def setDisplayContent(self): #### Script List Variable Initialization #### self.log.info("Gets scores") self.player1Score = self.game.game_data['LastGameScores']['LastPlayer1Score'] self.player2Score = self.game.game_data['LastGameScores']['LastPlayer2Score'] self.player3Score = self.game.game_data['LastGameScores']['LastPlayer3Score'] self.player4Score = self.game.game_data['LastGameScores']['LastPlayer4Score'] self.log.info("Get f14launch") #anim = dmd.Animation().load("/P-ROC/games/F14SecondSortie/assets/dmd/f14launch.dmd") #self.takeoff_layer = dmd.AnimatedLayer(frames=anim.frames, hold=False, repeat=False, frame_time=5) self.takeoff_layer = self.game.animations['credit_background'] anim2 = dmd.Animation().load("/P-ROC/games/F14SecondSortie/assets/dmd/alpha2.dmd") self.first_layer = self.game.animations['second_sortie_rotate'] self.second_layer = dmd.TextLayer(128/2, 14, font_named("Font_CC_5px_az.dmd"),"center").set_text("SHOOT THE MOVING TARGET") self.third_layer = dmd.TextLayer(128/2, 20, font_named("Font09x7.dmd"),"center").set_text("BEFORE FUEL RUNS OUT") self.second_layer.composite_op = 'blacksrc' self.third_layer.composite_op = 'blacksrc' #self.f14_splash_layer = dmd.GroupedLayer(128, 32, [self.first_layer,self.second_layer,self.third_layer]) self.f14_splash_layer = self.first_layer #self.f14_splash_layer = dmd.FrameLayer(opaque=True, frame=dmd.Animation().load('/P-ROC/games/F14SecondSortie/assets/dmd/f14bw2.dmd').frames[0]) self.f14_sunset_layer = dmd.FrameLayer(opaque=True, frame=dmd.Animation().load('/P-ROC/games/F14SecondSortie/assets/dmd/f14_logo.png').frames[0]) self.f14_layer = dmd.FrameLayer(opaque=True, frame=dmd.Animation().load('/P-ROC/games/F14SecondSortie/assets/dmd/tomcat20beware.dmd').frames[0]) self.press_layer = dmd.HDTextLayer(1200/2, 50, hdfont_named("BlackoakStd",30), "center", opaque=True,line_color=(132,132,132), line_width=1, interior_color=(128,255,128)).set_text("PRESS") self.start_layer = dmd.HDTextLayer(1200/2, 100, hdfont_named("BlackoakStd",30), "center",line_color=(132,132,132), line_width=1, interior_color=(128,255,128)).set_text("START") self.press_layer.composite_op = 'blacksrc' self.press_start_layer = dmd.GroupedLayer(1200, 600, [self.press_layer,self.start_layer], opaque=True) self.second_layer = dmd.TextLayer(1200/2, 50, hdfont_named("BlackoakStd",30), "center").set_text("SECOND") self.sortie_layer = dmd.TextLayer(1200/2, 100, hdfont_named("BlackoakStd",30), "center").set_text("SORTIE") self.second_layer.composite_op = 'blacksrc' self.second_sortie_layer = dmd.GroupedLayer(1200, 600, [self.second_layer,self.sortie_layer]) gen = dmd.MarkupFrameGenerator(width=1200) #gen.font_plain=hdfont_named("Beware",25) gen.font_bold=hdfont_named("Beware",120) gen.set_plain_font(hdfont_named("BlackoakStd", 45), interior_color=[255,0,0], border_width=1, border_color=[255,255,255]) gen.set_bold_font(hdfont_named("BlackoakStd", 60), interior_color=[0, 0, 255], border_width=1, border_color=[255,255,255]) credits_frame = gen.frame_for_markup(""" #F-14 CREDITS# [Rules + Coding] [Mark Sunnucks] [Special thanks] [G. Stellenberg] [A. Preble] [S. v/d Staaij] [M. Ocean] [S. Danesi] """) self.credits_layer = dmd.PanningLayer(width=1200, height=600, frame=credits_frame, origin=(0,0), translate=(0,1), bounce=False) self.credits_layer.composite_op = 'blacksrc' self.credits_overlay_layer = dmd.GroupedLayer(1200, 600, [self.takeoff_layer,self.credits_layer]) script = [{'seconds':5.0, 'layer':self.second_sortie_layer}, {'seconds':5.0, 'layer':self.f14_splash_layer}, {'seconds':5.0, 'layer':self.press_start_layer}, {'seconds':20.0, 'layer':self.credits_overlay_layer}, {'seconds':5.0, 'layer':self.f14_sunset_layer}, {'seconds':5.0, 'layer':self.press_start_layer}] self.layer = dmd.ScriptedLayer(width=1200, height=600, script=script, opaque=True)
def __init__(self, width=128, min_height=32): self.width = width self.min_height = min_height self.frame = None self.font_plain = font_named('Font07x5.dmd') self.font_bold = font_named('Font09Bx7.dmd')
def load(self): anims = self.value_for_key_path(keypath='Animations', default={}) or list() fonts = self.value_for_key_path(keypath='Fonts', default={}) or list() hfonts = value_for_key(fonts, 'HDFonts', {}) or list() rfonts = value_for_key(fonts, 'DMDFonts', {}) or list() fontstyles = value_for_key(fonts, 'FontStyles', {}) or list() lamps = self.value_for_key_path(keypath='LampShows', default={}) or list() sounds = self.value_for_key_path(keypath='Audio', default={}) or list() music = value_for_key(sounds, 'Music', {}) or list() effects = value_for_key(sounds, 'Effects', {}) or list() voice = value_for_key(sounds, 'Voice', {}) or list() # self.total = str(len(anims)+len(hfonts)+len(rfonts)+len(music)+len(effects)+len(voice)) self.total = (len(lamps) + len(fontstyles) + len(anims) + len(hfonts) + len(rfonts) + len(music) + len(effects) + len(voice)) try: current = "" for l in lamps: k = value_for_key(l, 'key') fname = value_for_key(l, 'file') self.updateProgressBar("Lampshows", fname) # self.lampshows = self.game.sound.register_music(k,self.game.music_path+fname, volume=volume) f = self.game.lampshow_path + fname current = 'Lampshow: [%s]: %s, %s ' % (k, f, fname) self.game.lampctrl.register_show(k, f) # Validate the lampshow --as best as possible self.game.lampctrl.show.load(f, False, None) for tr in self.game.lampctrl.show.lampshow.tracks: if tr.driver == None: # Check drivers. tr.resolve_driver_with_game(self.game) if tr.driver == None: raise ValueError, "Name '%s' specified in lampshow does not match a driver in the machine yaml." % tr.name self.numLoaded += 1 for f in hfonts: k = value_for_key(f, 'key') sname = value_for_key(f, 'systemName', k) size = value_for_key(f, 'size') file_path = value_for_key(f, 'file', None) self.updateProgressBar("HD Fonts", sname) current = 'HD font: [%s]: %s, %d ' % (k, sname, size) if (file_path is not None): file_path = self.game.hdfont_path + file_path if (not os.path.isfile(file_path)): raise ValueError, "Could not load font as specified in yaml\n %s\n File [%s] does not exist." % ( current, file_path) self.fonts[k] = dmd.hdfont_named(sname, size, font_file_path=file_path) self.numLoaded += 1 for f in rfonts: k = value_for_key(f, 'key') fname = value_for_key(f, 'file') self.updateProgressBar("DMD Fonts", fname) current = 'Font: [%s]: %s ' % (k, fname) self.fonts[k] = dmd.font_named(fname) self.numLoaded += 1 for f in fontstyles: ic = value_for_key(f, 'interior_color') lc = value_for_key(f, 'line_color') lw = value_for_key(f, 'line_width') k = value_for_key(f, 'key') font_style = dmd.HDFontStyle(interior_color=ic, line_width=lw, line_color=lc) self.fontstyles[k] = font_style for anim in anims: k = value_for_key(anim, 'key') ft = value_for_key(anim, 'frame_time', 2) f = value_for_key(anim, 'file') r = value_for_key(anim, 'repeatAnim', False) h = value_for_key(anim, 'holdLastFrame', False) o = value_for_key(anim, 'opaque', False) c = value_for_key(anim, 'composite_op') x = value_for_key(anim, 'x_loc', 0) y = value_for_key(anim, 'y_loc', 0) streaming_load = value_for_key(anim, 'streamingMovie', False) current = 'Animation: [%s]: %s' % (k, f) self.loadIntoCache(k, ft, f, r, h, o, c, x, y, streaming_load) except: self.logger.error("===ASSET MANAGER - ASSET FAILURE===") self.logger.error(current) self.logger.error("======") raise for s in music: k = value_for_key(s, 'key') fname = value_for_key(s, 'file') volume = value_for_key(s, 'volume', .5) streaming_load = value_for_key(s, 'streaming_load', True) self.updateProgressBar("Audio: Music", fname) self.game.sound.register_music( k, self.game.music_path + fname, volume=volume) #, streaming_load=streaming_load) self.numLoaded += 1 for s in effects: k = value_for_key(s, 'key') fname = value_for_key(s, 'file') volume = value_for_key(s, 'volume', .5) is_voice = value_for_key(s, 'voice', False) self.updateProgressBar("Audio SFX", fname) self.game.sound.register_sound(k, self.game.sfx_path + fname, volume=volume, is_voice=is_voice) self.numLoaded += 1 for s in voice: k = value_for_key(s, 'key') fname = value_for_key(s, 'file') volume = value_for_key(s, 'volume', .5) self.updateProgressBar("Audio Voices", fname) self.game.sound.register_sound(k, self.game.voice_path + fname, volume=volume, is_voice=True) self.numLoaded += 1
def load(self): l = logging.getLogger("PIL.PngImagePlugin") l.setLevel(logging.WARNING) l = logging.getLogger("game.assets") l.setLevel(logging.WARNING) l = logging.getLogger("game.sound") l.setLevel(logging.WARNING) l = logging.getLogger("game.dmdcache") l.setLevel(logging.WARNING) anims = self.value_for_key_path(keypath='Animations', default={}) or list() fonts = self.value_for_key_path(keypath='Fonts', default={}) or list() hfonts = value_for_key(fonts,'HDFonts',{}) or list() rfonts = value_for_key(fonts,'DMDFonts',{}) or list() fontstyles = value_for_key(fonts,'FontStyles',{}) or list() lamps = self.value_for_key_path(keypath='LampShows', default={}) or list() rgbshows = self.value_for_key_path(keypath='RGBShows', default={}) or list() sounds = self.value_for_key_path(keypath='Audio', default={}) or list() music = value_for_key(sounds,'Music',{}) or list() effects = value_for_key(sounds,'Effects',{}) or list() voice = value_for_key(sounds,'Voice',{}) or list() paths = self.value_for_key_path(keypath='AssetListFiles', default={}) or list() #if there was a list of files to load, then load those for path in paths: self.loaded_assets_files.append(path) self.values = yaml.load(open(path, 'r')) anims += self.value_for_key_path(keypath='Animations', default={}) or list() fonts = self.value_for_key_path(keypath='Fonts') or list() hfonts += value_for_key(fonts,'HDFonts',{}) rfonts += value_for_key(fonts,'DMDFonts',{}) or list() fontstyles += value_for_key(fonts,'FontStyles',{}) or list() lamps += self.value_for_key_path(keypath='LampShows', default={}) or list() rgbshows += self.value_for_key_path(keypath='RGBShows', default={}) or list() sounds = self.value_for_key_path(keypath='Audio', default={}) or list() music += value_for_key(sounds,'Music',{}) or list() effects += value_for_key(sounds,'Effects',{}) or list() voice += value_for_key(sounds,'Voice',{}) or list() # self.total = str(len(anims)+len(hfonts)+len(rfonts)+len(music)+len(effects)+len(voice)) self.total = (len(lamps) + len(fontstyles) + len(anims)+len(hfonts)+len(rfonts)+len(music)+len(effects)+len(voice)) try: current = "" for l in lamps: k = value_for_key(l,'key') fname = value_for_key(l,'file') self.updateProgressBar("Lampshows", fname) f = self.game.lampshow_path + fname current = 'Lampshow: [%s]: %s, %s ' % (k, f, fname) self.game.lampctrl.register_show(k, f) # Validate the lampshow --as best as possible self.game.lampctrl.show.load(f, False, None) for tr in self.game.lampctrl.show.lampshow.tracks: if tr.driver == None: # Check drivers. tr.resolve_driver_with_game(self.game) if tr.driver == None: raise ValueError, "Name '%s' specified in lampshow does not match a driver in the machine yaml." % tr.name self.numLoaded += 1 for l in rgbshows: k = value_for_key(l,'key') fname = value_for_key(l,'file') self.updateProgressBar("RGBShows", fname) f = self.game.lampshow_path + fname current = 'RGBshow: [%s]: %s, %s ' % (k, f, fname) self.game.rgbshow_player.load(k, f) self.numLoaded += 1 for f in hfonts: k = value_for_key(f,'key') sname = value_for_key(f,'systemName',k) size = value_for_key(f,'size') file_path = value_for_key(f, 'file', None) self.updateProgressBar("HD Fonts", sname) current = 'HD font: [%s]: %s, %d ' % (k, sname, size) if(file_path is not None): file_path = self.game.hdfont_path + file_path if(not os.path.isfile(file_path)): raise ValueError, "Could not load font as specified in yaml\n %s\n File [%s] does not exist." % (current, file_path) self.fonts[k] = dmd.hdfont_named(sname,size, font_file_path=file_path) self.numLoaded += 1 for f in rfonts: k = value_for_key(f,'key') fname = value_for_key(f,'file') self.updateProgressBar("DMD Fonts", fname) current = 'Font: [%s]: %s ' % (k, fname) self.fonts[k] = dmd.font_named(fname) self.numLoaded += 1 for f in fontstyles: ic = value_for_key(f, 'interior_color') lc = value_for_key(f, 'line_color') lw = value_for_key(f, 'line_width') k = value_for_key(f, 'key') font_style = dmd.HDFontStyle( interior_color=ic, line_width=lw, line_color=lc ) self.fontstyles[k] = font_style for anim in anims: k = value_for_key(anim,'key') ft = value_for_key(anim,'frame_time',2) f = value_for_key(anim,'file') r = value_for_key(anim,'repeatAnim',False) h = value_for_key(anim,'holdLastFrame',False) o = value_for_key(anim,'opaque',False) c = value_for_key(anim,'composite_op') x = value_for_key(anim, 'x_loc', 0) y = value_for_key(anim, 'y_loc', 0) streaming_load = value_for_key(anim, 'streamingMovie', False) current = 'Animation: [%s]: %s' % (k, f) # started = timeit.time.time() started = timeit.time.time() self.loadIntoCache(k,ft,f,r,h,o,c,x,y,streaming_load) time_taken = timeit.time.time() - started self.logger.info("loading visual asset took %.3f seconds" % time_taken) except: self.logger.error("===ASSET MANAGER - ASSET FAILURE===") self.logger.error(current) self.logger.error("======") raise for s in music: k = value_for_key(s,'key') fname = value_for_key(s,'file') volume = value_for_key(s,'volume',.5) streaming_load = value_for_key(s,'streaming_load',True) self.updateProgressBar("Audio: Music", fname) self.game.sound.register_music(k,self.game.music_path+fname, volume=volume) #, streaming_load=streaming_load) self.numLoaded += 1 for s in effects: k = value_for_key(s,'key') fname = value_for_key(s,'file') volume = value_for_key(s,'volume',.5) is_voice = value_for_key(s, 'voice', False) self.updateProgressBar("Audio SFX", fname) self.game.sound.register_sound(k,self.game.sfx_path+fname, volume=volume, is_voice=is_voice) self.numLoaded += 1 for s in voice: k = value_for_key(s,'key') fname = value_for_key(s,'file') volume = value_for_key(s,'volume',.5) self.updateProgressBar("Audio Voices", fname) self.game.sound.register_sound(k,self.game.voice_path+fname, volume=volume, is_voice=True) self.numLoaded += 1
def multiplier(self): self.log.info('Multiplier') self.third_layer = dmd.TextLayer(26, 20, font_named("Font_CC_5px_az.dmd")).set_text("MULTIPLIER X"+str(self.game.utilities.get_player_stats('bonus_x'))) self.third_layer.composite_op = 'blacksrc' self.layer = dmd.GroupedLayer(128, 32, [self.first_layer,self.second_layer,self.third_layer]) self.delay(name='next_frame', event_type=None, delay=self.delay_time, handler=self.total)
import pinproc import time import trough import player import ramps import effects import F14modes import attract import locale locale.setlocale(locale.LC_ALL, "") # Used to put commas in the score. fnt_path = "/shared/dmd/" sound_path = "./sound/" font_14x10 = font_named('Font14x10.dmd') font_jazz18 = font_named("Jazz18-18px.dmd") lampshow_files = ["./lamps/sweepleftright.lampshow", \ # "./lamps/f14fireright.lampshow", \ # "./lamps/sweepleftright.lampshow", \ ] class BaseGameMode(game.Mode): """A mode that runs whenever the game is in progress.""" def __init__(self, game): super(BaseGameMode, self).__init__(game=game, priority=1) self.yagovHurryUpActive=False self.rescue={} self.bonusXRight = 'off' self.bonusXLeft = 'off'
def reset(self): self.text1a_layer = dmd.TextLayer(64, 1, font_named("04B-03-7px.dmd"), "center", opaque=False).set_text(self.instructions_line_1) self.text1b_layer = dmd.TextLayer(64, 9, font_named("04B-03-7px.dmd"), "center", opaque=False).set_text(self.instructions_line_2) self.text2_layer = dmd.TextLayer(64, 18, font_named("04B-03-7px.dmd"), "center", opaque=False) self.text3_layer = dmd.TextLayer(64, 25, font_named("04B-03-7px.dmd"), "center", opaque=False) self.layer = dmd.GroupedLayer(128, 32, [self.text3_layer,self.text2_layer, self.text1a_layer, self.text1b_layer])#set clear time
def load(self): anims = self.value_for_key_path(keypath='Animations', default={}) or list() fonts = self.value_for_key_path(keypath='Fonts', default={}) or list() hfonts = value_for_key(fonts,'HDFonts',{}) or list() rfonts = value_for_key(fonts,'DMDFonts',{}) or list() fontstyles = value_for_key(fonts,'FontStyles',{}) or list() lamps = self.value_for_key_path(keypath='LampShows', default={}) or list() sounds = self.value_for_key_path(keypath='Audio', default={}) or list() music = value_for_key(sounds,'Music',{}) or list() effects = value_for_key(sounds,'Effects',{}) or list() voice = value_for_key(sounds,'Voice',{}) or list() # self.total = str(len(anims)+len(hfonts)+len(rfonts)+len(music)+len(effects)+len(voice)) self.total = (len(lamps) + len(fontstyles) + len(anims)+len(hfonts)+len(rfonts)+len(music)+len(effects)+len(voice)) try: current = "" for l in lamps: k = value_for_key(l,'key') fname = value_for_key(l,'file') self.updateProgressBar("Lampshows", fname) # self.lampshows = self.game.sound.register_music(k,self.game.music_path+fname, volume=volume) f = self.game.lampshow_path + fname current = 'Lampshow: [%s]: %s, %s ' % (k, f, fname) self.game.lampctrl.register_show(k, f) # Validate the lampshow --as best as possible self.game.lampctrl.show.load(f, False, None) for tr in self.game.lampctrl.show.lampshow.tracks: if tr.driver == None: # Check drivers. tr.resolve_driver_with_game(self.game) if tr.driver == None: raise ValueError, "Name '%s' specified in lampshow does not match a driver in the machine yaml." % tr.name self.numLoaded += 1 for f in hfonts: k = value_for_key(f,'key') sname = value_for_key(f,'systemName',k) size = value_for_key(f,'size') file_path = value_for_key(f, 'file', None) self.updateProgressBar("HD Fonts", sname) current = 'HD font: [%s]: %s, %d ' % (k, sname, size) if(file_path is not None): file_path = self.game.hdfont_path + file_path if(not os.path.isfile(file_path)): raise ValueError, "Could not load font as specified in yaml\n %s\n File [%s] does not exist." % (current, file_path) self.fonts[k] = dmd.hdfont_named(sname,size, font_file_path=file_path) self.numLoaded += 1 for f in rfonts: k = value_for_key(f,'key') fname = value_for_key(f,'file') self.updateProgressBar("DMD Fonts", fname) current = 'Font: [%s]: %s ' % (k, fname) self.fonts[k] = dmd.font_named(fname) self.numLoaded += 1 for f in fontstyles: ic = value_for_key(f, 'interior_color') lc = value_for_key(f, 'line_color') lw = value_for_key(f, 'line_width') k = value_for_key(f, 'key') font_style = dmd.HDFontStyle( interior_color=ic, line_width=lw, line_color=lc ) self.fontstyles[k] = font_style for anim in anims: k = value_for_key(anim,'key') ft = value_for_key(anim,'frame_time',2) f = value_for_key(anim,'file') r = value_for_key(anim,'repeatAnim',False) h = value_for_key(anim,'holdLastFrame',False) o = value_for_key(anim,'opaque',False) c = value_for_key(anim,'composite_op') x = value_for_key(anim, 'x_loc', 0) y = value_for_key(anim, 'y_loc', 0) streaming_load = value_for_key(anim, 'streamingMovie', False) current = 'Animation: [%s]: %s' % (k, f) self.loadIntoCache(k,ft,f,r,h,o,c,x,y,streaming_load) except: self.logger.error("===ASSET MANAGER - ASSET FAILURE===") self.logger.error(current) self.logger.error("======") raise for s in music: k = value_for_key(s,'key') fname = value_for_key(s,'file') volume = value_for_key(s,'volume',.5) self.updateProgressBar("Audio: Music", fname) self.game.sound.register_music(k,self.game.music_path+fname, volume=volume) self.numLoaded += 1 for s in effects: k = value_for_key(s,'key') fname = value_for_key(s,'file') volume = value_for_key(s,'volume',.5) self.updateProgressBar("Audio SFX", fname) self.game.sound.register_sound(k,self.game.sfx_path+fname, volume=volume) self.numLoaded += 1 for s in voice: k = value_for_key(s,'key') fname = value_for_key(s,'file') channel = value_for_key(s,'channel',0) volume = value_for_key(s,'volume',.5) self.updateProgressBar("Audio Voices", fname) # self.game.sound.register_sound(k,self.game.voice_path+fname, channel=channel, volume=volume) self.game.sound.register_sound(k,self.game.voice_path+fname, volume=volume) self.numLoaded += 1
def mode_started(self): self.change_lampshow() anim = dmd.Animation().load("./dmd/f14launch.dmd") self.takeoff_layer = dmd.AnimatedLayer(frames=anim.frames, hold=False, repeat=False, frame_time=5) self.f14_splash_layer = dmd.FrameLayer( opaque=True, frame=dmd.Animation().load('./dmd/f14bw2.dmd').frames[0]) self.f14_sunset_layer = dmd.FrameLayer( opaque=True, frame=dmd.Animation().load('./dmd/f14sun.dmd').frames[0]) self.f14_layer = dmd.FrameLayer( opaque=True, frame=dmd.Animation().load('./dmd/tomcat20beware.dmd').frames[0]) self.press_layer = dmd.TextLayer(128 / 2, -8, font_named("beware22aa.dmd"), "center").set_text("PRESS") self.start_layer = dmd.TextLayer(128 / 2, 8, font_named("beware22aa.dmd"), "center").set_text("START") self.start_layer.composite_op = 'blacksrc' self.press_start_layer = dmd.GroupedLayer( 128, 32, [self.press_layer, self.start_layer]) gen = dmd.MarkupFrameGenerator() gen.font_plain = font_named("beware11.dmd") gen.font_bold = font_named("beware20aa.dmd") credits_frame = gen.frame_for_markup(""" #CREDITS# [Rules + Coding] [Mark Sunnucks] [Special thanks] [G. Stellenberg] [A. Preble] [S. van der Staaij] [P-ROC] [pyprocgame] """) self.credits_layer = dmd.PanningLayer(width=128, height=32, frame=credits_frame, origin=(0, 0), translate=(0, 1), bounce=False) self.credits_layer.composite_op = 'blacksrc' self.credits_overlay_layer = dmd.GroupedLayer( 128, 32, [self.takeoff_layer, self.credits_layer]) script = [{ 'seconds': 5.0, 'layer': self.f14_splash_layer }, { 'seconds': 5.0, 'layer': self.press_start_layer }, { 'seconds': 20.0, 'layer': self.credits_overlay_layer }, { 'seconds': 5.0, 'layer': self.f14_sunset_layer }, { 'seconds': 5.0, 'layer': self.press_start_layer }] self.layer = dmd.ScriptedLayer(width=128, height=32, script=script)
def load(self): l = logging.getLogger("PIL.PngImagePlugin") l.setLevel(logging.WARNING) l = logging.getLogger("game.assets") l.setLevel(logging.WARNING) l = logging.getLogger("game.sound") l.setLevel(logging.WARNING) l = logging.getLogger("game.dmdcache") l.setLevel(logging.WARNING) anims = self.value_for_key_path(keypath='Animations', default={}) or list() fonts = self.value_for_key_path(keypath='Fonts', default={}) or list() hfonts = value_for_key(fonts, 'HDFonts', {}) or list() rfonts = value_for_key(fonts, 'DMDFonts', {}) or list() fontstyles = value_for_key(fonts, 'FontStyles', {}) or list() lamps = self.value_for_key_path(keypath='LampShows', default={}) or list() rgbshows = self.value_for_key_path(keypath='RGBShows', default={}) or list() sounds = self.value_for_key_path(keypath='Audio', default={}) or list() music = value_for_key(sounds, 'Music', {}) or list() effects = value_for_key(sounds, 'Effects', {}) or list() voice = value_for_key(sounds, 'Voice', {}) or list() paths = self.value_for_key_path(keypath='AssetListFiles', default={}) or list() #if there was a list of files to load, then load those for path in paths: self.loaded_assets_files.append(path) self.values = yaml.load(open(path, 'r')) anims += self.value_for_key_path(keypath='Animations', default={}) or list() fonts = self.value_for_key_path(keypath='Fonts') or list() hfonts += value_for_key(fonts, 'HDFonts', {}) rfonts += value_for_key(fonts, 'DMDFonts', {}) or list() fontstyles += value_for_key(fonts, 'FontStyles', {}) or list() lamps += self.value_for_key_path(keypath='LampShows', default={}) or list() rgbshows += self.value_for_key_path(keypath='RGBShows', default={}) or list() sounds = self.value_for_key_path(keypath='Audio', default={}) or list() music += value_for_key(sounds, 'Music', {}) or list() effects += value_for_key(sounds, 'Effects', {}) or list() voice += value_for_key(sounds, 'Voice', {}) or list() # self.total = str(len(anims)+len(hfonts)+len(rfonts)+len(music)+len(effects)+len(voice)) self.total = (len(lamps) + len(fontstyles) + len(anims) + len(hfonts) + len(rfonts) + len(music) + len(effects) + len(voice)) try: current = "" for l in lamps: k = value_for_key(l, 'key') fname = value_for_key(l, 'file') self.updateProgressBar("Lampshows", fname) f = self.game.lampshow_path + fname current = 'Lampshow: [%s]: %s, %s ' % (k, f, fname) self.game.lampctrl.register_show(k, f) # Validate the lampshow --as best as possible self.game.lampctrl.show.load(f, False, None) for tr in self.game.lampctrl.show.lampshow.tracks: if tr.driver == None: # Check drivers. tr.resolve_driver_with_game(self.game) if tr.driver == None: raise ValueError, "Name '%s' specified in lampshow does not match a driver in the machine yaml." % tr.name self.numLoaded += 1 for l in rgbshows: k = value_for_key(l, 'key') fname = value_for_key(l, 'file') self.updateProgressBar("RGBShows", fname) f = self.game.lampshow_path + fname current = 'RGBshow: [%s]: %s, %s ' % (k, f, fname) self.game.rgbshow_player.load(k, f) self.numLoaded += 1 for f in hfonts: k = value_for_key(f, 'key') sname = value_for_key(f, 'systemName', k) size = value_for_key(f, 'size') file_path = value_for_key(f, 'file', None) self.updateProgressBar("HD Fonts", sname) current = 'HD font: [%s]: %s, %d ' % (k, sname, size) if (file_path is not None): file_path = self.game.hdfont_path + file_path if (not os.path.isfile(file_path)): raise ValueError, "Could not load font as specified in yaml\n %s\n File [%s] does not exist." % ( current, file_path) self.fonts[k] = dmd.hdfont_named(sname, size, font_file_path=file_path) self.numLoaded += 1 for f in rfonts: k = value_for_key(f, 'key') fname = value_for_key(f, 'file') self.updateProgressBar("DMD Fonts", fname) current = 'Font: [%s]: %s ' % (k, fname) self.fonts[k] = dmd.font_named(fname) self.numLoaded += 1 for f in fontstyles: ic = value_for_key(f, 'interior_color') lc = value_for_key(f, 'line_color') lw = value_for_key(f, 'line_width') k = value_for_key(f, 'key') font_style = dmd.HDFontStyle(interior_color=ic, line_width=lw, line_color=lc) self.fontstyles[k] = font_style for anim in anims: k = value_for_key(anim, 'key') ft = value_for_key(anim, 'frame_time', 2) f = value_for_key(anim, 'file') r = value_for_key(anim, 'repeatAnim', False) h = value_for_key(anim, 'holdLastFrame', False) o = value_for_key(anim, 'opaque', False) c = value_for_key(anim, 'composite_op') x = value_for_key(anim, 'x_loc', 0) y = value_for_key(anim, 'y_loc', 0) streaming_load = value_for_key(anim, 'streamingMovie', False) png_stream_cache = value_for_key(anim, 'streamingPNG_Cached', False) streaming_png = value_for_key(anim, 'streamingPNG', png_stream_cache) current = 'Animation: [%s]: %s' % (k, f) # started = timeit.time.time() started = timeit.time.time() self.loadIntoCache(k, ft, f, r, h, o, c, x, y, streaming_load, streaming_png, png_stream_cache) time_taken = timeit.time.time() - started self.logger.info("loading visual asset took %.3f seconds" % time_taken) except: self.logger.error("===ASSET MANAGER - ASSET FAILURE===") self.logger.error(current) self.logger.error("======") raise for s in music: k = value_for_key(s, 'key') fname = value_for_key(s, 'file') volume = value_for_key(s, 'volume', .5) streaming_load = value_for_key(s, 'streaming_load', True) self.updateProgressBar("Audio: Music", fname) self.game.sound.register_music( k, self.game.music_path + fname, volume=volume) #, streaming_load=streaming_load) self.numLoaded += 1 for s in effects: k = value_for_key(s, 'key') fname = value_for_key(s, 'file') volume = value_for_key(s, 'volume', .5) is_voice = value_for_key(s, 'voice', False) self.updateProgressBar("Audio SFX", fname) self.game.sound.register_sound(k, self.game.sfx_path + fname, volume=volume, is_voice=is_voice) self.numLoaded += 1 for s in voice: k = value_for_key(s, 'key') fname = value_for_key(s, 'file') volume = value_for_key(s, 'volume', .5) self.updateProgressBar("Audio Voices", fname) self.game.sound.register_sound(k, self.game.voice_path + fname, volume=volume, is_voice=True) self.numLoaded += 1
def __init__(self): #super(F14SecondSortie, self).__init__(pinproc.MachineTypeWPC95) self.curr_file_path = curr_file_path super(F14SecondSortie, self).__init__(pinproc.MachineTypeWPC95) self.load_config(game_machine_yaml) self.tomcatTargetIndex = (["lowerLeftT", "lowerLeftO", "lowerLeftM", "upperLeftT", "upperLeftO", "upperLeftM", "upperRightC", "upperRightA", "upperRightT", "lowerRightC", "lowerRightA", "lowerRightT"]) self.logging_enabled = True # self.balls_per_game = ballsPerGame ### Set Logging Info ### logging.basicConfig(filename='f14.txt', level=logging.INFO) #### Settings and Game Data #### self.load_settings(settings_template_path, settings_path) self.load_game_data(game_data_template_path, game_data_path) # update audit data on boot up time self.game_data['Time Stamps']['Last Boot-Up'] = str(strftime("%d %b %Y %H:%M")) if self.game_data['Time Stamps']['First Boot-Up'] == 'Not Set': self.game_data['Time Stamps']['First Boot-Up'] = self.game_data['Time Stamps']['Last Boot-Up'] self.save_game_data() # used to hold the 'fonts' dictionary fonts = {} animations = {} self.lampshow_path = config.value_for_key_path('lampshow_path', curr_file_path + "/assets/lampshows/") self.dmd_path = config.value_for_key_path('dmd_path', curr_file_path + "/assets/dmd/") self.sound_path = config.value_for_key_path('sound_path', curr_file_path + "/assets/sound/") self.voice_path = self.sound_path + config.value_for_key_path('voice_dir', "voice/") self.sfx_path = self.sound_path + config.value_for_key_path('sfx_dir', "sfx/") self.music_path = self.sound_path + config.value_for_key_path('music_dir', "music/") self.hdfont_path = config.value_for_key_path('hdfont_dir', curr_file_path + "/assets/fonts/") #### Setup Sound Controller #### self.sound = sound.SoundController(self) #self.RegisterSound() #### Pre-load animations #self.RegisterAnimations() #### Setup Lamp Controller #### self.lampctrl = procgame.lamps.LampController(self) self.lampctrlflash = procgame.lamps.LampController(self) #self.RegisterLampshows() # call load_assets function to load fonts, sounds, etc. self.load_assets() #### software version number #### self.revision = "2.0.0" #### Mode Definitions #### OSC_closed_switches = ['trough1', 'trough2', 'trough3', 'trough4'] #self.osc = modes.OSC_Mode(game=self, priority=1, closed_switches=OSC_closed_switches) #self.modes.add(self.osc) self.score_display = score_display.ScoreDisplay(self, 0) self.reset() self.utilities = UtilitiesMode(self, 100) self.trough = Trough(self, 0) self.info = Info(self, 200) self.base_mode = BaseGameMode(self, 0) self.attract_mode = AttractMode(self, 1) self.mission = MissionMode(self, 2) self.locks = LocksMode(self, 50) self.kill1mission = Kill1Mode(self, 3) self.kill2mission = Kill2Mode(self, 3) self.kill3mission = Kill3Mode(self, 3) self.kill4mission = Kill4Mode(self, 3) self.kill5mission = Kill5Mode(self, 3) self.kill6mission = Kill6Mode(self, 3) self.kill7mission = Kill7Mode(self, 3) self.ballsaver_mode = BallSaver(self, 1) self.kickback_mode = KickbackMode(self, 1) self.exitgame_mode = ExitGameMode(self, 1) # self.tilt = Tilt(self,200) self.bonus_mode = Bonus(self, 102) self.multiball_mode = Multiball(self, 101) # self.quick_multiball_mode = QuickMultiball(self,101) self.service_mode = ServiceMode(self, 300, font_named("Font07x5.dmd"), font_named("font_8x6_bold.dmd"), []) #### Initial Mode Queue #### self.modes.add(self.exitgame_mode) self.modes.add(self.utilities) self.modes.add(self.trough) self.modes.add(self.base_mode) self.modes.add(self.mission) self.modes.add(self.locks)