def load_default_tiles(self, columns=40, rows=30, sheet=0, kinds=(0, 1, 2)): self.sheet = sheet set_tile_stats(self) self.set_areas() self.lw = columns * self.tile_width self.lh = rows * self.tile_height self.tiles = Group() self.walls = Group() y = 0 t = 0 for r in xrange(rows): x = 0 for c in xrange(columns): tile = Tile(x, y, sheet, kinds[t % len(kinds)], self) self.tiles.add(tile) if tile.kind in self.wall_kinds: tile.flags |= FLAGS.WALL self.walls.add(tile) else: tile.flags |= FLAGS.FLOOR x += self.tile_width t += 1 y += self.tile_height
def load_tiles(self, filename): try: self.tiles = Group() self.walls = Group() level = open(filename, 'r') line = level.readline().strip() while line != '[tiles]': line = level.readline().strip() self.sheet = int(level.readline().strip()) set_tile_stats(self) self.set_areas() y = -self.tile_height line = level.readline().strip() while line and line != '[units]': x = 0 y += self.tile_height for k in line.split(' '): if not k.strip(): continue tile = Tile(x, y, self.sheet, int(k), self) self.tiles.add(tile) if tile.kind in self.wall_kinds: tile.flags |= FLAGS.WALL self.walls.add(tile) else: tile.flags |= FLAGS.FLOOR x += self.tile_width line = level.readline().strip() self.lw = x self.lh = y + self.tile_height level.close() except IOError: return self.load_default_tiles()
def __init__(self, x, y, sheet, kind, mgr): super(Tile, self).__init__(x, y, kind) self.mgr = mgr self.resourcemgr = mgr.resourcemgr self.sheet = sheet set_tile_stats(self) self.rect = Rect(x, y, self.tile_width, self.tile_height) self.area = self.mgr.areas[self.kind] self.flags = FLAGS.TILE