/
levelviewer.py
33 lines (28 loc) · 1.21 KB
/
levelviewer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import pygame
from level import *
from squaregridviewer import *
from vector import *
class LevelViewer(object):
def __init__(self, level):
self.level = level
self.tile_size = vector(32, 32)
self.tile_sheet = pygame.image.load('tiles.png')
self.grid_viewer = SquareGridViewer(self.level.grid,
self.tile_size)
def display(self, dst, corner, dims):
grid_viewer = self.grid_viewer
grid_viewer.display(dst)
row0, col0 = corner.tuple()
offset = vector(0, 0)
grid = self.level.grid
for row in range(dims[0]):
for col in range(dims[1]):
tile = grid.cells[row + row0][col + col0]
tile_bounds = (self.tile_size % tile).list()
tile_bounds += self.tile_size.list()
pos = offset + self.tile_size % vector(col, row)
dst.blit(self.tile_sheet, pos.list(), tile_bounds)
for crystal in self.level.items.cells[row][col]:
center = grid_viewer.get_center((row - row0, col - col0))
radius = 0.25 * grid_viewer.cell_w
crystal.display(dst, center, radius)