import { EntityType, AnimationState } from './Constants.js'; /** * Sprite Library defining pixel art grids as 2D arrays. * 0: Transparent * 1: Primary Color (Entity Color) * 2: Highlight (White / Shine) * 3: Detail/Shade (Darker Blue / Eyes) */ export const SpriteLibrary = { // 8x8 Slime - Bottom-heavy blob [EntityType.SLIME]: { [AnimationState.IDLE]: [ [ [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 1, 1, 0, 0], // Top [0, 1, 1, 1, 1, 1, 1, 0], [1, 1, 2, 1, 1, 2, 1, 1], // Highlights [1, 1, 3, 1, 1, 3, 1, 1], // Eyes [1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 0] // Flat-ish base ], [ [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 1, 1, 0, 0], [0, 1, 1, 1, 1, 1, 1, 0], [1, 1, 2, 1, 1, 2, 1, 1], [1, 1, 3, 1, 1, 3, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1] // Squashed base ] ], [AnimationState.WALK]: [ [ [0, 0, 1, 1, 1, 1, 0, 0], [0, 1, 1, 1, 1, 1, 1, 0], [1, 1, 2, 1, 1, 2, 1, 1], [1, 1, 3, 1, 1, 3, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1], [1, 3, 1, 1, 1, 1, 3, 1], [0, 1, 1, 1, 1, 1, 1, 0] ], [ [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 1, 1, 0, 0], [0, 1, 1, 1, 1, 1, 1, 0], [1, 1, 2, 1, 1, 2, 1, 1], [1, 1, 3, 1, 1, 3, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1] ] ] }, // 8x8 Humanoid - Simple Walk Cycle [EntityType.HUMANOID]: { [AnimationState.IDLE]: [ [ [0, 0, 0, 1, 1, 0, 0, 0], [0, 0, 2, 1, 1, 2, 0, 0], [0, 0, 0, 1, 1, 0, 0, 0], [0, 1, 1, 1, 1, 1, 1, 0], [1, 0, 2, 1, 1, 2, 0, 1], [1, 0, 1, 1, 1, 1, 0, 1], [0, 0, 1, 0, 0, 1, 0, 0], [0, 0, 1, 0, 0, 1, 0, 0] ] ], [AnimationState.WALK]: [ [ [0, 0, 0, 1, 1, 0, 0, 0], [0, 0, 2, 1, 1, 2, 0, 0], [0, 0, 0, 1, 1, 0, 0, 0], [0, 1, 1, 1, 1, 1, 1, 0], [0, 0, 2, 1, 1, 2, 0, 1], [0, 0, 1, 1, 1, 1, 0, 1], [0, 0, 1, 0, 0, 0, 0, 0], [0, 1, 1, 0, 0, 0, 0, 0] ], [ [0, 0, 0, 1, 1, 0, 0, 0], [0, 0, 2, 1, 1, 2, 0, 0], [0, 0, 0, 1, 1, 0, 0, 0], [0, 1, 1, 1, 1, 1, 1, 0], [1, 0, 2, 1, 1, 2, 0, 0], [1, 0, 1, 1, 1, 1, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 1, 1, 0] ] ] }, // 8x8 Beast - Bounding Cycle [EntityType.BEAST]: { [AnimationState.IDLE]: [ [ [0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 1], [0, 1, 1, 1, 1, 1, 1, 0], [1, 3, 1, 1, 1, 1, 3, 1], [1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 2, 2, 1, 1, 0], [0, 1, 0, 0, 0, 0, 1, 0], [0, 1, 0, 0, 0, 0, 1, 0] ] ], [AnimationState.WALK]: [ [ [1, 0, 0, 0, 0, 0, 0, 1], [0, 1, 1, 1, 1, 1, 1, 0], [1, 3, 1, 1, 1, 1, 3, 1], [1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 2, 2, 1, 1, 0], [0, 1, 0, 0, 0, 0, 1, 0], [1, 1, 0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0] ], [ [0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 1], [0, 1, 1, 1, 1, 1, 1, 0], [1, 3, 1, 1, 1, 1, 3, 1], [1, 1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 2, 2, 1, 1, 0], [0, 0, 1, 0, 0, 1, 0, 0], [0, 0, 1, 0, 0, 1, 0, 0] ] ] }, // 8x8 Elemental - Floating Pulse [EntityType.ELEMENTAL]: { [AnimationState.IDLE]: [ [ [0, 0, 2, 1, 1, 2, 0, 0], [0, 1, 1, 2, 2, 1, 1, 0], [1, 2, 1, 1, 1, 1, 2, 1], [1, 1, 3, 3, 3, 3, 1, 1], [1, 1, 1, 3, 3, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 0], [0, 0, 1, 1, 1, 1, 0, 0], [0, 0, 0, 1, 1, 0, 0, 0] ], [ [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 2, 1, 1, 2, 0, 0], [0, 1, 1, 2, 2, 1, 1, 0], [1, 2, 3, 3, 3, 3, 2, 1], [1, 1, 1, 3, 3, 1, 1, 1], [0, 1, 1, 1, 1, 1, 1, 0], [0, 0, 1, 1, 1, 1, 0, 0], [0, 0, 0, 1, 1, 0, 0, 0] ] ] }, [EntityType.PROJECTILE]: { [AnimationState.IDLE]: [ [ [1, 1], [1, 1] ] ] } };