You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

62 lines
1.6 KiB

#!/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()