X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Floaders%2Flevelloader.py;h=a8aaa376efba9be55b7af1a7f7c70fab8ef8df18;hb=80836416c2f1ff13a7824d26f2e6b805b2107950;hp=699b520c06884f3fd293212569aa8ca7dd99f0c4;hpb=3c18a0b415092a835678e04ed352b6cb7f0f7e08;p=koperkapel.git diff --git a/koperkapel/loaders/levelloader.py b/koperkapel/loaders/levelloader.py index 699b520..a8aaa37 100644 --- a/koperkapel/loaders/levelloader.py +++ b/koperkapel/loaders/levelloader.py @@ -10,26 +10,28 @@ from pygame.transform import rotate class Tile: IMG = None + TILESET = None @classmethod def image(cls): - if cls.IMG is None: + if cls.IMG is None or cls.TILESET is None: raise NotImplementedError() - - return images.load(cls.IMG) + return images.load(os.path.join(cls.TILESET, cls.IMG)) class RandomizedTile(Tile): IMGDIR = None - ROTATE = True + TILESET = None + ROTATE = None @classmethod def image(cls): - if cls.IMGDIR is None: + if cls.IMGDIR is None or cls.TILESET is None: raise NotImplementedError() - imgdir = os.path.join(os.path.dirname(__file__), '..', 'images', cls.IMGDIR) + imgdir = os.path.join(os.path.dirname(__file__), '..', 'images', + cls.TILESET, cls.IMGDIR) imgpath = os.path.splitext(random.choice(os.listdir(imgdir)))[0] - img = images.load(os.path.join(cls.IMGDIR, imgpath)) + img = images.load(os.path.join(cls.TILESET, cls.IMGDIR, imgpath)) if cls.ROTATE: img = rotate(img, 90 * random.randint(0, 3)) @@ -42,9 +44,17 @@ class Floor(RandomizedTile): class Wall(RandomizedTile): IMGDIR = "wall" +class Underground(RandomizedTile): + IMGDIR = "wall" + +class Tunnel(RandomizedTile): + IMGDIR = "floor" + TILES = { "cwall": Wall, # rename this everywhere "floor": Floor, + "tunnel": Tunnel, + "underground": Underground, } class LevelLoader(ResourceLoader): @@ -66,6 +76,8 @@ class LevelLoader(ResourceLoader): for row, row_data in enumerate(self._tiles): if len(row_data) != self._width: raise RuntimeError("Incorrect len for row %d" % row) + for tile in TILES.values(): + tile.TILESET = self._tileset self._load_tile_images() return level_data