Esempio n. 1
0
    def __init__(self, m):
        self.model = m

        self.units = [unit.Unit(self.model, x, y) for x, y in self.model.conf.units]

        self.all_effects = pygame.sprite.Group()
        self.individual_effects = defaultdict(pygame.sprite.Group)
        self.all_walkers = pygame.sprite.Group()

        self.renderer = render.Renderer()
        self.renderer.draw(self.model)

        self.clock = pygame.time.Clock()

        # Win conditions
        self.win_duration_sec    = self.model.conf.game["duration"]
        self.win_duration_frames = self.model.conf.game["duration"] * FRAMES_PER_SECOND
        self.win_living_min_threshold  = self.model.conf.game["living_min_threshold"]

        self.font = bont.Tiny()
        self.news_font = data.load_font(*NEWS_FONT)
        self.over_font = data.load_font(*OVER_FONT)
        self.selection = None
        self.last_selection = None
        self.need_destination = False
        self.pending_cmd = None

        self.buttons = buttons.ButtonRegistry()

        self.buttons.add_sprite_button("Cleanse", self.send_reap, 150, 160)
        self.buttons.add_sprite_button("Burn", self.send_burn, 150, 180)
        self.buttons.add_sprite_button("Block", self.send_block, 205, 160)
        self.buttons.add_sprite_button("Cancel", self.cancel_selection, 205, 180)

        self.advisor_face = data.load_image("faces/6p.png")

        self.frame = 0
        self.newsflash = None
        # don't fire a newsflash right away
        self.next_newsflash = 5 * FRAMES_PER_SECOND

        self.hover_info = hover_info.HoverInfo()

        self.over = None
        self.paused = False
        self.final_click = False

        self.voice_chan = None
        self.select_voice_iter = itertools.cycle(self.select_voices)

        music.enqueue("minor1")
Esempio n. 2
0
    def __init__(self, game, name, index, config=None):
        super(HowtoScene, self).__init__(game, name, index, config)

        self.bg_text = data.load_image('howtoplay.png')
        self.bg_text = pygame.transform.scale(self.bg_text, (534, 400))
        self.bg_textrect = self.bg_text.get_rect()

        fontText = data.load_font(data.FONT_MAIN, 20)
        fontText.set_bold(True)

        texts = [{
            'text': '1) The boss generates 1 to 9 sounds',
            'top': 30,
            'left': 50
        }, {
            'text': '2) You must copy the generated sequence',
            'top': 250,
            'left': 20
        }]

        for phrase in texts:
            text = fontText.render(phrase['text'], True, (255, 255, 255))
            textrect = text.get_rect()
            textrect.top = phrase['top']
            textrect.left = phrase['left']
            self.bg_text.blit(text, textrect)

        self.text = data.render_text(data.FONT_MAIN, 37, 'Push the button !',
                                     (255, 255, 255))
        self.textrect = self.text.get_rect()

        #        bg_text.blit(self.text, self.textrect)

        self.background = data.load_image('credits.png')
        self.music_bg = data.load_sound('credits.ogg')
Esempio n. 3
0
    def __init__(self, game, name, index, config=None):
        super(HowtoScene, self).__init__(game, name, index, config)

        self.bg_text = data.load_image('howtoplay.png')
        self.bg_text = pygame.transform.scale(self.bg_text, (534, 400))
        self.bg_textrect = self.bg_text.get_rect()
        
        fontText = data.load_font(data.FONT_MAIN, 20)
        fontText.set_bold(True)
        
        texts = [
            {'text':'1) The boss generates 1 to 9 sounds', 'top':30, 'left':50},
            {'text':'2) You must copy the generated sequence', 'top':250, 'left':20}
        ]
        
        for phrase in texts:
            text = fontText.render(phrase['text'], True, (255, 255, 255))
            textrect = text.get_rect()
            textrect.top = phrase['top']
            textrect.left = phrase['left']
            self.bg_text.blit(text, textrect)
        
        self.text = data.render_text(data.FONT_MAIN, 37, 'Push the button !', (255, 255, 255))
        self.textrect = self.text.get_rect()
        
#        bg_text.blit(self.text, self.textrect)

        self.background = data.load_image('credits.png')
        self.music_bg = data.load_sound('credits.ogg')
Esempio n. 4
0
    def __init__(self, size, menus):
        pygame.surface.Surface.__init__(self, size)

        self.menus = menus
        self.menusRect = []
        self.current = 0

        self.menu = None
        self.menurect = None

        self.font = data.load_font(data.FONT_TITLE, 45)
        self.set_colorkey((0, 0, 0)) # Transparent background
Esempio n. 5
0
def get_font(font_code, size):
    '''
	Devuelve la fuente asociado con el codigo de fuente y tamaño dado.
	'''
    __check_initialize()
    if __fonts.has_key((font_code, size)):
        print "Fuente " + font_code + " con tamaño " + str(size) + " ya cargada"
    else:
        print "Fuente " + font_code + " con tamaño " + str(size) +  " no estaba cargada aún, cargando..."
        __fonts[(font_code, size)] = data.load_font(__fonts_info[font_code], size)
        
    return __fonts[(font_code, size)]
Esempio n. 6
0
    def draw(self, screen):
        screen.blit(self.background, (0, 0))

        fontTitle = data.load_font(data.FONT_TITLE, 45)
        fontTitle.set_underline(True)
        title = fontTitle.render('How to play', True, (255, 255, 255))
        titlerect = title.get_rect()
        titlerect.centerx = screen.get_rect().centerx
        titlerect.top = 30
        screen.blit(title, titlerect)

        self.bg_textrect.top = 100
        self.bg_textrect.centerx = screen.get_rect().centerx
        screen.blit(self.bg_text, self.bg_textrect)
Esempio n. 7
0
 def draw(self, screen):
     screen.blit(self.background, (0, 0))
     
     fontTitle = data.load_font(data.FONT_TITLE, 45)
     fontTitle.set_underline(True)
     title = fontTitle.render('How to play', True, (255, 255, 255))
     titlerect = title.get_rect()
     titlerect.centerx = screen.get_rect().centerx
     titlerect.top = 30
     screen.blit(title, titlerect)
     
     self.bg_textrect.top = 100
     self.bg_textrect.centerx = screen.get_rect().centerx
     screen.blit(self.bg_text, self.bg_textrect)
Esempio n. 8
0
def get_font(font_code, size):
    '''
	@brief Función que devuelve la fuente asociado con el codigo de fuente y tamaño dado.
    
    @param font_code Código de la fuente.
    @param size Tamaño de la fuente.
    @return Referencia a la fuente cargada
	'''
    __check_initialize()
    if __fonts.has_key((font_code, size)):
        print "Fuente " + font_code + " con tamaño " + str(size) + " ya cargada"
    else:
        print "Fuente " + font_code + " con tamaño " + str(size) +  " no estaba cargada aún, cargando..."
        __fonts[(font_code, size)] = data.load_font(__fonts_info[font_code], size)
        
    return __fonts[(font_code, size)]
Esempio n. 9
0
def get_font(font_code, size):
    '''
	@brief Función que devuelve la fuente asociado con el codigo de fuente y 
    tamaño dado.
    
    @param font_code Código de la fuente.
    @param size Tamaño de la fuente.
    @return Referencia a la fuente cargada
	'''
    __check_initialize()
    if __fonts.has_key((font_code, size)):
        pass
    else:
        __fonts[(font_code, size)] = data.load_font(__fonts_info[font_code], 
                                                    size)
        
    return __fonts[(font_code, size)]
Esempio n. 10
0
def get_font(font_code, size):
    '''
	@brief Función que devuelve la fuente asociado con el codigo de fuente y 
    tamaño dado.
    
    @param font_code Código de la fuente.
    @param size Tamaño de la fuente.
    @return Referencia a la fuente cargada
	'''
    __check_initialize()
    if __fonts.has_key((font_code, size)):
        pass
    else:
        __fonts[(font_code, size)] = data.load_font(__fonts_info[font_code],
                                                    size)

    return __fonts[(font_code, size)]
Esempio n. 11
0
    def __init__(self, game, name, index, config=None):
        super(CreditsScene, self).__init__(game, name, index, config)

        self.text = data.render_text(data.FONT_TITLE, 37, 'Thanks for Playing',
                                     (255, 255, 255))
        self.textrect = self.text.get_rect()

        font = data.load_font(data.FONT_MAIN, 17)
        names = ('cyqui', 'gleuh', 'greg0ire', 'joksnet')

        self.designLabel = data.render_text(data.FONT_TITLE, 23, 'Design:',
                                            (255, 255, 127))
        self.designLabelRect = self.designLabel.get_rect()
        self.design = data.render_text(data.FONT_MAIN, 21, 'tocab',
                                       (255, 255, 255))
        self.designRect = self.design.get_rect()

        self.musicLabel = data.render_text(data.FONT_TITLE, 23, 'Music:',
                                           (255, 255, 127))
        self.musicLabelRect = self.musicLabel.get_rect()
        self.music = data.render_text(data.FONT_MAIN, 21, 'TOTOleHero',
                                      (255, 255, 255))
        self.musicRect = self.music.get_rect()

        self.namesLabel = data.render_text(data.FONT_TITLE, 23, 'Developers',
                                           (255, 255, 127))
        self.namesLabelRect = self.namesLabel.get_rect()

        self.names = []

        for name in names:
            rend = font.render(name, True, (255, 255, 255))
            rect = rend.get_rect()

            self.names.append((rend, rect))

        self.team = data.render_text(data.FONT_TITLE, 37, 'The Bouba Team',
                                     (60, 255, 60))
        self.teamRect = self.team.get_rect()

        self.background = data.load_image('credits.png')
        self.music_bg = data.load_sound('credits.ogg')
Esempio n. 12
0
    def run(self):
        while self.running:
            self.clock.tick(self.config['framerate'])
            if not self.nextLoopScene == None:
                self.doChange()
                self.nextLoopScene = None
                self.nextLoopSceneReset = False
            
            if not self.scene:
                self.end()

            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    self.end()
                elif event.type == pygame.KEYDOWN and event.key == pygame.K_F11:
                    if self.screenMode != 0:
                        self.screenMode = 0
                    else:
                        self.screenMode = pygame.FULLSCREEN
                    self.screen = pygame.display.set_mode(self.config['size'],self.screenMode)
                else:
                    self.scene.handleEvent(event)

            #self.screen.fill((0, 0, 0))

            self.scene.update()
            self.scene.draw(self.screen)

            if self.config['show_fps']:
                font = data.load_font(data.FONT_MAIN, 23)
                fps = '%.1f' % self.clock.get_fps()
                text = font.render(fps, False, (255, 0, 255))

                rect = text.get_rect()
                rect.right = self.screen.get_width() - 5
                rect.bottom = self.screen.get_height() - 5

                self.screen.blit(text, rect)

            pygame.display.flip()
Esempio n. 13
0
    def __init__(self, game, name, index, config=None):
        super(LevelScene, self).__init__(game, name, index, config)

        self.font = data.load_font(data.FONT_FIX, 23)

        self.count = config['count'] if 'count' in config else 9
        self.delta = config['delta'] if 'delta' in config else 1000

        self.points = config['points'] if 'points' in config else 500
        self.volume = config['volume'] if 'volume' in config else 0.3
        self.pointsMulti = config['pointsMulti'] if 'pointsMulti' in config else 1
        self.pointsText = None

        self.sequence = button.SequenceButtonGroup((20, 20), (210, 100), 15, 5, self.count, self.delta)
        self.buttons = button.PlayableButtonGroup((50, 150), (35, 300), 20, 15, self.count, 750)

        self.seqindex = 0
        self.sequencing = False

        self.play = []
        self.playing = False

        self.background = data.load_image('background.png')
        self.ray = data.load_image('ray.png')
        self.piano = data.load_image('piano.png')

        self.music_bg = data.load_sound('background.ogg', self.name)
        self.music_bg.set_volume(self.volume)
        self.music_pre_bg = data.load_sound('pre-background.ogg', self.name)
        self.music_pre_bg.set_volume(0.3)

        self.sequence.associateTheme(self.name) 
        self.buttons.associateTheme(self.name)

        self.pre_bg_channel = None
        self.bg_channel = None

        # step counter management
        self.stepElapsingInTime = 1
        self.stepElapsedTimeCounter = 0
        self.counterStepPerClick = config['timetoclick'] if 'timetoclick' in config else 200
        self.currentCounterStep = self.counterStepPerClick

        # counting only when button animation is over
        self.stepCountElapsingTime = False
        self.stepCounterText = None
        self.rectWidth = 0

        boss = data.load_image('boss.png', self.name)
        boss.set_colorkey((255, 0, 255))
        
        miniboss = data.load_image('boss_mini.png', self.name)
        miniboss.set_colorkey((255, 0, 255))    
            
        self.animMiniBossImage = miniboss # pygame.transform.scale(boss, (170, 170))
        self.animMiniBossRect = self.animMiniBossImage.get_rect()
        self.animMiniBossRect.left = 302
        self.animMiniBossRect.bottom = 243
        
        self.animBossAction = 'scale'
        self.animBossActionCount = 0
        self.animBossImage = boss # pygame.transform.scale(boss, (170, 170))
        self.animBossRect = self.animBossImage.get_rect()
        self.animBossRect.left = 350
        self.animBossRect.bottom = 280
        self.animBossTime = 0
        self.animBossShowRaw = False

        self.counterRect = [266,250,110,8]
        self.counterRectDecSizePerStep = 110.0/self.counterStepPerClick

        self.incrRedColorUnit = 255.0/self.counterStepPerClick
        self.decrBlueColorUnit = 255.0/self.counterStepPerClick

        self.bottomPanel = pygame.Surface((640,240))
        self.bottomPanel.fill((100, 100, 100))
        self.bottomPanel.set_alpha(200)

        self.bottomText     = data.render_text(data.FONT_MAIN, 30, self.name.replace('-', ' ') + " starting in...", (255, 0, 0))
        self.bottomTextRect = self.bottomText.get_rect()
        self.bottomTextRect.center = (320, 360)
Esempio n. 14
0
 def __init__(self, size=32):
     self.font = data.load_font('airstrip.ttf', size)
Esempio n. 15
0
    def __init__(self):
        self.buttons = []

        self.font = data.load_font(*UI_FONT)

        self.pending_button = None
Esempio n. 16
0
    def __init__(self, game, name, index, config=None):
        super(LevelScene, self).__init__(game, name, index, config)

        self.font = data.load_font(data.FONT_FIX, 23)

        self.count = config['count'] if 'count' in config else 9
        self.delta = config['delta'] if 'delta' in config else 1000

        self.points = config['points'] if 'points' in config else 500
        self.volume = config['volume'] if 'volume' in config else 0.3
        self.pointsMulti = config[
            'pointsMulti'] if 'pointsMulti' in config else 1
        self.pointsText = None

        self.sequence = button.SequenceButtonGroup((20, 20), (210, 100), 15, 5,
                                                   self.count, self.delta)
        self.buttons = button.PlayableButtonGroup((50, 150), (35, 300), 20, 15,
                                                  self.count, 750)

        self.seqindex = 0
        self.sequencing = False

        self.play = []
        self.playing = False

        self.background = data.load_image('background.png')
        self.ray = data.load_image('ray.png')
        self.piano = data.load_image('piano.png')

        self.music_bg = data.load_sound('background.ogg', self.name)
        self.music_bg.set_volume(self.volume)
        self.music_pre_bg = data.load_sound('pre-background.ogg', self.name)
        self.music_pre_bg.set_volume(0.3)

        self.sequence.associateTheme(self.name)
        self.buttons.associateTheme(self.name)

        self.pre_bg_channel = None
        self.bg_channel = None

        # step counter management
        self.stepElapsingInTime = 1
        self.stepElapsedTimeCounter = 0
        self.counterStepPerClick = config[
            'timetoclick'] if 'timetoclick' in config else 200
        self.currentCounterStep = self.counterStepPerClick

        # counting only when button animation is over
        self.stepCountElapsingTime = False
        self.stepCounterText = None
        self.rectWidth = 0

        boss = data.load_image('boss.png', self.name)
        boss.set_colorkey((255, 0, 255))

        miniboss = data.load_image('boss_mini.png', self.name)
        miniboss.set_colorkey((255, 0, 255))

        self.animMiniBossImage = miniboss  # pygame.transform.scale(boss, (170, 170))
        self.animMiniBossRect = self.animMiniBossImage.get_rect()
        self.animMiniBossRect.left = 302
        self.animMiniBossRect.bottom = 243

        self.animBossAction = 'scale'
        self.animBossActionCount = 0
        self.animBossImage = boss  # pygame.transform.scale(boss, (170, 170))
        self.animBossRect = self.animBossImage.get_rect()
        self.animBossRect.left = 350
        self.animBossRect.bottom = 280
        self.animBossTime = 0
        self.animBossShowRaw = False

        self.counterRect = [266, 250, 110, 8]
        self.counterRectDecSizePerStep = 110.0 / self.counterStepPerClick

        self.incrRedColorUnit = 255.0 / self.counterStepPerClick
        self.decrBlueColorUnit = 255.0 / self.counterStepPerClick

        self.bottomPanel = pygame.Surface((640, 240))
        self.bottomPanel.fill((100, 100, 100))
        self.bottomPanel.set_alpha(200)

        self.bottomText = data.render_text(
            data.FONT_MAIN, 30,
            self.name.replace('-', ' ') + " starting in...", (255, 0, 0))
        self.bottomTextRect = self.bottomText.get_rect()
        self.bottomTextRect.center = (320, 360)
Esempio n. 17
0
 def __init__(self, size=32):
     self.font = data.load_font('airstrip.ttf', size)