def _get_image(self, num, xscale=1, yscale=1, rotation=0, alpha=255, blend=None): num %= len(self._images) # Return the properly sized surface. if (xscale, yscale, rotation, alpha, blend) in self._images[num]: return self._images[num][(xscale, yscale, rotation, alpha, blend)] else: # Hasn't been scaled to this size yet if xscale != 0 and yscale != 0: img = self._set_transparency(self._baseimages[num]) xflip = xscale < 0 yflip = yscale < 0 img = pygame.transform.flip(img, xflip, yflip) img = sge._scale(img, self.width * abs(xscale), self.height * abs(yscale)) if rotation != 0: img = pygame.transform.rotate(img, rotation) if alpha < 255: if img.get_flags() & pygame.SRCALPHA: # Have to do this the more difficult way. img.fill((0, 0, 0, 255 - alpha), None, pygame.BLEND_RGBA_SUB) else: img.set_alpha(alpha, pygame.RLEACCEL) if blend is not None: img.fill(sge._get_pygame_color(blend), None, pygame.BLEND_RGB_MULT) else: img = pygame.Surface((1, 1)) img.set_colorkey((0, 0, 0), pygame.RLEACCEL) self._images[num][(xscale, yscale, rotation, alpha, blend)] = img return img
def _refresh(self): # Set the _images list based on the variables. sge.game._background_changed = True self._images = [] for image in self._baseimages: img = self._set_transparency(image) img = sge._scale(img, self.width, self.height) self._images.append({(1, 1, 0, 255, None): img})