#include "layers/test_panel/test_panel.hpp"
#include "layers/test_panel_2/test_panel_2.hpp"
#include "layers/opengl_panel/opengl_panel.hpp"

namespace sandbox
{
  class test_app : public VE::application
  {
    public:
      test_app(std::string app_name) : VE::application{ app_name } {};
      ~test_app() = default;

    public:
      template<typename... Args>
      void push_layer(Args... args) 
      { 
        this->VE::application::push_layer(args...); 
      }
  };
}

namespace VE
{
  // HERE
  // перенести в VE.hpp
  // и сделать варитивными параметрами !!!
  inline application& create()
  {
    static sandbox::test_app app{ "vertex_engine_sandbox" };

    app.push_layer(
      new sandbox::test_panel{},
      new sandbox::test_panel_2{},
      new sandbox::opengl_panel{}
    );

    return app;
  }
}

auto main(int argc, char* args[]) -> int
{
  decltype(auto) app = VE::create();
  app.run();
}
