TombEngine/TombEngine/Scripting/Internal/ScriptInterfaceState.cpp

66 lines
2.3 KiB
C++
Raw Normal View History

#include "framework.h"
2023-05-08 14:24:16 +10:00
#include "Scripting/Include/ScriptInterfaceState.h"
#include "Scripting/Internal/ReservedScriptNames.h"
#include "Scripting/Internal/TEN/Collision/Probe.h"
2023-05-08 14:24:16 +10:00
#include "Scripting/Internal/TEN/Effects/EffectsFunctions.h"
2023-06-25 16:59:59 +10:00
#include "Scripting/Internal/TEN/Flow/FlowHandler.h"
#include "Scripting/Internal/TEN/Input/InputHandler.h"
2023-05-08 14:24:16 +10:00
#include "Scripting/Internal/TEN/Inventory/InventoryHandler.h"
#include "Scripting/Internal/TEN/Logic/LogicHandler.h"
#include "Scripting/Internal/TEN/Objects/ObjectsHandler.h"
#include "Scripting/Internal/TEN/Strings/StringsHandler.h"
#include "Scripting/Internal/TEN/Sound/SoundHandler.h"
#include "Scripting/Internal/TEN/Util/Util.h"
#include "Scripting/Internal/TEN/View/ViewHandler.h"
2023-10-06 14:16:54 +11:00
static sol::state SolState;
static sol::table RootTable;
2023-05-08 14:24:16 +10:00
int lua_exception_handler(lua_State* luaStatePtr, sol::optional<const std::exception&> exception, sol::string_view description)
{
2023-05-08 14:24:16 +10:00
return luaL_error(luaStatePtr, description.data());
}
ScriptInterfaceGame* ScriptInterfaceState::CreateGame()
{
2023-10-06 14:16:54 +11:00
return new LogicHandler(&SolState, RootTable);
}
ScriptInterfaceFlowHandler* ScriptInterfaceState::CreateFlow()
{
2023-10-06 14:16:54 +11:00
return new FlowHandler(&SolState, RootTable);
}
2022-02-05 16:03:54 +00:00
ScriptInterfaceObjectsHandler* ScriptInterfaceState::CreateObjectsHandler()
{
2023-10-06 14:16:54 +11:00
return new ObjectsHandler(&SolState, RootTable);
}
ScriptInterfaceStringsHandler* ScriptInterfaceState::CreateStringsHandler()
{
2023-10-06 14:16:54 +11:00
return new StringsHandler(&SolState, RootTable);
}
2023-05-18 15:19:23 +10:00
void ScriptInterfaceState::Init(const std::string& assetsDir)
{
2023-10-06 14:16:54 +11:00
SolState.open_libraries(
sol::lib::base, sol::lib::math, sol::lib::package, sol::lib::coroutine,
sol::lib::table, sol::lib::string, sol::lib::debug);
2023-10-06 14:16:54 +11:00
SolState.script("package.path=\"" + assetsDir + "Scripts/?.lua\"");
SolState.set_exception_handler(lua_exception_handler);
2023-10-06 14:16:54 +11:00
RootTable = sol::table(SolState.lua_state(), sol::create);
SolState.set(ScriptReserved_TEN, RootTable);
2023-04-01 16:27:28 +11:00
// Misc. handlers not assigned above.
2023-11-11 00:24:55 +11:00
TEN::Scripting::InventoryHandler::Register(&SolState, RootTable);
TEN::Scripting::Collision::Register(&SolState, RootTable);
2023-11-11 00:24:55 +11:00
TEN::Scripting::Effects::Register(&SolState, RootTable);
TEN::Scripting::Input::Register(&SolState, RootTable);
TEN::Scripting::Sound::Register(&SolState, RootTable);
TEN::Scripting::Util::Register(&SolState, RootTable);
TEN::Scripting::View::Register(&SolState, RootTable);
}