#pragma once

#include <vector>
#include "Layer.hpp"
#include "interfaces/IWindow.hpp"
#include "Types.hpp"

namespace TSE
{
    class Scene
    {
    private:
        string name = "Unnamed";
        std::vector<std::pair<string, Layer*>> layers;

    public:
        void Render(IRenderer& rnd, const IWindow& wnd);
        void DoneRender();
        void AddLayer(Layer* l);
        void RemoveLayer(const string& name);
        int GetLayerCount() const;
        Layer* GetLayerAt(const int& i) const;
        void SetName(const string& name);
        string GetName();
        void Update();
        void RenameLayer(const string& oldName, const string& newName);
        void MoveLayerUp(Layer* l);
        void MoveLayerDown(Layer* l);
    };
} // namespace TSE
