def draw( self, frame ): resman.get("game.hud_score_surf").draw( frame.surface, Vec2D(0,0) ) resman.get("game.hud_watch_surf").draw( frame.surface, Vec2D(5,290) ) y = 7 for goldcars in self.scenario.playfield.get_goldcar_ranking(): for goldcar in goldcars: sprite = copy.copy(resman.get("game.car%d_sprite" % (goldcar.nr+1))) sprite.nr = 20 * goldcar.amount sprite.draw( frame.surface, Vec2D(24, y + 30) ) self.font_score.draw( "%d" % (goldcar.score), frame.surface, (110, y + 4), align = gfx.Font.RIGHT ) y += 35 timeout = self.scenario.get_timeout() if timeout is not None: time_string = "%01d:%02d" % (timeout/60, timeout%60) time_x = 0 for char in time_string: self.font_watch.draw( char, frame.surface, (49 + time_x, 383), align=gfx.Font.CENTER ) time_x += 10 if self.dialog is not None: self.dialog.draw( frame ) if not isinstance( self.dialog, IntroDlg ): self.font_white.draw( self.scenario.mission_txt, frame.surface, (130, 5 ) ) self.menu_btn.draw( frame.surface, frame.interpol, frame.time_sec )
def draw( self, frame ): TipDlg.draw( self, frame ) frame.optimize_speed = False frame.draw( self.playfield ) frame.optimize_speed = True resman.get("gui.enterdlg_surf").draw(frame.surface, geo.Vec2D(0,0))
def draw( self, frame ): pos = self.get_pos( frame ) if self.model.is_north_exit(): tile_surf = resman.get("game.exittopnorth_surf") tile_surf.draw( frame.surface, pos ) else: tile_surf = resman.get("game.exittopeast_surf") tile_surf.draw( frame.surface, pos )
def __init__( self, game_data ): self.game_data = game_data self.crate_sprite = resman.get("game.crate_sprite") self.crate_label = resman.get("game.crate_label_surf") self.unlock_timer = 0 self.teaser_timer = -20 self.teaser_cnt = -1 self.teaser_dir = 1
def draw( self, frame ): if self.model.type == Tile.Type.FLAT: pos = Vec2D( self.model.pos.x * 32 + self.model.pos.y * 32 + frame.X_OFFSET, -self.model.pos.x * 16 + self.model.pos.y * 16 + frame.Y_OFFSET) if self.model.is_selected: selected_surf = resman.get("game.selected_tile_surf") selected_surf.draw( frame.surface, pos ) trail_surf = resman.get("game.trail%d_surf" % self.model.trail.type) trail_surf.draw( frame.surface, pos ) if self.model.pickup is not None: frame.draw( self.model.pickup )
def _init_levelpoints( self, game_data, cheat = False ): self.lines = [[(162, 399), (127, 374), (99, 352)], [(58, 354), (49, 287), (55, 235), (64, 210), (89, 196), (123, 196)], [(156, 194), (149, 156), (133, 123), (109, 101), (81, 95), (62, 95)], [(129, 61), (160, 51), (185, 45), (218, 48), (251, 57), (278, 60)], [(319, 67), (334, 96), (348, 121), (348, 142), (342, 159), (326, 167)], [(286, 186), (289, 205), (294, 228), (312, 267)], [(324, 278), (341, 292), (367, 309), (395, 320), (422, 322), (450, 314), (484, 295), (503, 273)], [(472, 260), (497, 244), (529, 232), (552, 204), (556, 171), (532, 158)], [(472, 162), (437, 154), (406, 137), (407, 112), (418, 92), (451, 81), (494, 73), (524, 78), (701, 103), (729, 121), (739, 155), (725, 181), (702, 186), (676, 177), (650, 171), (641, 182), (640, 213), (655, 232)], [(750, 214), (733, 240), (717, 270), (692, 289), (662, 318), (641, 349), (646, 372)], [(732, 393), (696, 421), (657, 453)]] # self.lines = [[(98, 443), (165, 372)], [(200, 384), (281, 323), (267, 295)], [(189, 315), (105, 302), (138, 264), (222, 254)], [(257, 270), (306, 216), (262, 184)], [(202, 218), (116, 205), (103, 163), (209, 146), (281, 119)], [(322, 131), (400, 110), (435, 131), (407, 159)], [(386, 155), (379, 189), (448, 219), (457, 241)], [(484, 238), (497, 269), (472, 292), (424, 295)], [(399, 291), (390, 323), (478, 337), (565, 308)], [(575, 305), (582, 270), (601, 259), (559, 245), (565, 227)], [(584, 222), (588, 200), (554, 182)], [(535, 190), (489, 157), (526, 130), (523, 113), (566, 89), (699, 84), (751, 95), (762, 115), (739, 141), (745, 159), (678, 196), (693, 230)], [(710, 238), (694, 277)], [(682, 281), (684, 308), (744, 326), (757, 370), (737, 394)], [(706, 385), (667, 449)]] self.lines_length = 0.0 for seq in self.lines: for i in range( 0, len(seq) - 1 ): a = Vec2D( seq[i][0], seq[i][1] ) b = Vec2D( seq[i+1][0], seq[i+1][1] ) diff = a - b self.lines_length += diff.length() self.levelpoints = Radiobuttons() total_points = game_data.quest.get_level_count() config = Configuration.get_instance() for i in range( total_points ): sprite = resman.get("gui.levelpoint_sprite").clone() levelpoint = ImageCheckbox( sprite, self._get_point_place(i, total_points) ) levelpoint.is_enabled = (i <= config.unlocked_level) or cheat self.levelpoints.append( levelpoint )
def draw( self, frame ): BaseDlg.draw( self, frame ) center = Vec2D( frame.surface.get_width()/2, frame.surface.get_height()/2 ) y = 365 if self.no_input_timeout <= 0: self.font.draw( _("Press your button or click on the car"), frame.surface, (center.x, y+15), gfx.Font.CENTER ) y = 415 place = 0 for controller in self.ground_control.controllers: goldcar = controller.goldcar x = self.get_goldcar_x( place ) if isinstance(controller, ctrl.HumanController): button_text = "< %s >" % controller.action_button.get_name() self.small_font.draw( button_text, frame.surface, (x, y + 30), gfx.Font.CENTER ) sprite = copy.copy(resman.get("game.car%d_sprite" % (goldcar.nr+1))) if self.readys is not None: if self.readys[place]: self.small_font.draw( _("Ready!"), frame.surface, (x, y+50), gfx.Font.CENTER ) sprite.nr = 60 else: self.small_font.draw( _("waiting..."), frame.surface, (x, y+50), gfx.Font.CENTER ) sprite.nr = self.anim_timer.get_frame( frame.time_sec ) sprite.draw( frame.surface, Vec2D(x, y + 26) ) place += 1
def __init__(self, model): PickupView.__init__(self) self.model = model self.sprite = resman.get("game.copper_sprite").clone() self.animTimer = LoopAnimationTimer(25, 0, self.sprite.max_x) self.animTimer.set_frame(0, random.randint(0, self.sprite.max_x - 1))
def __init__(self, pos): self.pos = pos self.life = 10 + int(random.random() * 2) self.move = Vec2D(random.uniform(-2.5, 2.5), random.uniform(-2.5, 0.0)) self.surf = resman.get("game.sparkle_surf") width, height = self.surf.get_size() self.center = Vec2D(width / 2, height / 2)
def __init__(self, model): PickupView.__init__(self) self.model = model self.sprite = resman.get("game.axe_sprite").clone() # FIXME: make it pingpong instead of loop self.animTimer = PingPongTimer(25, 0, 8)
def __init__( self ): self.carsprite = resman.get("game.introcar_sprite") self.carsprite_car = resman.get("game.introcar_car") self.carsprite_man = resman.get("game.introcar_man") self.carsprite_hat = resman.get("game.introcar_hat") self.carsprite_hat_front = resman.get("game.introcar_hat_front") self.rails = CarAnimation.RailObject( 0 ) self.car = CarAnimation.RailObject( 1.5 ) self.man = CarAnimation.RailObject( 1.0 ) self.hat = CarAnimation.RailObject( 1.0 ) self.credits = [] self.credits_counter = 0 self.credits_index = 0 self.state = CarAnimation.STATE_NORMAL
def __init__( self, game_data ): Screen.__init__( self ) self.game_data = game_data self._is_done = False btnFont = Font( "data/edmunds.ttf", color=(64,64,64), size=22, use_antialias = True ) self.menu_btn = ImageButton( copy.copy(resman.get("game.lvl_left_button")), Vec2D(35, 500) ) self.menu_btn.set_label( _(" Menu"), btnFont ) self.play_btn = ImageButton( copy.copy(resman.get("game.lvl_right_button")), Vec2D(800-158-35,500) ) self.play_btn.set_label( _("Play "), btnFont ) self.add_subcomponent( self.menu_btn ) self.add_subcomponent( self.play_btn ) self._init_levelpoints( self.game_data ) if self.game_data.finished_game(): self.state = ScreenLevelSelect.CONGRATS self.unlock_timer = 0 self.fireworks = Fireworks() elif self.game_data.can_unlock_item(): self.state = ScreenLevelSelect.UNLOCK self.unlock_timer = 0 else: self.state = ScreenLevelSelect.LEVELS self.background = resman.get("gui.levelselect_surf") self.font = pygame.font.Font("data/edmunds.ttf", 20) self.fontL = pygame.font.Font("data/edmunds.ttf", 28) self.scenario = self.game_data.get_quest().create_scenario(self.game_data.skill_level.value) self.info = ScenarioInfo( self.scenario, self.game_data ) self.levelpoints[ self.game_data.get_quest().progress ].set_selected() desc_font = Font( "data/edmunds.ttf", color=(0,0,0), size=20, use_antialias = True ) self.description_field = TextField( Rectangle(250, 450, 300, 140), desc_font ) self.description_field.is_enabled = False self.add_subcomponent( self.description_field ) self.crate_hud = CrateHud( game_data ) self.update_neighbors() self.init_active = True
def __init__( self, game_data ): self.game_data = game_data self.screen = ScreenGameSelect( game_data ) self._is_done = False self.should_quit = False self.guistate = GuiState() self.music = resman.get("game.menu_music") self.music.play( -1 )
def __init__( self, game_data ): super(ScreenPlayerSelect, self).__init__( Rectangle(140, 80, 800-200, 600-200 ) ) self.background_image = resman.get("gui.paperdialog_surf") self.game_data = game_data self._is_done = False self.cancelled = False self.stage = StageHumanCount()
def draw_opponents( self, surface, time_sec, pos ): opponent_count = len(self.game_data.get_quest().get_opponent_iqs()) pos = Vec2D(pos[0], pos[1]) - Vec2D(35, 17) * ((opponent_count-1)/2) for i in range(0, opponent_count): offset = Vec2D(i*35, i*17) sprite = copy.copy(resman.get("game.car%d_sprite" % (i+2))) sprite.nr = 0 sprite.draw( surface, pos + offset )
def __init__( self, model ): self.model = model self.sprite = copy.copy(resman.get("game.car%d_sprite" % (model.nr+1))) self.motionblur = [] self.motionblur_cnt = 0 self.motionblur_timer = Timer( 25 ) self.alpha_surfs = {} self.ghost_sprite = None
def __init__( self, pos, end_tiles ): self.particles = [] for tile in end_tiles: self.particles.append( Explosion.GoldParticle( pos, tile ) ) self.pos = pos self.sprite = resman.get("game.explosion_sprite").clone() self.animTimer = None Event.explosion()
def __init__( self, scenario, ground_control ): gui.Dialog.__init__( self, Rectangle(140, 80, 800-200, 600-200 ) ) self.background_image = resman.get("gui.paperdialog_surf") self.scenario = scenario self.ground_control = ground_control self.font = gfx.Font("data/edmunds.ttf", 20, use_antialias = True) self.large_font = gfx.Font( "data/edmunds.ttf", 28, use_antialias = True ) self.small_font = gfx.Font( "data/edmunds.ttf", 16, use_antialias = True ) self.guistate = gui.GuiState()
def draw_skill_bar( self, frame, x, y ): resman.get("game.skill_bar_surf").draw( frame.surface, Vec2D(x+10,y+85) ) MIN_Y = y MAX_Y = y + 7 * 21 + 12 pointer_y = geo.lin_ipol( self.skill_value, MAX_Y + 7, MIN_Y + 17, 0.3, 1.0 ) pointer_y = max( min( pointer_y, MAX_Y ), MIN_Y ) # pointer_y = MAX_Y resman.get("game.skill_pointer_surf").draw( frame.surface, Vec2D(x+10, pointer_y) ) self.font_tiny_white.draw("%d" % int(self.skill_value * 100), frame.surface, (x+13, pointer_y+2), align=gfx.Font.CENTER, valign=gfx.Font.MIDDLE ) for skill_name in settings.SkillLevel.NAMES: if skill_name == self.game_data.skill_level.name: self.font_tiny_red.draw( skill_name, frame.surface, (x+40, y) ) else: self.font_tiny.draw( skill_name, frame.surface, (x+40, y) ) y += 21
def tick( self, userinput, guistate ): Component.tick( self, userinput, guistate ) for dev in userinput.devs_no_mouse: if dev.any_went_down(): Event.playerkey() button = input.Button(dev, dev.went_down_buttons[0]) if button not in self.forbidden_buttons: resman.get("gui.key_good_sound").play() self.forbidden_buttons.append( button ) if self.current_player <= self.player_cnt: player_data = [_("Player %d") % self.current_player, ctrl.HumanController( None, button )] self.game_data.goldcars.append( player_data ) self.current_player += 1 if self.current_player <= self.player_cnt: self.update_labels() else: resman.get("gui.key_bad_sound").play()
def __init__(self, scenario, ground_control): gui.Dialog.__init__(self, Rectangle(140, 80, 800 - 200, 600 - 200)) self.background_image = resman.get("gui.paperdialog_surf") self.scenario = scenario self.ground_control = ground_control self.font = gfx.Font("data/edmunds.ttf", 20, use_antialias=True) self.large_font = gfx.Font("data/edmunds.ttf", 28, use_antialias=True) self.small_font = gfx.Font("data/edmunds.ttf", 16, use_antialias=True) self.guistate = gui.GuiState()
def draw_background( self, frame ): for tile in self.model.tiles: if not isinstance( tile, tiles.Enterance ): x = tile.pos.x * 32 + tile.pos.y * 32 + frame.X_OFFSET y = -tile.pos.x * 16 + tile.pos.y * 16 + frame.Y_OFFSET pos = geo.Vec2D( x, y ) tile_surf = resman.get("game.tile%d_surf" % tile.type) if not hasattr( tile, "view_surf_nr" ): tile.view_surf_nr = random.randint(0,4) tile_surf.nr = tile.view_surf_nr tile_surf.draw( frame.surface, pos )
def draw_background(self, frame): for tile in self.model.tiles: if not isinstance(tile, tiles.Enterance): x = tile.pos.x * 32 + tile.pos.y * 32 + frame.X_OFFSET y = -tile.pos.x * 16 + tile.pos.y * 16 + frame.Y_OFFSET pos = geo.Vec2D(x, y) tile_surf = resman.get("game.tile%d_surf" % tile.type) if not hasattr(tile, "view_surf_nr"): tile.view_surf_nr = random.randint(0, 4) tile_surf.nr = tile.view_surf_nr tile_surf.draw(frame.surface, pos)
def __init__(self, model): PickupView.__init__(self) self.model = model self.sprite = resman.get("game.dynamite_sprite").clone() self.sprite_delta = 1 self.prev_life = 1.0 w, h = self.sprite.get_size() self.sparkle_offset = Vec2D(7, -h + 24) self.sparkle_line = Vec2D(0, -22) self.sparkles = [] self.sparkle_timer = Timer(25)
def tick( self, userinput ): self.tick_car( userinput ) # check click on hat if userinput.mouse.went_down( input.Mouse.LEFT )\ and Rectangle(150, self.hat.offset + 150, 155, 50).contains(userinput.mouse.pos): resman.get("gui.shot_sound").play() self.state = CarAnimation.STATE_DOWN if self.state == CarAnimation.STATE_CREDITS: self.credits_counter += 1 if self.credits_counter > 25: self.credits_counter = 0 self.credits.append( Credit( CarAnimation.CREDITS[ self.credits_index ] ) ) self.credits_index = (self.credits_index + 1) % len(CarAnimation.CREDITS) new_credits = [] for credit in self.credits: credit.tick() if not credit.is_dead(): new_credits.append( credit ) self.credits = new_credits
def __init__( self, color, pos, speed, damping, life_count, sub_color ): if color >= 0: self.color = color else: self.color = random.randint(0, 6) self.pos = pos self.speed = speed self.damping = damping self.life_count = life_count self.sub_color = sub_color if Fireworks.sprite is None: Fireworks.sprite = resman.get("gui.fireworks_sprite").clone()
def __init__(self, game_data): self.restart(game_data) self.music_man = MusicManager() # preload clock sounds and big explosion graphic resman.get("game.clock_sound") resman.get("game.clockring_sound") resman.get("game.explosion_sprite")
def __init__( self, game_data ): self.restart( game_data ) self.music_man = MusicManager() # preload clock sounds and big explosion graphic resman.get("game.clock_sound") resman.get("game.clockring_sound") resman.get("game.explosion_sprite")
def draw(self, frame): resman.get("game.hud_score_surf").draw(frame.surface, Vec2D(0, 0)) resman.get("game.hud_watch_surf").draw(frame.surface, Vec2D(5, 290)) y = 7 for goldcars in self.scenario.playfield.get_goldcar_ranking(): for goldcar in goldcars: sprite = copy.copy( resman.get("game.car%d_sprite" % (goldcar.nr + 1))) sprite.nr = 20 * goldcar.amount sprite.draw(frame.surface, Vec2D(24, y + 30)) self.font_score.draw("%d" % (goldcar.score), frame.surface, (110, y + 4), align=gfx.Font.RIGHT) y += 35 timeout = self.scenario.get_timeout() if timeout is not None: time_string = "%01d:%02d" % (timeout / 60, timeout % 60) time_x = 0 for char in time_string: self.font_watch.draw(char, frame.surface, (49 + time_x, 383), align=gfx.Font.CENTER) time_x += 10 if self.dialog is not None: self.dialog.draw(frame) if not isinstance(self.dialog, IntroDlg): self.font_white.draw(self.scenario.mission_txt, frame.surface, (130, 5)) self.menu_btn.draw(frame.surface, frame.interpol, frame.time_sec)
def init_background( self ): self.background = gfx.Surface( (800,600) ) frame = frm.Frame( self.background, 0, 0 ) frame.X_OFFSET, frame.Y_OFFSET = 20, 300 for tile in self.model.tiles: if not isinstance( tile, tiles.Enterance ): x = tile.pos.x * 32 + tile.pos.y * 32 + frame.X_OFFSET y = -tile.pos.x * 16 + tile.pos.y * 16 + frame.Y_OFFSET pos = geo.Vec2D( x, y ) tile_surf = resman.get("game.tile%d_surf" % tile.type) tile_surf.nr = random.randint(0,4) tile_surf.draw( frame.surface, pos )
def init_background(self): self.background = gfx.Surface((800, 600)) frame = frm.Frame(self.background, 0, 0) frame.X_OFFSET, frame.Y_OFFSET = 20, 300 for tile in self.model.tiles: if not isinstance(tile, tiles.Enterance): x = tile.pos.x * 32 + tile.pos.y * 32 + frame.X_OFFSET y = -tile.pos.x * 16 + tile.pos.y * 16 + frame.Y_OFFSET pos = geo.Vec2D(x, y) tile_surf = resman.get("game.tile%d_surf" % tile.type) tile_surf.nr = random.randint(0, 4) tile_surf.draw(frame.surface, pos)
def __init__( self, scenario, ground_control, game_data ): self.font = gfx.Font("data/edmunds.ttf", 20, use_antialias = True) self.font_white = gfx.Font("data/edmunds.ttf", 20, (255,255,255), use_antialias = True) self.font_score = gfx.Font("data/edmunds.ttf", 18, (255,255,255), use_antialias = True) self.font_watch = gfx.Font("data/edmunds.ttf", 18, (0,0,0), use_antialias = True) self.scenario = scenario self.ground_control = ground_control self.game_data = game_data self.dialog = None self.guistate = gui.GuiState() btnFont = gfx.Font( "data/edmunds.ttf", color=(0,0,0), size=19, use_antialias = True ) self.menu_btn = gui.ImageButton( copy.copy(resman.get("game.hud_menu_button_sprite")), Vec2D(5, 257) ) self.menu_btn.set_label( _("Menu"), btnFont ) self.last_clock_ring = None
def __init__(self, is_single_player, game_data): super(IngameMenu, self).__init__(Rectangle(140, 80, 800 - 400, 600 - 200)) self.background_image = resman.get("gui.paperdialog_surf") self._is_done = False self.game_data = game_data btnFont = gfx.Font("data/edmunds.ttf", color=(0, 0, 0), size=32, use_antialias=True) BUTTON_X = 300 BUTTON_Y = 100 H = 75 self.continue_btn = gui.ImageButton( copy.copy(resman.get("game.button02_sprite")), Vec2D(BUTTON_X, BUTTON_Y)) self.continue_btn.set_label(_("Continue"), btnFont) self.skip_btn = gui.ImageButton( copy.copy(resman.get("game.button02_sprite")), Vec2D(BUTTON_X, BUTTON_Y + 1 * H)) self.skip_btn.set_label(_("Skip Level"), btnFont) self.options_btn = gui.ImageButton( copy.copy(resman.get("game.button02_sprite")), Vec2D(BUTTON_X, BUTTON_Y + 2 * H)) self.options_btn.set_label(_("Options"), btnFont) self.menu_btn = gui.ImageButton( copy.copy(resman.get("game.button02_sprite")), Vec2D(BUTTON_X, BUTTON_Y + 3 * H)) self.menu_btn.set_label(_("To Menu"), btnFont) self.quit_btn = gui.ImageButton( copy.copy(resman.get("game.button02_sprite")), Vec2D(BUTTON_X, BUTTON_Y + 4 * H)) self.quit_btn.set_label(_("Quit"), btnFont) self.add_subcomponent(self.continue_btn) if not is_single_player: self.add_subcomponent(self.skip_btn) self.add_subcomponent(self.options_btn) self.add_subcomponent(self.menu_btn) self.add_subcomponent(self.quit_btn) self.update_neighbors() self.options_dialog = None self.to_menu = False self.should_quit = False self.to_next_level = False
def before_gameloop( self ): resman.read("data/resources.cfg") self.game_data = GameData( self.userinput ) # apply configuration settings SoundManager.set_sound_volume( self.config.sound_volume ) SoundManager.set_music_volume( self.config.music_volume ) # set state self.menu = MonorailMenu( self.game_data ) self.game = MonorailGame( self.game_data ) self.editor = None self.state = self.game self.state = self.menu # set window buttons self.max_button = ImageButton( copy.copy(resman.get("game.max_button")), Vec2D(800-16-4, 4) )
def draw(self, frame): BaseDlg.draw(self, frame) center = Vec2D(frame.surface.get_width() / 2, frame.surface.get_height() / 2) y = 365 if self.no_input_timeout <= 0: self.font.draw(_("Press your button or click on the car"), frame.surface, (center.x, y + 15), gfx.Font.CENTER) y = 415 place = 0 for controller in self.ground_control.controllers: goldcar = controller.goldcar x = self.get_goldcar_x(place) if isinstance(controller, ctrl.HumanController): button_text = "< %s >" % controller.action_button.get_name( ) self.small_font.draw(button_text, frame.surface, (x, y + 30), gfx.Font.CENTER) sprite = copy.copy( resman.get("game.car%d_sprite" % (goldcar.nr + 1))) if self.readys is not None: if self.readys[place]: self.small_font.draw(_("Ready!"), frame.surface, (x, y + 50), gfx.Font.CENTER) sprite.nr = 60 else: self.small_font.draw(_("waiting..."), frame.surface, (x, y + 50), gfx.Font.CENTER) sprite.nr = self.anim_timer.get_frame(frame.time_sec) sprite.draw(frame.surface, Vec2D(x, y + 26)) place += 1
def before_gameloop(self): resman.read("data/resources.cfg") self.game_data = GameData(self.userinput) # apply configuration settings SoundManager.set_sound_volume(self.config.sound_volume) SoundManager.set_music_volume(self.config.music_volume) # set state self.menu = MonorailMenu(self.game_data) self.game = MonorailGame(self.game_data) self.editor = None self.state = self.game self.state = self.menu # set window buttons self.max_button = ImageButton(copy.copy(resman.get("game.max_button")), Vec2D(800 - 16 - 4, 4))
def update(): new_points = [] for point in Event.instance.points: point.update() if point.is_alive(): new_points.append(point) Event.instance.points = new_points if Event.instance.play_fuse and \ not resman.get("game.fuse_sound").is_playing(): resman.get("game.fuse_sound").play(-1) elif not Event.instance.play_fuse and \ resman.get("game.fuse_sound").is_playing(): resman.get("game.fuse_sound").stop() Event.instance.play_fuse = False
def update(): new_points = [] for point in Event.instance.points: point.update() if point.is_alive(): new_points.append( point ) Event.instance.points = new_points if Event.instance.play_fuse and \ not resman.get("game.fuse_sound").is_playing(): resman.get("game.fuse_sound").play(-1) elif not Event.instance.play_fuse and \ resman.get("game.fuse_sound").is_playing(): resman.get("game.fuse_sound").stop() Event.instance.play_fuse = False
def draw(self, frame): MultiDlg.draw(self, frame) #winner = None #for goldcar in self.playfield.goldcars: # if winner is None or winner.score < goldcar.score: # winner = goldcar center = Vec2D(frame.surface.get_width() / 2, frame.surface.get_height() / 2) y = center.y - 180 self.large_font.draw(_("Game Ended!"), frame.surface, (center.x, y), gfx.Font.CENTER) y += 32 self.font.draw(_("Ranking"), frame.surface, (center.x - 150, y)) ranking = self.scenario.playfield.get_goldcar_ranking() place = 1 y -= 5 for goldcars in ranking: y += 32 self.font.draw("%d." % place, frame.surface, (center.x - 170, y), gfx.Font.RIGHT) goldcar_x = center.x - 140 for goldcar in goldcars: sprite = copy.copy( resman.get("game.car%d_sprite" % (goldcar.nr + 1))) sprite.nr = 20 * goldcar.amount sprite.draw(frame.surface, Vec2D(goldcar_x, y + 26)) goldcar_x += 40 place += 1 self.font.draw("%d" % goldcars[0].score, frame.surface, (center.x + 100, y), gfx.Font.RIGHT)
def __init__( self, game_data, player_cnt ): Component.__init__( self ) self.game_data = game_data self.game_data.goldcars = [] self.player_cnt = player_cnt self.current_player = 1 btnFont = Font( "data/edmunds.ttf", color=(0,0,0), size=32, use_antialias = True ) self.textLabel = Label( Vec2D(250, 300), _("Player 1, press button!"), btnFont ) self.car_sprite = resman.get("game.car1_sprite") self.carLabel = Label( Vec2D(400, 240), image=self.car_sprite ) self.anim_timer = LoopAnimationTimer( 15, 40, 12 ) self.add_subcomponent( self.textLabel ) self.add_subcomponent( self.carLabel ) self.forbidden_buttons = [input.Button(self.game_data.userinput.key, K_ESCAPE)]
def __init__( self, game_data ): super(type(self), self).__init__( Rectangle(140, 80, 800-200, 600-200 ) ) self.background_image = resman.get("gui.paperdialog_surf") self._is_done = False self.game_data = game_data self.dialog = None self.config = Configuration.get_instance() btnFont = Font( "data/edmunds.ttf", color=(0,0,0), size=32, use_antialias = True ) self.sound_lbl = Label( Vec2D(200, 130), _("Sound"), btnFont ) star = ImageButton( copy.copy(resman.get("gui.sheriffstar_sprite") ) ) self.sound_slider = ImageSlider( Vec2D( 320, 140 ), copy.copy(resman.get("gui.slider_sprite")), star ) self.music_lbl = Label( Vec2D(200, 195), _("Music"), btnFont ) star = ImageButton( copy.copy(resman.get("gui.sheriffstar_sprite") ) ) self.music_slider = ImageSlider( Vec2D( 320, 205 ), copy.copy(resman.get("gui.slider_sprite")), star ) self.fullscreen_btn = ImageButton( copy.copy(resman.get("game.button02_sprite")), Vec2D(300,260) ) self.update_fullscreen_label() self.access_btn = ImageButton( copy.copy(resman.get("game.button02_sprite")), Vec2D(300,340) ) self.access_btn.set_label( _("Accessibility"), btnFont ) self.close_btn = ImageButton( copy.copy(resman.get("game.button02_sprite")), Vec2D(300,420) ) self.close_btn.set_label( _("Close"), btnFont ) self.add_subcomponent( self.sound_lbl ) self.add_subcomponent( self.sound_slider ) self.add_subcomponent( self.music_lbl ) self.add_subcomponent( self.music_slider ) self.add_subcomponent( self.fullscreen_btn ) self.add_subcomponent( self.access_btn ) self.add_subcomponent( self.close_btn ) self.sound_slider.set_value( SoundManager.get_sound_volume() ) self.music_slider.set_value( SoundManager.get_music_volume() ) self.update_neighbors()
def draw(self, frame): MultiDlg.draw(self, frame) center = Vec2D(frame.surface.get_width() / 2, frame.surface.get_height() / 2) y = center.y - 180 self.large_font.draw(_("All Games Total"), frame.surface, (center.x, y), gfx.Font.CENTER) y += 32 self.font.draw(_("Ranking"), frame.surface, (center.x - 150, y)) ranking = self.game_data.get_total_ranking() place = 1 y -= 5 amount = 3 for goldcars in ranking: y += 32 self.font.draw("%d." % place, frame.surface, (center.x - 170, y), gfx.Font.RIGHT) goldcar_x = center.x - 140 for goldcar in goldcars: sprite = copy.copy( resman.get("game.car%d_sprite" % (goldcar.nr + 1))) sprite.nr = 20 * amount sprite.draw(frame.surface, Vec2D(goldcar_x, y + 26)) goldcar_x += 40 place += 1 amount = max([0, amount - 1]) self.font.draw("%d" % goldcars[0].score, frame.surface, (center.x + 100, y), gfx.Font.RIGHT)
def __init__( self, game_data ): Dialog.__init__( self, Rectangle(140, 80, 800-200, 600-200 ) ) self.background_image = resman.get("gui.paperdialog_surf") self._is_done = False self.game_data = game_data self.config = Configuration.get_instance() btnFont = Font( "data/edmunds.ttf", color=(0,0,0), size=32, use_antialias = True ) # Game speed, Scroll speed, Single Button mode self.speed0_lbl = Label( Vec2D(200, 140), _("Game"), btnFont ) self.speed1_lbl = Label( Vec2D(200, 170), _("Speed"), btnFont ) star = ImageButton( copy.copy(resman.get("gui.sheriffstar_sprite") ) ) self.speed_slider = ImageSlider( Vec2D( 320, 170 ), copy.copy(resman.get("gui.slider_sprite")), star ) self.oneswitch_btn = ImageButton( copy.copy(resman.get("game.button02_sprite")), Vec2D(300,240) ) self.update_oneswitch_label() self.scan0_lbl = Label( Vec2D(200, 310), _("Scan"), btnFont ) self.scan1_lbl = Label( Vec2D(200, 340), _("Speed"), btnFont ) star = ImageButton( copy.copy(resman.get("gui.sheriffstar_sprite") ) ) self.scan_slider = ImageSlider( Vec2D( 320, 340 ), copy.copy(resman.get("gui.slider_sprite")), star ) self.close_btn = ImageButton( copy.copy(resman.get("game.button02_sprite")), Vec2D(300,400) ) self.close_btn.set_label( _("Close"), btnFont ) self.add_subcomponent( self.speed0_lbl ) self.add_subcomponent( self.speed1_lbl ) self.add_subcomponent( self.speed_slider ) self.add_subcomponent( self.oneswitch_btn ) self.add_subcomponent( self.scan0_lbl ) self.add_subcomponent( self.scan1_lbl ) self.add_subcomponent( self.scan_slider ) self.add_subcomponent( self.close_btn ) self.speed_slider.set_value( self.config.game_speed ) self.scan_slider.set_value( 1.0 - ((self.config.scan_speed - 20) / float(40)) ) self.update_neighbors()
def __init__( self, game_data, player_cnt ): Component.__init__( self ) self.game_data = game_data self.game_data.goldcars = [] self.player_cnt = player_cnt self.current_player = 1 btnFont = Font( "data/edmunds.ttf", color=(0,0,0), size=32, use_antialias = True ) self.textLabel = Label( Vec2D(250, 300), _("Player 1, press button!"), btnFont ) self.car_sprite = resman.get("game.car1_sprite") self.carLabel = Label( Vec2D(400, 240), image=self.car_sprite ) self.anim_timer = LoopAnimationTimer( 15, 40, 12 ) self.add_subcomponent( self.textLabel ) self.add_subcomponent( self.carLabel ) self.forbidden_buttons = [input.Button(self.game_data.userinput.key, K_ESCAPE)] for joy in self.game_data.userinput.joys: self.forbidden_buttons.append(input.Button(joy, Joystick.BTN_BACK))
def __init__( self, game_data ): super(type(self), self).__init__() self.game_data = game_data self._is_done = False self.should_quit = False btnFont = Font( "data/edmunds.ttf", color=(0,0,0), size=30, use_antialias = True ) BUTTON_X = 550 BUTTON_Y = 180 H = 65 self.adventure_btn = ImageButton( copy.copy(resman.get("game.button01_sprite")), Vec2D(BUTTON_X, BUTTON_Y) ) self.adventure_btn.set_label(_("Adventure"), btnFont ) self.quick_play = ImageButton( copy.copy(resman.get("game.button01_sprite")), Vec2D(BUTTON_X, BUTTON_Y + H) ) self.quick_play.set_label( _("Quick play"), btnFont ) self.multiplayer_btn = ImageButton( copy.copy(resman.get("game.button01_sprite")), Vec2D(BUTTON_X, BUTTON_Y + 2*H) ) self.multiplayer_btn.set_label( _("Multiplayer"), btnFont ) self.options_btn = ImageButton( copy.copy(resman.get("game.button01_sprite")), Vec2D(BUTTON_X, BUTTON_Y + 3*H) ) self.options_btn.set_label( _("Options"), btnFont ) self.quit_btn = ImageButton( copy.copy(resman.get("game.button01_sprite")), Vec2D(BUTTON_X, BUTTON_Y + 4*H) ) self.quit_btn.set_label( _("Quit"), btnFont ) if Configuration.get_instance().unlocked_level == 0: self.quick_play.is_enabled = False self.multiplayer_btn.is_enabled = False self.add_subcomponent( self.adventure_btn ) self.add_subcomponent( self.quick_play ) self.add_subcomponent( self.multiplayer_btn ) self.add_subcomponent( self.options_btn ) self.add_subcomponent( self.quit_btn ) self.update_neighbors() self.dialog = None self.background = resman.get("gui.logo_surf") self.crate_hud = CrateHud( game_data ) self.car_animation = CarAnimation()
def init_pickup_surf( self ): self.pickup_surf = None self.pickup_y = 30 if len(self.scenario.pickups) > 0: pickup = self.scenario.pickups[0] if pickup is pickups.Dynamite: self.pickup_surf = resman.get("game.dynamite_sprite").clone() elif pickup is Torch: self.pickup_surf = resman.get("game.torch_sprite").clone() self.pickup_y = 10 elif pickup is Key: self.pickup_surf = resman.get("game.key_sprite").clone() self.pickup_y = 10 elif pickup is Oiler: self.pickup_surf = resman.get("game.oiler_sprite").clone() elif pickup is Balloon: self.pickup_surf = resman.get("game.balloon_sprite").clone() self.pickup_y = 15 elif pickup is Ghost: self.pickup_surf = resman.get("game.ghost_sprite").clone() self.pickup_y = 0
def __init__(self, model): TileView.__init__(self, model) self.sprite = copy.copy(resman.get("game.railgate_sprite"))
def __init__(self, model): PickupView.__init__(self) self.model = model self.sprite = resman.get("game.oiler_sprite").clone()
def clock(): resman.get("game.clock_sound").play()
def __init__(self, model): PickupView.__init__(self) self.model = model self.sprite = resman.get("game.key_sprite") self.animTimer = LoopAnimationTimer(25, 0, 19)
def __init__(self, model): PickupView.__init__(self) self.model = model self.sprite = resman.get("game.flag%d_sprite" % (model.goldcar.nr + 1)) self.animTimer = LoopAnimationTimer(20, 0, 8)
def __init__(self, model): PickupView.__init__(self) self.model = model self.sprite = resman.get("game.balloon_sprite")
def flag_pickup(score, carpos): resman.get("game.collect_sound").play() Event.instance.points.append(Point(score, carpos.get_screen_position()))
def carhit(): resman.get("game.carhit_sound").play()
def __init__(self, model): PickupView.__init__(self) self.model = model self.sprite = resman.get("game.mirror_sprite").clone() self.animTimer = LoopAnimationTimer(25, 0, 9)
def clock_ring(): resman.get("game.clockring_sound").play()