def _render_map(self, surface, rect, surfaces): """ Render the map and optional surfaces to destination surface :param surface: pygame surface to draw to :param rect: area to draw to :param surfaces: optional sequence of surfaces to interlace into tiles """ if self._animation_queue: self._process_animation_queue() if rect.width > self.map_rect.width: x = (rect.width - self.map_rect.width) // 4 print(x) self._x_offset += x if rect.height > self.map_rect.height: pass # need to set clipping otherwise the map will draw outside its area with surface_clipping_context(surface, rect): # draw the entire map to the surface taking in account the scrolling offset surface.blit(self._buffer, (-self._x_offset - rect.left, -self._y_offset - rect.top)) if surfaces: self._draw_surfaces(surface, rect, surfaces)
def _render_map(self, surface, rect, surfaces): """ Render the map and optional surfaces to destination surface :param surface: pygame surface to draw to :param rect: area to draw to :param surfaces: optional sequence of surfaces to interlace between tiles """ if self._animation_queue: self._process_animation_queue() if not self.anchored_view: surface.fill(0) offset = -self._x_offset + rect.left, -self._y_offset + rect.top with surface_clipping_context(surface, rect): surface.blit(self._buffer, offset) if surfaces: surfaces_offset = -offset[0], -offset[1] self._draw_surfaces(surface, surfaces_offset, surfaces)
def _render_map(self, surface, rect, surfaces): """ Render the map and optional surfaces to destination surface :param surface: pygame surface to draw to :param rect: area to draw to :param surfaces: optional sequence of surfaces to interlace between tiles """ self._tile_queue = self.data.process_animation_queue(self._tile_view) self._tile_queue and self._flush_tile_queue(self._buffer) # TODO: could maybe optimize to remove just the edges, ideally by drawing lines # if not self.anchored_view: # surface.fill(self._clear_color, self._previous_blit) if not self._anchored_view: self._clear_surface(surface, self._previous_blit) offset = -self._x_offset + rect.left, -self._y_offset + rect.top with surface_clipping_context(surface, rect): self._previous_blit = surface.blit(self._buffer, offset) if surfaces: surfaces_offset = -offset[0], -offset[1] self._draw_surfaces(surface, surfaces_offset, surfaces)