Skip to content

Commit 3268669

Browse files
committed
update(plugins-refresh): Reimplementing
1 parent 3025cef commit 3268669

File tree

19 files changed

+65
-76
lines changed

19 files changed

+65
-76
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
test_plugin/

src/components/BasicComponent/src/BasicComponent.cpp

Lines changed: 64 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
#include "../../Plugins/inc/Plugin.h"
99
#include "../../../files/Files.h"
1010
#include "../../../http/HTTPManager.h"
11+
#include "../../Plugins/inc/plugins/CPPPlugin.h"
12+
#include "../../Plugins/inc/plugins/LuaPlugin.h"
1113

1214
typedef const char *(*GetPlugin)();
1315

@@ -272,47 +274,73 @@ void SwiftlyPluginManagerReload(CPlayerSlot *slot, CCommandContext context, std:
272274
PrintToClientOrConsole(slot, "Plugin Reload", "Plugin '%s' has been reloaded.\n", plugin_name.c_str());
273275
}
274276

277+
void LoadPlugin(std::string plugin_name)
278+
{
279+
Plugin *plugin = nullptr;
280+
281+
std::vector<std::string> files = Files::FetchFileNames("addons/swiftly/plugins/" + plugin_name);
282+
283+
for (const std::string &file : files)
284+
{
285+
if (ends_with(file, WIN_LINUX(".dll", ".so")))
286+
{
287+
plugin = new CPPPlugin(file, plugin_name, PluginType_t::PLUGIN_CPP);
288+
break;
289+
}
290+
else if (ends_with(file, ".lua"))
291+
{
292+
plugin = new LuaPlugin(std::string(std::filesystem::current_path().string() + "/addons/swiftly/plugins/" + plugin_name), plugin_name, PluginType_t::PLUGIN_LUA);
293+
break;
294+
}
295+
}
296+
297+
if (plugin)
298+
AddPluginInMap(plugin);
299+
}
300+
275301
void SwiftlyPluginManagerRefresh(CPlayerSlot *slot, CCommandContext context)
276302
{
277303
if (slot->Get() != -1)
278304
return;
279305

280-
PrintToClientOrConsole(slot, "Plugin Refresh", "This feature has been temporarely removed until support for multi language scripting is finished.\n");
281-
282-
// std::vector<std::string> pluginNames;
283-
284-
// std::vector<std::string> files = Files::FetchFileNames("addons/swiftly/plugins");
285-
// for (const std::string &file : files)
286-
// {
287-
// if (!ends_with(file, WIN_LINUX(".dll", ".so")))
288-
// continue;
289-
// if (starts_with(file, WIN_LINUX("disabled\\", "disabled/")))
290-
// continue;
291-
292-
// pluginNames.push_back(file);
293-
// }
294-
295-
// uint32 newPlugins = 0;
296-
297-
// for (const std::string plugin_name : pluginNames)
298-
// {
299-
// if (!ExistsPluginInMap(plugin_name))
300-
// {
301-
// std::vector<std::string> exploded = explode(plugin_name, WIN_LINUX("\\", "/"));
302-
// std::string name = exploded[exploded.size() - 2];
303-
// if (name == "plugins")
304-
// {
305-
// PrintToClientOrConsole(slot, "Plugin Refresh", "Skipped '%s' because it needs to be in it's own folder.\n", plugin_name);
306-
// continue;
307-
// }
308-
309-
// Plugin *plugin = new Plugin(plugin_name, name);
310-
// AddPluginInMap(plugin);
311-
// ++newPlugins;
312-
// }
313-
// }
314-
315-
// PrintToClientOrConsole(slot, "Plugin Refresh", "%02d plugins have been added.\n", newPlugins);
306+
std::vector<std::string> pluginNames;
307+
308+
std::vector<std::string> directories = Files::FetchDirectories("addons/swiftly/plugins");
309+
for (std::string directory : directories)
310+
{
311+
if (directory.find("disabled") != std::string::npos)
312+
continue;
313+
314+
directory = replace(directory, "addons/swiftly/plugins", "");
315+
directory = replace(directory, WIN_LINUX("\\", "/"), "");
316+
317+
pluginNames.push_back(directory);
318+
}
319+
320+
uint32 newPlugins = 0;
321+
322+
for (const std::string plugin_name : pluginNames)
323+
{
324+
if (!ExistsPluginInMap(plugin_name))
325+
{
326+
// std::vector<std::string> exploded = explode(plugin_name, WIN_LINUX("\\", "/"));
327+
// std::string name = exploded[exploded.size() - 2];
328+
// if (name == "plugins")
329+
// {
330+
// PrintToClientOrConsole(slot, "Plugin Refresh", "Skipped '%s' because it needs to be in it's own folder.\n", plugin_name);
331+
// continue;
332+
// }
333+
334+
// Plugin *plugin = new Plugin(plugin_name, name);
335+
336+
// AddPluginInMap(new LuaPlugin(plugin_name, "", PluginType_t::PLUGIN_LUA));
337+
338+
LoadPlugin(plugin_name);
339+
++newPlugins;
340+
}
341+
}
342+
343+
PrintToClientOrConsole(slot, "Plugin Refresh", "%02d plugins have been added.\n", newPlugins);
316344
}
317345

318346
void SwiftlyPluginManager(CPlayerSlot *slot, CCommandContext context, const char *subcmd, const char *plugin_name)

src/components/Plugins/src/language/lua/commands.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,4 @@ void SetupLuaCommands(luacpp::LuaState *state, Plugin *plugin)
2929
} });
3030

3131
state->DoString("commands = Commands()");
32-
33-
PRINT("Scripting - Lua", "Commands loaded.\n");
3432
}

src/components/Plugins/src/language/lua/configuration.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,4 @@ void SetupLuaConfiguration(luacpp::LuaState *state, Plugin *plugin)
5858
return state->CreateNil(); });
5959

6060
state->DoString("config = Configuration()");
61-
62-
PRINT("Scripting - Lua", "Configuration loaded.\n");
6361
}

src/components/Plugins/src/language/lua/convars.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,4 @@ void SetupLuaConvars(luacpp::LuaState *state, Plugin *plugin)
4949
} });
5050

5151
state->DoString("convar = Convars()");
52-
53-
PRINT("Scripting - Lua", "Convars loaded.\n");
5452
}

src/components/Plugins/src/language/lua/core.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,6 @@ void SetupLuaEnvironment(Plugin *plugin)
8787
{ return playerTable; },
8888
"GetPlayers");
8989

90-
PRINT("Scripting - Lua", "Core loaded.\n");
91-
9290
SetupLuaCommands(state, plugin);
9391
SetupLuaConfiguration(state, plugin);
9492
SetupLuaConvars(state, plugin);

src/components/Plugins/src/language/lua/database.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,4 @@ void SetupLuaDatabase(luacpp::LuaState *state, Plugin *plugin)
9292
return tbl; });
9393

9494
state->DoString("db = nil;");
95-
96-
PRINT("Scripting - Lua", "Database loaded.\n");
9795
}

src/components/Plugins/src/language/lua/entities.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,4 @@ void SetupLuaEntities(luacpp::LuaState *state, Plugin *plugin)
217217
scripting_Entity_SetColors(base->entityID, colors.GetInteger("r"), colors.GetInteger("g"), colors.GetInteger("b"), colors.GetInteger("a")); });
218218

219219
state->DoString("entities = Entities()");
220-
221-
PRINT("Scripting - Lua", "Entities loaded.\n");
222220
}

src/components/Plugins/src/language/lua/gameevents.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,4 @@ void SetupLuaGameEvents(luacpp::LuaState *state, Plugin *plugin)
4848
state->DoString("function Internal_RegisterPlayer(slot, fake) players[slot] = Player(slot, fake); end");
4949
state->DoString("function Internal_UnregisterPlayer(slot) players[slot] = nil; end");
5050
state->DoString("function Internal_OnProgramLoad(plugin_name, bin) if OnProgramLoad then OnProgramLoad(plugin_name, bin) end end");
51-
52-
PRINT("Scripting - Lua", "Game Events loaded.\n");
5351
}

src/components/Plugins/src/language/lua/http.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,4 @@ void SetupLuaHTTP(luacpp::LuaState *state, Plugin *plugin)
8181
{ scripting_HTTP_SetFollowRedirect(base->GetRequestID(), follow); });
8282

8383
state->DoString("http = HTTP()");
84-
85-
PRINT("Scripting - Lua", "HTTP loaded.\n");
8684
}

0 commit comments

Comments
 (0)