def draw(self, screen): Activity.draw(self, screen) screen.blit( self.img, (0,0))
def draw( self, screen): Activity.draw( self, screen) for x in self._widgets: x.draw( screen)
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)))