Skip to content

Commit a7fbeec

Browse files
committed
feat(scripting): CHandle
1 parent 4e22682 commit a7fbeec

File tree

5 files changed

+59
-1
lines changed

5 files changed

+59
-1
lines changed

src/plugins/core/scripting.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,24 @@ class PluginDatabase
336336
void QueryLua(std::string query, luabridge::LuaRef callback, lua_State *L);
337337
};
338338

339+
//////////////////////////////////////////////////////////////
340+
///////////////// CHandle //////////////
341+
////////////////////////////////////////////////////////////
342+
343+
class PluginCHandle
344+
{
345+
private:
346+
CHandle<CEntityInstance> *m_Handle;
347+
public:
348+
PluginCHandle(std::string ptr);
349+
PluginCHandle(void* ptr);
350+
351+
std::string GetPtr();
352+
void SetPtr(std::string ptr);
353+
354+
std::string GetHandlePtr();
355+
};
356+
339357
//////////////////////////////////////////////////////////////
340358
///////////////// Configuration //////////////
341359
////////////////////////////////////////////////////////////
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#include "../scripting.h"
2+
3+
PluginCHandle::PluginCHandle(void* ptr)
4+
{
5+
m_Handle = (CHandle<CEntityInstance>*)ptr;
6+
}
7+
8+
PluginCHandle::PluginCHandle(std::string ptr)
9+
{
10+
m_Handle = (CHandle<CEntityInstance>*)strtol(ptr.c_str(), nullptr, 16);
11+
}
12+
13+
std::string PluginCHandle::GetPtr()
14+
{
15+
return string_format("%p", (void*)m_Handle->Get());
16+
}
17+
18+
void PluginCHandle::SetPtr(std::string ptr)
19+
{
20+
m_Handle->Set((CEntityInstance*)strtol(ptr.c_str(), nullptr, 16));
21+
}
22+
23+
std::string PluginCHandle::GetHandlePtr()
24+
{
25+
return string_format("%p", (void*)m_Handle);
26+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#include "core.h"
2+
3+
void SetupLuaCHandle(LuaPlugin* plugin, lua_State* state)
4+
{
5+
luabridge::getGlobalNamespace(state)
6+
.beginClass<PluginCHandle>("CHandle")
7+
.addConstructor<void(*)(std::string)>()
8+
.addFunction("GetPtr", &PluginCHandle::GetPtr)
9+
.addFunction("SetPtr", &PluginCHandle::SetPtr)
10+
.addFunction("GetHandlePtr", &PluginCHandle::GetHandlePtr)
11+
.endClass();
12+
}

src/plugins/lua/scripting/core.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,5 @@ void SetupLuaEnvironment(LuaPlugin *plugin, lua_State *state)
9090
SetupLuaHooks(plugin, state);
9191
SetupLuaUserMessages(plugin, state);
9292
SetupLuaWeapons(plugin, state);
93+
SetupLuaCHandle(plugin, state);
9394
}

src/plugins/lua/scripting/core.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,5 @@ void SetupLuaEntities(LuaPlugin *plugin, lua_State *state);
3131
void SetupLuaMemory(LuaPlugin *plugin, lua_State *state);
3232
void SetupLuaHooks(LuaPlugin *plugin, lua_State *state);
3333
void SetupLuaUserMessages(LuaPlugin *plugin, lua_State *state);
34-
void SetupLuaWeapons(LuaPlugin *plugin, lua_State *state);
34+
void SetupLuaWeapons(LuaPlugin *plugin, lua_State *state);
35+
void SetupLuaCHandle(LuaPlugin* plugin, lua_State* state);

0 commit comments

Comments
 (0)