docstrings, type hints, bug fixes
19
samples/dungeon_test.txt
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
|
||||||
|
....
|
||||||
|
. .
|
||||||
|
....
|
||||||
|
.
|
||||||
|
..... .....
|
||||||
|
.,,,...........
|
||||||
|
.,_,. ..... .
|
||||||
|
.,,,. ..... .
|
||||||
|
..... ..... . ...
|
||||||
|
. .......
|
||||||
|
. ...
|
||||||
|
. ...
|
||||||
|
.....
|
||||||
|
.___.
|
||||||
|
.___.
|
||||||
|
.___.
|
||||||
|
.....
|
||||||
|
|
|
@ -81,7 +81,7 @@ def render(
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
image = bmap.render()
|
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)
|
image.save(outfile)
|
||||||
print(f"Wrote {outfile.stat().st_size} bytes to {outfile}")
|
print(f"Wrote {outfile.stat().st_size} bytes to {outfile}")
|
||||||
|
|
||||||
|
|
|
@ -186,33 +186,33 @@ class ImageTile(Tile):
|
||||||
pasted into the existing image as squares SIZE/4 pixels on a side, at
|
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.
|
locations suitable for creating a 32-pixel border around the image.
|
||||||
"""
|
"""
|
||||||
rendered = self.image.copy()
|
if not size:
|
||||||
border_size = (size or rendered.width) / 4
|
size = self.image.width
|
||||||
|
rendered = self.image.copy().resize((size, size))
|
||||||
|
border_size = int(size/4)
|
||||||
|
|
||||||
if nw:
|
if nw:
|
||||||
rendered.paste(nw.image, (0, 0))
|
rendered.paste(nw.image, (0, 0), nw.image)
|
||||||
if n:
|
if n:
|
||||||
rendered.paste(n.image, (border_size, 0))
|
rendered.paste(n.image, (border_size, 0), n.image)
|
||||||
rendered.paste(n.image, (border_size * 2, 0))
|
rendered.paste(n.image, (border_size * 2, 0), n.image)
|
||||||
if ne:
|
if ne:
|
||||||
rendered.paste(ne.image, (border_size * 3, 0))
|
rendered.paste(ne.image, (border_size * 3, 0), ne.image)
|
||||||
if e:
|
if e:
|
||||||
rendered.paste(e.image, (border_size * 3, border_size))
|
rendered.paste(e.image, (border_size * 3, border_size), e.image)
|
||||||
rendered.paste(e.image, (border_size * 3, border_size * 2))
|
rendered.paste(e.image, (border_size * 3, border_size * 2), e.image)
|
||||||
if se:
|
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:
|
if s:
|
||||||
rendered.paste(s.image, (border_size, border_size * 3))
|
rendered.paste(s.image, (border_size, border_size * 3), s.image)
|
||||||
rendered.paste(s.image, (border_size * 2, border_size * 3))
|
rendered.paste(s.image, (border_size * 2, border_size * 3), s.image)
|
||||||
if sw:
|
if sw:
|
||||||
rendered.paste(sw.image, (0, border_size * 3))
|
rendered.paste(sw.image, (0, border_size * 3), sw.image)
|
||||||
if w:
|
if w:
|
||||||
rendered.paste(w.image, (0, border_size))
|
rendered.paste(w.image, (0, border_size), w.image)
|
||||||
rendered.paste(w.image, (0, border_size * 2))
|
rendered.paste(w.image, (0, border_size * 2), w.image)
|
||||||
|
|
||||||
if size == rendered.width and size == rendered.height:
|
return rendered
|
||||||
return rendered
|
|
||||||
return rendered.resize((size, size))
|
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
@ -326,7 +326,7 @@ class ImageTileSet(TileSet):
|
||||||
return self._cache[name]
|
return self._cache[name]
|
||||||
buffer = None
|
buffer = None
|
||||||
if not paths:
|
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))
|
ImageDraw.Draw(buffer).text((3, 3), name, (255, 255, 255))
|
||||||
self._cache[name] = ImageTile(char=char, name=name, paths=paths, buffer=buffer)
|
self._cache[name] = ImageTile(char=char, name=name, paths=paths, buffer=buffer)
|
||||||
return self._cache[name]
|
return self._cache[name]
|
||||||
|
|
BIN
src/tilesets/dungeon/empty_1.png
Normal file
After Width: | Height: | Size: 170 KiB |
BIN
src/tilesets/dungeon/grass_1.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
src/tilesets/dungeon/grass_2.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
src/tilesets/dungeon/grass_3.png
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
src/tilesets/dungeon/stone_1.png
Normal file
After Width: | Height: | Size: 304 KiB |
BIN
src/tilesets/dungeon/stone_2.png
Normal file
After Width: | Height: | Size: 457 KiB |
BIN
src/tilesets/dungeon/stone_3.png
Normal file
After Width: | Height: | Size: 303 KiB |
BIN
src/tilesets/dungeon/stone_4.png
Normal file
After Width: | Height: | Size: 335 KiB |
BIN
src/tilesets/dungeon/stone_5.png
Normal file
After Width: | Height: | Size: 348 KiB |
10
src/tilesets/dungeon/tileset.toml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
[tileset]
|
||||||
|
name = "Dungeon Set"
|
||||||
|
desc = "Sample dungeon tiles"
|
||||||
|
size = 128
|
||||||
|
|
||||||
|
[legend]
|
||||||
|
" " = "empty"
|
||||||
|
"." = "stone"
|
||||||
|
"_" = "water"
|
||||||
|
"," = "grass"
|
BIN
src/tilesets/dungeon/water_1.png
Normal file
After Width: | Height: | Size: 31 KiB |