// src/assets/character_crawl_frames.h
#pragma once

// Crawl1 frame 1
static const char *CRAWL1_FRAME_1[] = {
    "........",
    "........",
    "...y4@W.",
    "..a@a`..",
    "..@@R@=.",
    ".aa@s@.."
};

// Crawl2 frame 1
static const char *CRAWL2_FRAME_1[] = {
    "........",
    "........",
    "........",
    ".____...",
    ".@@@@yg,",
    ".a@@PR@L"
};

enum class CrawlType {
    Crawl1 = 0,
    Crawl2,
    COUNT
};

static const char **CHARACTER_CRAWL1_FRAMES[] = {
    CRAWL1_FRAME_1,
};
static const char **CHARACTER_CRAWL2_FRAMES[] = {
    CRAWL2_FRAME_1,
};

static const int CHARACTER_CRAWL1_FRAME_COUNT = sizeof(CHARACTER_CRAWL1_FRAMES) / sizeof(CHARACTER_CRAWL1_FRAMES[0]);
static const int CHARACTER_CRAWL2_FRAME_COUNT = sizeof(CHARACTER_CRAWL2_FRAMES) / sizeof(CHARACTER_CRAWL2_FRAMES[0]);

// Height (rows per crawl frame)
static const int CHARACTER_CRAWL1_FRAME_HEIGHT = sizeof(CRAWL1_FRAME_1) / sizeof(CRAWL1_FRAME_1[0]);
static const int CHARACTER_CRAWL2_FRAME_HEIGHT = sizeof(CRAWL2_FRAME_1) / sizeof(CRAWL2_FRAME_1[0]);


// Crawl1 collision box
static const int CHARACTER_CRAWL1_FRAME_WIDTH = 8;
static const int CHARACTER_CRAWL1_COLLISION_LEFT_OFFSET  = 1;
static const int CHARACTER_CRAWL1_COLLISION_RIGHT_OFFSET = 1;
static const int CHARACTER_CRAWL1_COLLISION_WIDTH = CHARACTER_CRAWL1_FRAME_WIDTH - (CHARACTER_CRAWL1_COLLISION_LEFT_OFFSET + CHARACTER_CRAWL1_COLLISION_RIGHT_OFFSET);
static const int CHARACTER_CRAWL1_COLLISION_HEIGHT = CHARACTER_CRAWL1_FRAME_HEIGHT - 2;

// Crawl2 collision box (lower posture - smaller collision height)
static const int CHARACTER_CRAWL2_FRAME_WIDTH = 8;
static const int CHARACTER_CRAWL2_COLLISION_LEFT_OFFSET  = 1;
static const int CHARACTER_CRAWL2_COLLISION_RIGHT_OFFSET = 0;
static const int CHARACTER_CRAWL2_COLLISION_WIDTH = CHARACTER_CRAWL2_FRAME_WIDTH - (CHARACTER_CRAWL2_COLLISION_LEFT_OFFSET + CHARACTER_CRAWL2_COLLISION_RIGHT_OFFSET);
static const int CHARACTER_CRAWL2_COLLISION_HEIGHT = CHARACTER_CRAWL2_FRAME_HEIGHT - 4;
