#!/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__LEFT.png — copy of source BMP__RIGHT.png — horizontal flip BMP__UP.png — rotate 270° (nose up) BMP__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()