Skip to content

Commit a06849c

Browse files
authored
Merge pull request #232 from SourceDotNET/lua
Lua
2 parents 7f110b6 + f5279d5 commit a06849c

13 files changed

Lines changed: 59 additions & 71 deletions

‎Game.Server/BaseEntity.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1307,7 +1307,7 @@ public void SetParent(BaseEntity? parentEntity, int attachment = -1) {
13071307
if (attachment == -1)
13081308
attachment = ParentAttachment;
13091309

1310-
if (!IsPlayer() && Game.Client.GarrysMod.GarrysMod.IsSacredEntity(Classname ?? "")) {
1310+
if (!IsPlayer() && Game.Server.GarrysMod.GarrysMod.IsSacredEntity(Classname ?? "")) {
13111311
Warning($"Refusing to set parent on {Classname}!\n");
13121312
return;
13131313
}

‎Game.Server/Util.cs‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,11 @@ public class CEntityFactoryDictionary : IEntityFactoryDictionary
7474
className = className.SliceNullTerminatedString();
7575
IEntityFactory? factory = FindFactory(className);
7676
#if GMOD_DLL
77-
if (Game.Client.GarrysMod.GarrysMod.g_LuaManager != null) {
77+
if (Game.Server.GarrysMod.GarrysMod.g_LuaManager != null) {
7878
Span<char> lowered = stackalloc char[512];
7979
strcpy(lowered, className);
8080
strlower(lowered);
81-
IServerNetworkable? luaEnt = Game.Client.GarrysMod.GarrysMod.g_LuaManager.CreateEntity(((ReadOnlySpan<char>)lowered).SliceNullTerminatedString(), factory != null);
81+
IServerNetworkable? luaEnt = Game.Server.GarrysMod.GarrysMod.g_LuaManager.CreateEntity(((ReadOnlySpan<char>)lowered).SliceNullTerminatedString(), factory != null);
8282
if (luaEnt != null)
8383
return luaEnt;
8484
}
@@ -523,8 +523,8 @@ public static void TransmitShakeEvent(BasePlayer player, float localAmplitude, f
523523
public static void PrecacheOther(ReadOnlySpan<char> className, ReadOnlySpan<char> modelName = default) {
524524
bool precaching = s_RemoveImmediateSemaphore == 0;
525525
if (precaching)
526-
Game.Client.GarrysMod.GarrysMod.g_GModPrecaching++;
527-
if (Game.Client.GarrysMod.GarrysMod.g_GModPrecaching > 0x20)
526+
Game.Server.GarrysMod.GarrysMod.g_GModPrecaching++;
527+
if (Game.Server.GarrysMod.GarrysMod.g_GModPrecaching > 0x20)
528528
Error("Something seems to have gone wroong");
529529

530530
BaseEntity? entity = CreateEntityByName(className);
@@ -540,7 +540,7 @@ public static void PrecacheOther(ReadOnlySpan<char> className, ReadOnlySpan<char
540540
}
541541

542542
if (precaching)
543-
Game.Client.GarrysMod.GarrysMod.g_GModPrecaching--;
543+
Game.Server.GarrysMod.GarrysMod.g_GModPrecaching--;
544544
}
545545

546546
public static void ClientPrintFilter<Filter>(scoped in Filter filter, HudPrint dest, ReadOnlySpan<char> msgName, ReadOnlySpan<char> param1 = default, ReadOnlySpan<char> param2 = default, ReadOnlySpan<char> param3 = default, ReadOnlySpan<char> param4 = default) where Filter : IRecipientFilter {
@@ -711,7 +711,7 @@ public static int DispatchSpawn(BaseEntity? entity) {
711711
public static void RemoveSafe(BaseEntity? entity) {
712712
if (entity == null)
713713
return;
714-
if (Game.Client.GarrysMod.GarrysMod.IsSacredEntity(entity.Classname ?? "")) {
714+
if (Game.Server.GarrysMod.GarrysMod.IsSacredEntity(entity.Classname ?? "")) {
715715
Warning($"Refusing to delete entity '{entity.Classname ?? ""}'!\n");
716716
return;
717717
}

‎Game.Shared/GarrysMod/GarrysMod.cs‎

Lines changed: 16 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
#if CLIENT_DLL || GAME_DLL
2+
#if CLIENT_DLL
23
global using static Game.Client.GarrysMod.GarrysModSingletons;
4+
#else
5+
global using static Game.Server.GarrysMod.GarrysModSingletons;
6+
#endif
37

48
using Game.Shared;
5-
#if GAME_DLL
6-
using Game.Server.GarrysMod;
7-
#endif
89

910
using Microsoft.Extensions.DependencyInjection;
1011

@@ -27,7 +28,11 @@
2728
using System.Collections.Generic;
2829
using System.Text;
2930

31+
#if CLIENT_DLL
3032
namespace Game.Client.GarrysMod;
33+
#else
34+
namespace Game.Server.GarrysMod;
35+
#endif
3136

3237
public static class GarrysModSingletons
3338
{
@@ -230,11 +235,7 @@ public static bool Kill() {
230235
g_LuaManager = null;
231236
}
232237
gGM?.Dispose();
233-
#if CLIENT_DLL
234238
LuaTimer.Shutdown();
235-
#else
236-
Game.Server.GarrysMod.LuaTimer.Shutdown();
237-
#endif
238239
return true;
239240
}
240241

@@ -263,7 +264,7 @@ public static bool Create() {
263264
g_LuaManager.Startup();
264265
#if GAME_DLL
265266
gGM.LoadCurrentlyActiveGamemode();
266-
Game.Server.GarrysMod.GModDataPack.DataPack().BuildSearchPaths();
267+
GModDataPack.DataPack().BuildSearchPaths();
267268
#endif
268269
return true;
269270
}
@@ -370,15 +371,9 @@ public void Startup() {
370371
Msg("Clientside Lua startup!\n");
371372
enginevgui.UpdateCustomProgressBar(0.95f, "Starting Lua...");
372373
#endif
373-
#if CLIENT_DLL
374374
if (LuaNetworkedVars.g_LuaNetworkedVars != null)
375375
Error("g_LuaNetworkedVars");
376376
LuaNetworkedVars.g_LuaNetworkedVars = new LuaNetworkedVars();
377-
#else
378-
if (Game.Server.GarrysMod.LuaNetworkedVars.g_LuaNetworkedVars != null)
379-
Error("g_LuaNetworkedVars");
380-
Game.Server.GarrysMod.LuaNetworkedVars.g_LuaNetworkedVars = new Game.Server.GarrysMod.LuaNetworkedVars();
381-
#endif
382377
if (g_Lua != null)
383378
Error("CLuaManager::Startup Lua already exsits?\n");
384379

@@ -400,35 +395,26 @@ public void Startup() {
400395
g_Lua.SetType(0);
401396
#else
402397
g_Lua = get.LuaShared()!.CreateLuaInterface(Realm.Server, false);
403-
g_Lua.Init(Game.Server.GarrysMod.LuaGameCallback.g_LuaCallback, Singleton<ICommandLine>().CheckParm("-withjit"));
398+
g_Lua.Init(LuaGameCallback.g_LuaCallback, Singleton<ICommandLine>().CheckParm("-withjit"));
404399
g_Lua.SetPathID(LuaPathID);
405400
g_Lua.SetType(1);
406401
#endif
407402
g_Lua.Global().SetMember("VERSION", (float)get.Version());
408403
g_Lua.Global().SetMember("VERSIONSTR", get.VersionStr());
409404
g_Lua.Global().SetMember("BRANCH", get.Branch());
410405
#if GAME_DLL
411-
Game.Server.GarrysMod.FileServ.Add("lua/send.txt");
406+
FileServ.Add("lua/send.txt");
412407
#endif
413-
#if CLIENT_DLL
414408
LuaUser.InitLuaLibraries(g_Lua);
415409
LuaClass.InitLuaClasses(g_Lua);
416-
#else
417-
Game.Server.GarrysMod.LuaUser.InitLuaLibraries(g_Lua);
418-
Game.Server.GarrysMod.LuaClass.InitLuaClasses(g_Lua);
419-
#endif
420410
#if CLIENT_DLL
421411
g_Lua.Global().SetMember("SERVER", false);
422412
g_Lua.Global().SetMember("CLIENT", true);
423413
#else
424414
g_Lua.Global().SetMember("SERVER", true);
425415
g_Lua.Global().SetMember("CLIENT", false);
426416
#endif
427-
#if CLIENT_DLL
428417
LuaEntity.MakeLuaNULLEntity();
429-
#else
430-
Game.Server.GarrysMod.LuaEntity.MakeLuaNULLEntity();
431-
#endif
432418
g_Lua.FindAndRunScript("includes/init.lua", true, true, "!UNKNOWN", true);
433419
#if CLIENT_DLL
434420
if (gGM == null)
@@ -469,7 +455,7 @@ public void SendScriptsInFolder(ReadOnlySpan<char> folder, ReadOnlySpan<char> so
469455
List<LuaFindResult> files = [];
470456
get.LuaShared()!.FindScripts($"{folder}/*.lua", "lsv", files);
471457
foreach (LuaFindResult file in files)
472-
Game.Server.GarrysMod.FileServ.AddCSLuaFile($"{folder}/{file.FileName}", new string(source));
458+
FileServ.AddCSLuaFile($"{folder}/{file.FileName}", new string(source));
473459
}
474460
#endif
475461

@@ -492,22 +478,12 @@ public void Shutdown() {
492478
GModBase.Shutdown();
493479
#endif
494480
g_LuaID++;
495-
#if CLIENT_DLL
496481
LuaClass.ShutdownLuaClasses(g_Lua!);
497-
#else
498-
Game.Server.GarrysMod.LuaClass.ShutdownLuaClasses(g_Lua!);
499-
#endif
500482
get.LuaShared()!.CloseLuaInterface(g_Lua!);
501483
g_Lua = null;
502-
#if CLIENT_DLL
503484
if (LuaNetworkedVars.g_LuaNetworkedVars == null)
504485
Error("!g_LuaNetworkedVars");
505486
LuaNetworkedVars.g_LuaNetworkedVars = null;
506-
#else
507-
if (Game.Server.GarrysMod.LuaNetworkedVars.g_LuaNetworkedVars == null)
508-
Error("!g_LuaNetworkedVars");
509-
Game.Server.GarrysMod.LuaNetworkedVars.g_LuaNetworkedVars = null;
510-
#endif
511487
}
512488
}
513489

@@ -613,11 +589,7 @@ public void EntityCreated(BaseEntity? ent) {
613589
if (gGM == null || !gGM.CallWithArgs((int)LUA_POOLEDSTRING.OnEntityCreated))
614590
return;
615591

616-
#if CLIENT_DLL
617592
LuaEntity.Push_Entity(ent);
618-
#else
619-
Game.Server.GarrysMod.LuaEntity.Push_Entity(ent);
620-
#endif
621593
gGM.CallNoReturns(1);
622594
}
623595

@@ -671,21 +643,13 @@ public bool RenderScene(in ViewSetup view) {
671643
#endif
672644

673645
public void EntityRemoved(BaseEntity ent, bool fullUpdate) {
674-
#if CLIENT_DLL
675646
LuaEntity.RemoveFromRemoveList(ent);
676-
#else
677-
Game.Server.GarrysMod.LuaEntity.RemoveFromRemoveList(ent);
678-
#endif
679647
SoundEnvelopeController.GetController().ShutdownSoundsForEntity(ent.EntIndex());
680648
if (g_Lua == null || gGM == null)
681649
return;
682650

683651
if (gGM.CallWithArgs((int)LUA_POOLEDSTRING.EntityRemoved)) {
684-
#if CLIENT_DLL
685652
LuaEntity.Push_Entity(ent);
686-
#else
687-
Game.Server.GarrysMod.LuaEntity.Push_Entity(ent);
688-
#endif
689653
g_Lua.PushBool(fullUpdate);
690654
gGM.CallNoReturns(2);
691655
}
@@ -695,7 +659,7 @@ public void EntityRemoved(BaseEntity ent, bool fullUpdate) {
695659
ent.GetLuaTable()?.UnReference();
696660
ent.GetLuaEntity()?.UnReference();
697661
}
698-
Game.Server.GarrysMod.LuaNetworkedVars.g_LuaNetworkedVars?.ClearEntity(ent.GetRefEHandle().Index);
662+
LuaNetworkedVars.g_LuaNetworkedVars?.ClearEntity(ent.GetRefEHandle().Index);
699663
#endif
700664
}
701665

@@ -708,9 +672,9 @@ public void Think() {
708672
LuaFileLibrary.AsyncCycle();
709673
UGCDownloadManager.Think();
710674
#else
711-
Game.Server.GarrysMod.LuaNetworkedVars.g_LuaNetworkedVars?.Cycle();
712-
Game.Server.GarrysMod.LuaTimer.Cycle();
713-
Game.Server.GarrysMod.LuaFileLibrary.AsyncCycle();
675+
LuaNetworkedVars.g_LuaNetworkedVars?.Cycle();
676+
LuaTimer.Cycle();
677+
LuaFileLibrary.AsyncCycle();
714678
#endif
715679
// HTTP.Cycle();
716680
// ErrorReporter.RunQueue();

‎Game.Shared/GarrysMod/LuaDump.cs‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@
77
using System.Text;
88
using System.Text.RegularExpressions;
99

10+
#if CLIENT_DLL
1011
namespace Game.Client.GarrysMod;
12+
#elif MENU_DLL
13+
namespace Game.MenuSystem.GarrysMod;
14+
#else
15+
namespace Game.Server.GarrysMod;
16+
#endif
1117

1218
public static class LuaDump
1319
{

‎Game.Shared/GarrysMod/LuaFileLibrary.cs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ static int File__Read(ILuaInterface lua) {
256256
toRead = length;
257257
else {
258258
#if !MENU_DLL
259-
if (Game.Client.GarrysMod.GarrysMod.lua_strict.GetInt() != 0) {
259+
if (GarrysMod.lua_strict.GetInt() != 0) {
260260
lua.ErrorFromLua($"File:Read() - Invalid requested size {(int)length}\n");
261261
return 0;
262262
}
@@ -310,7 +310,7 @@ static int File__Write(ILuaInterface lua) {
310310
}
311311

312312
#if !MENU_DLL
313-
if (Game.Client.GarrysMod.GarrysMod.lua_strict.GetInt() != 0)
313+
if (GarrysMod.lua_strict.GetInt() != 0)
314314
#endif
315315
lua.ErrorFromLua($"File:Write() - Invalid write size {data.Length}\n");
316316
return 0;

‎Game.Shared/GarrysMod/LuaGamemode.cs‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public void Dispose() {
3737
}
3838

3939
public void LoadGamemode(string name, bool reload) {
40-
if (Game.Client.GarrysMod.GarrysMod.g_LuaManager == null)
40+
if (GarrysMod.g_LuaManager == null)
4141
Error("Tried to LoadGamemode with NULL g_LuaManager");
4242
if (g_Lua == null)
4343
Error("Tried to LoadGamemode with NULL g_Lua");
@@ -59,16 +59,16 @@ public void LoadGamemode(string name, bool reload) {
5959
foreach (ILegacyAddons.Information addon in filesystem.LegacyAddons().GetList()) {
6060
string path = addon.GamemodesPath + "/" + folder + "/entities";
6161
if (!string.IsNullOrEmpty(addon.GamemodesPath) && filesystem.IsDirectory(path, "MOD"))
62-
get.LuaShared()!.MountLuaAdd(path, Game.Client.GarrysMod.GarrysMod.LuaPathID);
62+
get.LuaShared()!.MountLuaAdd(path, GarrysMod.LuaPathID);
6363
}
64-
get.LuaShared()!.MountLuaAdd("workshop/" + folder + "/entities", Game.Client.GarrysMod.GarrysMod.LuaPathID);
64+
get.LuaShared()!.MountLuaAdd("workshop/" + folder + "/entities", GarrysMod.LuaPathID);
6565
get.LuaShared()!.MountLuaAdd(folder + "/entities", g_Lua.GetPathID());
6666
}
6767

6868
LuaTable GM = new("GM", 0);
6969
GM.SetMember("Folder", folder);
7070
GM.SetMember("FolderName", name);
71-
if (!Game.Client.GarrysMod.GarrysMod.g_LuaManager.RunScript(init, Game.Client.GarrysMod.GarrysMod.LuaPathID, true, "!GM"))
71+
if (!GarrysMod.g_LuaManager.RunScript(init, GarrysMod.LuaPathID, true, "!GM"))
7272
g_Lua.ErrorFromLua($"Couldn't Load Init Script: '{init}'\n");
7373

7474
string derived = GM.GetMemberStr("DerivedFrom", "base") ?? "";
@@ -104,7 +104,7 @@ public void LoadGamemode(string name, bool reload) {
104104

105105
public bool IsValidGamemode(string name) {
106106
string init = name + "/gamemode/" + "init.lua";
107-
return Game.Client.GarrysMod.GarrysMod.g_LuaManager!.ScriptExists(init, Game.Client.GarrysMod.GarrysMod.LuaPathID);
107+
return GarrysMod.g_LuaManager!.ScriptExists(init, GarrysMod.LuaPathID);
108108
}
109109

110110
public void DeriveGamemode(string name) {

‎Game.Shared/GarrysMod/LuaNet.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,7 +458,7 @@ static void ValidateDataSize(ILuaInterface lua, int bits) {
458458
if (g_NetIncoming == null)
459459
return;
460460

461-
if (Game.Client.GarrysMod.GarrysMod.lua_strict.GetInt() != 0 && bits > g_NetIncoming.BitsLeft)
461+
if (GarrysMod.lua_strict.GetInt() != 0 && bits > g_NetIncoming.BitsLeft)
462462
lua.ErrorFromLua($"Trying to read more data ({bits} bit) than the net message has left ({g_NetIncoming.BitsLeft} bits)!\n");
463463
}
464464

‎Game.Shared/GarrysMod/LuaPlayer.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -806,7 +806,7 @@ static int Player__SendLua(ILuaInterface lua) {
806806
if (stristr(code, "while true do end").IsEmpty) {
807807
Game.Server.RecipientFilter filter = new Game.Server.SingleUserRecipientFilter(player);
808808
filter.MakeReliable();
809-
Game.Client.GarrysMod.GarrysMod.BroadcastLua(filter, code);
809+
GarrysMod.BroadcastLua(filter, code);
810810
}
811811
return 0;
812812
}

‎Game.Shared/GarrysMod/LuaSENTManager.cs‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44
using Source.Common.GarrysMod;
55
using Source.Common.GarrysMod.Lua;
66

7+
#if CLIENT_DLL
78
using static Game.Client.GarrysMod.GarrysMod;
9+
#else
10+
using static Game.Server.GarrysMod.GarrysMod;
11+
#endif
812

913
#if CLIENT_DLL
1014
namespace Game.Client.GarrysMod;

‎Game.Shared/GarrysMod/LuaSWEPManager.cs‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44
using Source.Common.GarrysMod;
55
using Source.Common.GarrysMod.Lua;
66

7+
#if CLIENT_DLL
78
using static Game.Client.GarrysMod.GarrysMod;
9+
#else
10+
using static Game.Server.GarrysMod.GarrysMod;
11+
#endif
812

913
#if CLIENT_DLL
1014
namespace Game.Client.GarrysMod;

0 commit comments

Comments
 (0)