Mercurial > nagslang
changeset 87:75d8ad4bf9b5
Hack in viewport
author | Neil Muller <drnlmuller@gmail.com> |
---|---|
date | Sun, 01 Sep 2013 23:18:47 +0200 |
parents | a5c839994d41 |
children | 62dc3f92d5c3 |
files | nagslang/screens/area.py |
diffstat | 1 files changed, 23 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/nagslang/screens/area.py Sun Sep 01 23:00:45 2013 +0200 +++ b/nagslang/screens/area.py Sun Sep 01 23:18:47 2013 +0200 @@ -66,13 +66,35 @@ self.protagonist.toggle_form() self.keys.handle_event(ev) + def _calc_viewport(self, level_surface, display_surface): + level_size = level_surface.get_size() + display_size = display_surface.get_size() + protagnist_pos = self.protagonist.physicser.render_position( + level_surface) + x_wide = display_size[0] // 2 + y_wide = display_size[1] // 2 + if protagnist_pos[0] < x_wide: + x = 0 + elif protagnist_pos[0] > level_size[0] - x_wide: + x = level_size[0] - display_size[0] + else: + x = protagnist_pos[0] - x_wide + if protagnist_pos[1] < y_wide: + y = 0 + elif protagnist_pos[1] > level_size[1] - y_wide: + y = level_size[1] - display_size[1] + else: + y = protagnist_pos[1] - y_wide + return pygame.rect.Rect(x, y, display_size[0], display_size[1]) + def render(self, surface): #surface.fill(pygame.color.Color(0, 0, 0)) background = self._level.get_background() mysurface = background.copy() self.toy_switch.render(mysurface) self.protagonist.render(mysurface) - surface.blit(mysurface, (0, 0)) + render_rect = self._calc_viewport(mysurface, surface) + surface.blit(mysurface, (0, 0), render_rect) def tick_protagonist(self): dx, dy = 0, 0