#include "open_engine/application.hpp"
#include <open_engine/entry_point.hpp>

#include <open_engine.hpp>

#include <editor.hpp>
#include <level_editor.hpp>
#include <e_sandbox2d.hpp>
#include <control_layer.hpp>
#include <overlay.hpp>
#include <modding.hpp>

EditorApp::EditorApp(OpenEngine::ApplicationCommandLineArgs args)
    : Application("OpenEngine Editor", args)
{
    OpenEngine::Ref<OpenEngine::Layer> modding_layer = OpenEngine::CreateRef<Modding>();
    OpenEngine::Ref<OpenEngine::Layer> editor_layer = OpenEngine::CreateRef<OpenEngine::EditorLayer>();
    OpenEngine::Ref<OpenEngine::Layer> control_layer = OpenEngine::CreateRef<ControlLayer>(editor_layer);

    QueueLayerPush(editor_layer);
    QueueLayerPush(control_layer);
    QueueLayerPush(modding_layer);
}

EditorApp::~EditorApp()
{
}

OpenEngine::Application* OpenEngine::CreateApplication(OpenEngine::ApplicationCommandLineArgs args)
{
    OE_INFO("Editor Starting...");
    return new EditorApp(args);
}
