63 lines
1.6 KiB
Python
63 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Generate directional rat sprites (LEFT, RIGHT, UP, DOWN) from source LEFT PNGs.
|
|
|
|
Source files (tools/vernon/output/):
|
|
BMP_MALE_LEFT.png
|
|
BMP_FEMALE_LEFT.png
|
|
BMP_BABY_LEFT.png
|
|
|
|
Output goes to assets/Rat/ as:
|
|
BMP_<SEX>_LEFT.png — copy of source
|
|
BMP_<SEX>_RIGHT.png — horizontal flip
|
|
BMP_<SEX>_UP.png — rotate 270° (nose up)
|
|
BMP_<SEX>_DOWN.png — rotate 90° (nose down)
|
|
|
|
Usage (from project root):
|
|
python tools/generate_rat_sprites.py
|
|
"""
|
|
|
|
import sys
|
|
import os
|
|
from pathlib import Path
|
|
from PIL import Image
|
|
|
|
REPO_ROOT = Path(__file__).resolve().parent.parent
|
|
SOURCE_DIR = REPO_ROOT / "tools" / "vernon" / "output"
|
|
OUTPUT_DIR = REPO_ROOT / "assets" / "Rat"
|
|
|
|
SEXES = ["MALE", "FEMALE", "BABY"]
|
|
|
|
|
|
def generate(sex: str) -> None:
|
|
src_path = SOURCE_DIR / f"BMP_{sex}_LEFT.png"
|
|
if not src_path.exists():
|
|
print(f" SKIP {sex}: source not found at {src_path}", file=sys.stderr)
|
|
return
|
|
|
|
src = Image.open(src_path).convert("RGBA")
|
|
|
|
variants = {
|
|
"LEFT": src,
|
|
"RIGHT": src.transpose(Image.FLIP_LEFT_RIGHT),
|
|
"UP": src.rotate(270, expand=True),
|
|
"DOWN": src.rotate(90, expand=True),
|
|
}
|
|
|
|
for direction, img in variants.items():
|
|
out_path = OUTPUT_DIR / f"BMP_{sex}_{direction}.png"
|
|
img.save(out_path)
|
|
print(f" wrote {out_path.relative_to(REPO_ROOT)} {img.size}")
|
|
|
|
|
|
def main() -> None:
|
|
OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
|
|
for sex in SEXES:
|
|
print(f"[{sex}]")
|
|
generate(sex)
|
|
print("Done.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|