#pragma once

#if defined( __EMSCRIPTEN__ ) || defined( __ANDROID__ )
#include <GLES3/gl3.h>
#else
#include <glad/glad.h>
#endif

#include "crArray.h"
#include "crStruct.h"

struct crAtlasSprite
{
    char   name[ 32 ];
    float2 uvMin;
    float2 uvMax;
    float2 sizePx;
    float2 pivot;    // image-space 0..1, (0.5,0.5) = center
};

class crSpriteAtlas
{
private:
    GLuint _texture     = 0;
    int2   _textureSize = {};

    crArray<crAtlasSprite> _sprites;

public:
    bool Init( const char* baseName );   // loads crassets/texture/<base>.cratlas + crassets/texture/<base>.ktx2
    void Cleanup();

    GLuint Texture() const { return _texture; }

    int32_t Find( const char* name ) const;   // -1 if missing; spawn-time lookup only
    const crAtlasSprite& Sprite( int32_t index ) const { return _sprites.At( index ); }

private:
    bool ParseAtlasCsv( const char* path );
};
