diff --git a/samples/dungeon_test.txt b/samples/dungeon_test.txt new file mode 100644 index 0000000..1b12bcf --- /dev/null +++ b/samples/dungeon_test.txt @@ -0,0 +1,19 @@ + + .... + . . + .... + . + ..... ..... + .,,,........... + .,_,. ..... . + .,,,. ..... . + ..... ..... . ... + . ....... + . ... + . ... + ..... + .___. + .___. + .___. + ..... + diff --git a/src/tilemapper/cli.py b/src/tilemapper/cli.py index 086c572..f656b69 100644 --- a/src/tilemapper/cli.py +++ b/src/tilemapper/cli.py @@ -81,7 +81,7 @@ def render( sys.exit(1) image = bmap.render() - image = image.resize((int(0.5 * image.size[0]), int(0.5 * image.size[1]))) + # image = image.resize((int(0.5 * image.size[0]), int(0.5 * image.size[1]))) image.save(outfile) print(f"Wrote {outfile.stat().st_size} bytes to {outfile}") diff --git a/src/tilemapper/tileset.py b/src/tilemapper/tileset.py index a33dd28..bbcdada 100644 --- a/src/tilemapper/tileset.py +++ b/src/tilemapper/tileset.py @@ -186,33 +186,33 @@ class ImageTile(Tile): pasted into the existing image as squares SIZE/4 pixels on a side, at locations suitable for creating a 32-pixel border around the image. """ - rendered = self.image.copy() - border_size = (size or rendered.width) / 4 + if not size: + size = self.image.width + rendered = self.image.copy().resize((size, size)) + border_size = int(size/4) if nw: - rendered.paste(nw.image, (0, 0)) + rendered.paste(nw.image, (0, 0), nw.image) if n: - rendered.paste(n.image, (border_size, 0)) - rendered.paste(n.image, (border_size * 2, 0)) + rendered.paste(n.image, (border_size, 0), n.image) + rendered.paste(n.image, (border_size * 2, 0), n.image) if ne: - rendered.paste(ne.image, (border_size * 3, 0)) + rendered.paste(ne.image, (border_size * 3, 0), ne.image) if e: - rendered.paste(e.image, (border_size * 3, border_size)) - rendered.paste(e.image, (border_size * 3, border_size * 2)) + rendered.paste(e.image, (border_size * 3, border_size), e.image) + rendered.paste(e.image, (border_size * 3, border_size * 2), e.image) if se: - rendered.paste(se.image, (border_size * 3, border_size * 3)) + rendered.paste(se.image, (border_size * 3, border_size * 3), se.image) if s: - rendered.paste(s.image, (border_size, border_size * 3)) - rendered.paste(s.image, (border_size * 2, border_size * 3)) + rendered.paste(s.image, (border_size, border_size * 3), s.image) + rendered.paste(s.image, (border_size * 2, border_size * 3), s.image) if sw: - rendered.paste(sw.image, (0, border_size * 3)) + rendered.paste(sw.image, (0, border_size * 3), sw.image) if w: - rendered.paste(w.image, (0, border_size)) - rendered.paste(w.image, (0, border_size * 2)) + rendered.paste(w.image, (0, border_size), w.image) + rendered.paste(w.image, (0, border_size * 2), w.image) - if size == rendered.width and size == rendered.height: - return rendered - return rendered.resize((size, size)) + return rendered @dataclass @@ -326,7 +326,7 @@ class ImageTileSet(TileSet): return self._cache[name] buffer = None if not paths: - buffer = Image.new("RGB", (self.tile_size, self.tile_size)) + buffer = Image.new("RGBA", (self.tile_size, self.tile_size)) ImageDraw.Draw(buffer).text((3, 3), name, (255, 255, 255)) self._cache[name] = ImageTile(char=char, name=name, paths=paths, buffer=buffer) return self._cache[name] diff --git a/src/tilesets/dungeon/empty_1.png b/src/tilesets/dungeon/empty_1.png new file mode 100644 index 0000000..14b13e0 Binary files /dev/null and b/src/tilesets/dungeon/empty_1.png differ diff --git a/src/tilesets/dungeon/grass_1.png b/src/tilesets/dungeon/grass_1.png new file mode 100644 index 0000000..900cc99 Binary files /dev/null and b/src/tilesets/dungeon/grass_1.png differ diff --git a/src/tilesets/dungeon/grass_2.png b/src/tilesets/dungeon/grass_2.png new file mode 100644 index 0000000..a93bd8b Binary files /dev/null and b/src/tilesets/dungeon/grass_2.png differ diff --git a/src/tilesets/dungeon/grass_3.png b/src/tilesets/dungeon/grass_3.png new file mode 100644 index 0000000..7684f23 Binary files /dev/null and b/src/tilesets/dungeon/grass_3.png differ diff --git a/src/tilesets/dungeon/stone_1.png b/src/tilesets/dungeon/stone_1.png new file mode 100644 index 0000000..956f488 Binary files /dev/null and b/src/tilesets/dungeon/stone_1.png differ diff --git a/src/tilesets/dungeon/stone_2.png b/src/tilesets/dungeon/stone_2.png new file mode 100644 index 0000000..de434a1 Binary files /dev/null and b/src/tilesets/dungeon/stone_2.png differ diff --git a/src/tilesets/dungeon/stone_3.png b/src/tilesets/dungeon/stone_3.png new file mode 100644 index 0000000..b46ef25 Binary files /dev/null and b/src/tilesets/dungeon/stone_3.png differ diff --git a/src/tilesets/dungeon/stone_4.png b/src/tilesets/dungeon/stone_4.png new file mode 100644 index 0000000..afc9452 Binary files /dev/null and b/src/tilesets/dungeon/stone_4.png differ diff --git a/src/tilesets/dungeon/stone_5.png b/src/tilesets/dungeon/stone_5.png new file mode 100644 index 0000000..295f537 Binary files /dev/null and b/src/tilesets/dungeon/stone_5.png differ diff --git a/src/tilesets/dungeon/tileset.toml b/src/tilesets/dungeon/tileset.toml new file mode 100644 index 0000000..9f2d54b --- /dev/null +++ b/src/tilesets/dungeon/tileset.toml @@ -0,0 +1,10 @@ +[tileset] +name = "Dungeon Set" +desc = "Sample dungeon tiles" +size = 128 + +[legend] +" " = "empty" +"." = "stone" +"_" = "water" +"," = "grass" diff --git a/src/tilesets/dungeon/water_1.png b/src/tilesets/dungeon/water_1.png new file mode 100644 index 0000000..93a223a Binary files /dev/null and b/src/tilesets/dungeon/water_1.png differ