예제 #1
0
 def draw(self, screen):
     Activity.draw(self, screen)
     screen.blit( self.img, (0,0))
예제 #2
0
파일: menu.py 프로젝트: jcstrandburg/blob
 def draw( self, screen):
     Activity.draw( self, screen)
     for x in self._widgets:
         x.draw( screen)
예제 #3
0
    def draw(self, screen):
        Activity.draw(self, screen)
       
        if not self.complex_drawing:
            pymunk.pygame_util.draw( screen, self.space)
            for ff in self.forcefields:
                pygame.draw.line( screen, (255,255,255), pymunk.pygame_util.to_pygame( ff.center, screen), pymunk.pygame_util.to_pygame( ff.center+ff.fieldforce, screen))
                
            #draw gravity balls
            wavesize = 25
            begin = int(0.5*self.time*wavesize)%wavesize
            for g in self.gravballs:
                if not g.shutdown:
                    pos = pymunk.pygame_util.to_pygame( g.position, screen)
                    if g.strength < 0:
                        for r in xrange(begin, g.wellsize, wavesize):
                            if r > 0:
                                pygame.draw.circle( screen, (200,60,0), pos, r, 1)
                    else:
                        for r in xrange(wavesize-begin, g.wellsize, wavesize):
                            if r > 0:
                                pygame.draw.circle( screen, (100,0,120), pos, r, 1)                

        else:
            if self.optimize_drawing:
                screen.blit( self.static_img, (0,0))
            else:
                self.draw_statics(screen)            
        
            #draw gravity balls
            wavesize = 25
            begin = int(0.5*self.time*wavesize)%wavesize
            for g in self.gravballs:
                if not g.shutdown:
                    pos = pymunk.pygame_util.to_pygame( g.position, screen)
                    if g.strength < 0:
                        for r in xrange(begin, g.wellsize, wavesize):
                            if r > 0:
                                pygame.draw.circle( screen, (200,60,0), pos, r, 1)
                    else:
                        for r in xrange(wavesize-begin, g.wellsize, wavesize):
                            if r > 0:
                                pygame.draw.circle( screen, (200,0,240), pos, r, 1)                
        
            #draw forcefields
            img = resources.get("fieldbg")
            for f in self.forcefields:
                imgw = img.get_width()
                imgh = img.get_height()
                offset = (int(f.imgoffset[0])%imgw, int(f.imgoffset[1])%imgh)
                topleft = pymunk.pygame_util.to_pygame(f.topleft, screen)
                sub = screen.subsurface( (topleft[0], topleft[1], f.dimensions[0], f.dimensions[1]))
                for x in xrange( -imgw, int(f.dimensions[0])+imgw, imgw):
                    for y in xrange( -imgh, int(f.dimensions[1])+imgh, imgh):
                        sub.blit( img, (x+offset[0], y-offset[1])) 

            #draw spinners
            conversion = 360/(2*math.pi)
            gear = resources.get("spingear")
            for s in self.spinners:
                pos = Vec2d( pymunk.pygame_util.to_pygame( s.position, screen))
                angle = s.angle
                angle = int(angle*conversion)
                material = s.material
                scale = s.length/60.0
                self.spinner_renderers[s.material].draw( screen, angle, scale, pos)
                if s.mode == "drag":
                    img = pygame.transform.rotate( gear, angle)
                    offset = Vec2d(img.get_width()/2, img.get_height()/2)
                    screen.blit( img, pos-offset)
            
            #draw particles
            for p in self.particles:
                pos = pymunk.pygame_util.to_pygame( p.position, screen)
                pygame.draw.circle(screen, p.color, pos, 2)
            
            #draw victory locations
            baseimg = self.victory_anim.get_current_frame()
            for v in self.victories:
                pos = pymunk.pygame_util.to_pygame( v.topleft, screen)
                img = pygame.transform.scale( baseimg, v.dimensions.int_tuple)
                screen.blit( img, pos)
                
            #draw enemies
            baseimg = self.enemy_anim.get_current_frame()
            flipped = pygame.transform.flip( baseimg, True, False)
            for e in self.enemies:
                pos = pymunk.pygame_util.to_pygame( e.position, screen)
                if e.velocity[0] < 0:
                    screen.blit( baseimg, (pos[0]-baseimg.get_width()/2, pos[1]-baseimg.get_height()/2))
                else:
                    screen.blit( flipped, (pos[0]-baseimg.get_width()/2, pos[1]-baseimg.get_height()/2))

            #draw the player
            if not self.player.dead:
                if self.charging:
                    baseimg = resources.get("player_charging")
                else:
                    if self.player_impact > 0:
                        baseimg = resources.get("player_impact")
                    else:
                        baseimg = resources.get("player")
                    
                if self.player.facing == "left":
                    img = pygame.transform.flip( baseimg, True, False)
                else:
                    img = baseimg
                    
                pos = pymunk.pygame_util.to_pygame( self.player.position, screen)
                offset = Vec2d( img.get_width()/2, img.get_height()/2)
                screen.blit( img, pos-offset)
        
        '''draw the launch indicator if the player is charging up'''
        mousepos = Vec2d( pygame.mouse.get_pos())#mouse position in screen coordinates
        playerpos = pymunk.pygame_util.to_pygame( self.player.position, screen)#player pos in screen coords
        if self.charging:
            ratio = self.charge/MAXCHARGE
            mousevect = (mousepos-playerpos).normalized()
            finalpos = playerpos + mousevect*40
            
            r = int(ratio*LAUNCH_IND_LEN)
            for x in range(r,10,-3):
                pos = playerpos+mousevect*x
                pygame.draw.circle( screen, (255,255-x*2,0), pos.int_tuple, x/8)
                
        if self.status_img is not None:
            screen.blit( self.status_img, (0,int(self.status_offset)))