Пример #1
0
    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 )
Пример #2
0
    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))
Пример #3
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 )
Пример #4
0
    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
Пример #5
0
    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 )
Пример #6
0
    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 )
Пример #7
0
    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
Пример #8
0
    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))
Пример #9
0
 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)
Пример #10
0
    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)
Пример #11
0
    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
Пример #12
0
    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
Пример #13
0
 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 )
Пример #14
0
    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()
Пример #15
0
    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 )
Пример #16
0
    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
Пример #17
0
    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()
Пример #18
0
    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()
Пример #19
0
    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
Пример #20
0
    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()
Пример #21
0
    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()
Пример #22
0
    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 )
Пример #23
0
    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)
Пример #24
0
    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)
Пример #25
0
    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)
Пример #26
0
    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
Пример #27
0
        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()
Пример #28
0
    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")
Пример #29
0
    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")
Пример #30
0
    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)
Пример #31
0
    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 )
Пример #32
0
    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)
Пример #33
0
    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
Пример #34
0
    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
Пример #35
0
    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) )
Пример #36
0
    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
Пример #37
0
    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))
Пример #38
0
    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
Пример #39
0
    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
Пример #40
0
    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)
Пример #41
0
    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)]
Пример #42
0
    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()
Пример #43
0
    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)
Пример #44
0
    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()
Пример #45
0
    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))
Пример #46
0
    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()
Пример #47
0
 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
Пример #48
0
    def __init__(self, model):
        TileView.__init__(self, model)

        self.sprite = copy.copy(resman.get("game.railgate_sprite"))
Пример #49
0
    def __init__(self, model):
        PickupView.__init__(self)
        self.model = model

        self.sprite = resman.get("game.oiler_sprite").clone()
Пример #50
0
 def clock():
     resman.get("game.clock_sound").play()
Пример #51
0
    def __init__(self, model):
        PickupView.__init__(self)
        self.model = model

        self.sprite = resman.get("game.key_sprite")
        self.animTimer = LoopAnimationTimer(25, 0, 19)
Пример #52
0
    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)
Пример #53
0
    def __init__(self, model):
        PickupView.__init__(self)
        self.model = model

        self.sprite = resman.get("game.balloon_sprite")
Пример #54
0
    def flag_pickup(score, carpos):
        resman.get("game.collect_sound").play()

        Event.instance.points.append(Point(score,
                                           carpos.get_screen_position()))
Пример #55
0
 def carhit():
     resman.get("game.carhit_sound").play()
Пример #56
0
    def __init__(self, model):
        PickupView.__init__(self)
        self.model = model

        self.sprite = resman.get("game.mirror_sprite").clone()
        self.animTimer = LoopAnimationTimer(25, 0, 9)
Пример #57
0
 def clock_ring():
     resman.get("game.clockring_sound").play()