@@ -61,13 +61,8 @@ static std::unordered_set<std::string> whitelist_pathid = { "lsv", "lua", "data"
61
61
62
62
class GModDataPackProxy : public Detouring ::ClassProxy<GModDataPack, GModDataPackProxy>
63
63
{
64
- private:
65
- static FunctionPointers::GModDataPack_AddOrUpdateFile_t AddOrUpdateFile_original;
66
- static const char hook_name[];
67
- static GarrysMod::Lua::ILuaBase *lua;
68
-
69
64
public:
70
- static void Initialize ( GarrysMod::Lua::ILuaBase *LUA )
65
+ void Initialize ( GarrysMod::Lua::ILuaBase *LUA )
71
66
{
72
67
lua = LUA;
73
68
@@ -79,34 +74,38 @@ class GModDataPackProxy : public Detouring::ClassProxy<GModDataPack, GModDataPac
79
74
LUA->ThrowError ( " failed to hook GModDataPack::AddOrUpdateFile" );
80
75
}
81
76
82
- static void Deinitialize ( GarrysMod::Lua::ILuaBase *LUA )
77
+ void Deinitialize ( GarrysMod::Lua::ILuaBase *LUA )
83
78
{
84
79
UnHook ( AddOrUpdateFile_original );
85
80
}
86
81
87
82
void AddOrUpdateFile ( LuaFile *file, bool reload )
88
83
{
89
- LuaHelpers::PushHookRun ( lua, hook_name );
84
+ auto &self = Singleton;
85
+
86
+ LuaHelpers::PushHookRun ( self.lua , " AddOrUpdateCSLuaFile" );
90
87
91
- lua->PushString ( file->path .c_str ( ) );
92
- lua->PushBool ( reload );
88
+ self. lua ->PushString ( file->path .c_str ( ) );
89
+ self. lua ->PushBool ( reload );
93
90
94
91
bool shouldcall = true ;
95
- if ( LuaHelpers::CallHookRun ( lua, 2 , 1 ) )
96
- shouldcall = !lua->IsType ( -1 , GarrysMod::Lua::Type::BOOL ) || lua->GetBool ( -1 );
92
+ if ( LuaHelpers::CallHookRun ( self. lua , 2 , 1 ) )
93
+ shouldcall = !self. lua ->IsType ( -1 , GarrysMod::Lua::Type::BOOL ) || self. lua ->GetBool ( -1 );
97
94
98
- lua->Pop ( 1 );
95
+ self. lua ->Pop ( 1 );
99
96
100
97
if ( shouldcall )
101
- return Call ( AddOrUpdateFile_original, file, reload );
98
+ return Call ( self. AddOrUpdateFile_original , file, reload );
102
99
}
103
100
104
101
static GModDataPackProxy Singleton;
102
+
103
+ private:
104
+ FunctionPointers::GModDataPack_AddOrUpdateFile_t AddOrUpdateFile_original = nullptr ;
105
+ GarrysMod::Lua::ILuaBase *lua = nullptr ;
105
106
};
106
107
107
- FunctionPointers::GModDataPack_AddOrUpdateFile_t GModDataPackProxy::AddOrUpdateFile_original = nullptr ;
108
- const char GModDataPackProxy::hook_name[] = " AddOrUpdateCSLuaFile" ;
109
- GarrysMod::Lua::ILuaBase *GModDataPackProxy::lua = nullptr ;
108
+ GModDataPackProxy GModDataPackProxy::Singleton;
110
109
111
110
static bool IsPathAllowed ( std::string &filename )
112
111
{
0 commit comments