/****************************************************************************** * File - coreAPI.cpp * 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. ******************************************************************************/ #include "coreAPI.h" #include "wren_state.h" #include #include namespace lunarium { CoreAPI* CoreAPI::mpInstance = nullptr; CoreAPI& CoreAPI::GetInstance() { if (mpInstance == nullptr) { mpInstance = new CoreAPI; } return *mpInstance; } void CoreAPI::FreeInstance() { delete mpInstance; mpInstance = nullptr; } OpRes CoreAPI::Initialize(WrenState& sman) { mCat = sman.GetLogCat(); // Register methods // sman.mState["SetWindowSize"] = &CoreAPI::SetWindowSize; // sman.mState["Log"] = &CoreAPI::Log; // return OpRes::Fail("CoreAPI::Initialize not implemented yet!"); return OpRes::OK(); } //////////////////////////////////////////////////////////// // API //////////////////////////////////////////////////////////// void CoreAPI::SetWindowSize(int w, int h) { Core::MainWindow().Resize(w, h); } void CoreAPI::Log(int level, const char* msg) { switch (level) { case LogLevel::FATAL_ERROR: { Logger::Fatal(mpInstance->mCat, msg); break; } case LogLevel::ERROR: { Logger::Error(mpInstance->mCat, msg); break; } case LogLevel::WARNING: { Logger::Warn(mpInstance->mCat, msg); break; } case LogLevel::INFO: { Logger::Info(mpInstance->mCat, msg); break; } case LogLevel::DEBUG: { Logger::Debug(mpInstance->mCat, msg); break; } default: { Logger::Trace(mpInstance->mCat, msg); break; } } } }