"""shade_sprite - Sprite animation and compositing for Merchant Shade sprite packs. A standalone module for McRogueFace that loads, composites, and animates layered pixel art character sheets. Supports multiple sprite sheet formats including the Puny Characters pack (paid & free), RPG Maker creatures, and slime sheets. Quick start: from shade_sprite import AnimatedSprite, Direction, PUNY_29 import mcrfpy tex = mcrfpy.Texture("Warrior-Red.png", 32, 32) sprite = mcrfpy.Sprite(texture=tex, pos=(100, 100), scale=2.0) scene.children.append(sprite) anim = AnimatedSprite(sprite, PUNY_29) anim.play("walk") anim.direction = Direction.E def tick_anims(timer, runtime): anim.tick(timer.interval) mcrfpy.Timer("anim", tick_anims, 50) For layered characters: from shade_sprite import CharacterAssembler, PUNY_29 assembler = CharacterAssembler(PUNY_29) assembler.add_layer("skins/Human1.png") assembler.add_layer("clothes/BasicBlue-Body.png", hue_shift=120.0) assembler.add_layer("hair/M-Hairstyle1-Black.png") texture = assembler.build("my_character") For procedural factions: from shade_sprite import FactionGenerator, AssetLibrary lib = AssetLibrary() gen = FactionGenerator(seed=42, library=lib) recipe = gen.generate() textures = recipe.build_role_textures(assembler) """ from .formats import ( Direction, AnimFrame, AnimDef, SheetFormat, PUNY_29, PUNY_24, CREATURE_RPGMAKER, SLIME, ALL_FORMATS, detect_format, ) from .animation import AnimatedSprite from .assembler import CharacterAssembler, TextureCache from .assets import AssetLibrary, LayerFile from .factions import ( FactionRecipe, FactionGenerator, RoleDefinition, Biome, Element, Aesthetic, RoleType, ) __all__ = [ # Core classes "AnimatedSprite", "CharacterAssembler", "TextureCache", # Format definitions "Direction", "AnimFrame", "AnimDef", "SheetFormat", # Predefined formats "PUNY_29", "PUNY_24", "CREATURE_RPGMAKER", "SLIME", "ALL_FORMATS", # Utilities "detect_format", # Asset scanning "AssetLibrary", "LayerFile", # Faction generation "FactionRecipe", "FactionGenerator", "RoleDefinition", "Biome", "Element", "Aesthetic", "RoleType", ]