/******************************************************************************
*	File		-	coreAPI.h
*	Author		-	Joey Pollack
*	Date		-	2021/09/23 (y/m/d)
*	Mod Date	-	2021/09/23 (y/m/d)
*	Description	-	class with all static methods that expose core functionality to LUA
*                   Need an init function that takes a reference to a LUA state so that it
*                   can expose the static functions to LUA.
******************************************************************************/

#ifndef CORE_API_H_
#define CORE_API_H_

#include <utils/op_res.h>


namespace lunarium
{
    class ScriptManager;

    class CoreAPI
    {
    public:
        static CoreAPI& GetInstance();
        static void FreeInstance();

        OpRes Initialize(ScriptManager& sman);

    private:
        static CoreAPI* mpInstance;
        uint32_t mCat;

    public: // API

        static void SetWindowSize(int w, int h);
        static void Log(int level, const char* msg);

    };
}

#endif  // CORE_API_H_