#pragma once
#include "DockPanelObject.h"
#include "DockPanelInfo.h"

#include "Deer/Memory.h"

#include <vector>
#include <string>

class asIScriptModule;
class asIScriptContext;

namespace Deer {
    namespace EditorEngine {
        class DockPanelContext {
        public:
            DockPanelContext(asIScriptModule*, DockPanelInfo*);
            ~DockPanelContext();

            DockPanelContext(DockPanelContext&) = delete;
            DockPanelContext& operator=(DockPanelContext&) = delete;

            DockPanelContext(DockPanelContext&&);
            DockPanelContext& operator=(DockPanelContext&&);

            void render();
            void init();

            inline const char* getName() const { return info->name.c_str(); }
            
            std::vector<DockPanelObject> dockPanels;
        private:
            asIScriptContext* context;
            asIScriptModule* module;
            DockPanelInfo* info;
        };
    }
}