#pragma once

#include <Core/Common/CoreTypes.h>
#include <Core/Container/Vector.h>

namespace Game
{
    using EntityID = uint64_t;

    struct Entity;
    struct EntityManager
    {
        static EntityID ID;

        Juliet::Arena* Arena;
        // TODO: Should be a pool
        Juliet::VectorArena<Entity, 1024> Entities;
    };

    void           InitEntityManager(Juliet::NonNullPtr<Juliet::Arena> arena);
    void           ShutdownEntityManager();
    EntityManager& GetEntityManager();
    void           RegisterEntity(EntityManager& manager, Entity* entity);
} // namespace Game
