Skip to content

Commit dc2e97a

Browse files
committed
Code clean-up using .GetModule
1 parent ab8de0b commit dc2e97a

File tree

3 files changed

+85
-100
lines changed

3 files changed

+85
-100
lines changed

lua/blobsprofiler/client/cl_blobsprofiler.lua

Lines changed: 52 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -627,12 +627,10 @@ local function addDTreeNode(parentNode, nodeData, specialType, isRoot, varType,
627627

628628
if varType == "Profiling.Targets" and isRoot then
629629
local fullModuleName = nodeData.key
630-
local splitModuleName = string.Explode(".", fullModuleName)
631630

632-
if #splitModuleName == 1 then
633-
childNode.Icon:SetImage(blobsProfiler.Modules[splitModuleName[1]].Icon)
634-
else
635-
childNode.Icon:SetImage(blobsProfiler.Modules[splitModuleName[1]].SubModules[splitModuleName[2]].Icon)
631+
local getModule = blobsProfiler.GetModule(fullModuleName)
632+
if getModule and getModule.Icon then
633+
childNode.Icon:SetImage(getModule.Icon)
636634
end
637635
end
638636

@@ -944,10 +942,12 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
944942
subModuleData.ClientTab = subModuleTab
945943
elseif luaState == "Server" then
946944
subModuleData.ServerTab = subModuleTab
945+
local rawModuleName = moduleName .. "." .. subModuleName
946+
local subModuleTable, parentModuleTable = blobsProfiler.GetModule(rawModuleName)
947947

948948
subModuleSheet.Tab.PaintOver = function(s,w,h)
949-
if blobsProfiler.Modules[moduleName].childrenReceiving and blobsProfiler.Modules[moduleName].childrenReceiving[moduleName .. "." .. subModuleName] then
950-
local recvTbl = blobsProfiler.Modules[moduleName].childrenReceiving[moduleName .. "." .. subModuleName]
949+
if parentModuleTable.childrenReceiving and parentModuleTable.childrenReceiving[rawModuleName] then
950+
local recvTbl = parentModuleTable.childrenReceiving[rawModuleName]
951951
local recvChunks = recvTbl.receivedChunks and #recvTbl.receivedChunks or 0
952952
local totChunks = recvTbl.totalChunks or 1
953953
local perc = recvChunks / totChunks
@@ -956,9 +956,9 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
956956
local startY = (moduleTab.GetActiveTab and moduleTab:GetActiveTab() == s) and 0 or 1
957957

958958
draw.RoundedBoxEx(4, 0, startY, perc * w, dynamicH, Color(255,255,0,50), true, true)
959-
elseif blobsProfiler.Modules[moduleName].SubModules[subModuleName].flashyUpdate then
959+
elseif subModuleTable.flashyUpdate then
960960
if (moduleTab.GetActiveTab and moduleTab:GetActiveTab() == s) then -- TODO: DPanel subModuleTabs will never stop flashing
961-
blobsProfiler.Modules[moduleName].SubModules[subModuleName].flashyUpdate = nil
961+
subModuleTable.flashyUpdate = nil
962962
return
963963
end
964964

@@ -970,7 +970,7 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
970970

971971
draw.RoundedBoxEx(4, 0, startY, w, dynamicH, Color(0,255,0,50), true, true)
972972
end
973-
elseif blobsProfiler.Modules[moduleName].SubModules[subModuleName].retrievingData then
973+
elseif subModuleTable.retrievingData then
974974
local marqueeSpeed = 50 -- Speed of the marquee movement in pixels per second
975975
local marqueeWidth = 50 -- Width of the marquee rectangle
976976
local currentTime = CurTime()
@@ -1010,23 +1010,26 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
10101010
end
10111011

10121012
moduleTab.OnActiveTabChanged = function(s, pnlOld, pnlNew)
1013+
local rawModuleName = moduleName .. "." .. pnlNew:GetText()
1014+
local subModuleTable, parentModuleTable = blobsProfiler.GetModule(rawModuleName)
1015+
10131016
if not blobsProfiler[luaState][moduleName] or not blobsProfiler[luaState][moduleName][pnlNew:GetText()] then
1014-
if blobsProfiler.Modules[moduleName].SubModules[pnlNew:GetText()].UpdateRealmData then
1015-
blobsProfiler.Modules[moduleName].SubModules[pnlNew:GetText()]:UpdateRealmData(luaState)
1017+
if subModuleTable.UpdateRealmData then
1018+
subModuleTable:UpdateRealmData(luaState)
10161019
if luaState == "Server" then
1017-
blobsProfiler.Modules[moduleName].SubModules[pnlNew:GetText()].retrievingData = true
1020+
subModuleTable.retrievingData = true
10181021
end
10191022
end
10201023
end
10211024

1022-
if blobsProfiler.Modules[moduleName].SubModules[pnlNew:GetText()].OnOpen then
1025+
if subModuleTable.OnOpen then
10231026
local prntPanel
10241027
if luaState == "Client" then
1025-
prntPanel = blobsProfiler.Modules[moduleName].SubModules[pnlNew:GetText()].ClientTab
1028+
prntPanel = subModuleTable.ClientTab
10261029
elseif luaState == "Server" then
1027-
prntPanel = blobsProfiler.Modules[moduleName].SubModules[pnlNew:GetText()].ServerTab
1030+
prntPanel = subModuleTable.ServerTab
10281031
end
1029-
blobsProfiler.Modules[moduleName].SubModules[pnlNew:GetText()].OnOpen(luaState, prntPanel)
1032+
subModuleTable.OnOpen(luaState, prntPanel)
10301033
end
10311034
end
10321035
end
@@ -1066,13 +1069,14 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
10661069
elseif luaState == "Server" then
10671070
moduleData.ServerTab = moduleTab
10681071

1072+
local moduleTable = blobsProfiler.GetModule(moduleName)
10691073
moduleSheet.Tab.PaintOver = function(s,w,h)
10701074
-- 'Total' indicator progress bar of all submodules progress
1071-
if blobsProfiler.Modules[moduleName].childrenReceiving then
1075+
if moduleTable.childrenReceiving then
10721076
local totRecv = 0
10731077
local totChunks = 1
10741078

1075-
for moduleN, moduleRD in pairs(blobsProfiler.Modules[moduleName].childrenReceiving) do
1079+
for moduleN, moduleRD in pairs(moduleTable.childrenReceiving) do
10761080
totRecv = totRecv + (moduleRD.receivedChunks and #moduleRD.receivedChunks or 0)
10771081
totChunks = totChunks + (moduleRD.totalChunks or 1)
10781082
end
@@ -1082,9 +1086,9 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
10821086
local dynamicH = (statePanel.GetActiveTab and statePanel:GetActiveTab() == s) and h-7 or h -- this is SO dumb
10831087
local startY = (statePanel.GetActiveTab and statePanel:GetActiveTab() == s) and 0 or 1
10841088
draw.RoundedBoxEx(4, 0, startY, totalPerc * w, dynamicH, Color(255,255,0,50), true, true)
1085-
elseif blobsProfiler.Modules[moduleName].flashyUpdate then
1089+
elseif moduleTable.flashyUpdate then
10861090
if (statePanel.GetActiveTab and statePanel:GetActiveTab() == s) then -- TODO: DPanel subModuleTabs will never stop flashing
1087-
blobsProfiler.Modules[moduleName].flashyUpdate = nil
1091+
moduleTable.flashyUpdate = nil
10881092
return
10891093
end
10901094

@@ -1095,7 +1099,7 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
10951099
local startY = (statePanel.GetActiveTab and statePanel:GetActiveTab() == s) and 0 or 1
10961100
draw.RoundedBoxEx(4, 0, startY, w, dynamicH, Color(0,255,0,50), true, true)
10971101
end
1098-
elseif blobsProfiler.Modules[moduleName].retrievingData then
1102+
elseif moduleTable.retrievingData then
10991103
local marqueeSpeed = 50 -- Speed of the marquee movement in pixels per second
11001104
local marqueeWidth = 50 -- Width of the marquee rectangle
11011105
local currentTime = CurTime()
@@ -1169,9 +1173,11 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
11691173

11701174
tabClient.OnActiveTabChanged = function(s, pnlOld, pnlNew)
11711175
blobsProfiler.Menu.MenuFrame:SetTitle("blobsProfiler - " .. blobsProfiler.Menu.selectedRealm .. " - " .. pnlNew:GetText())
1176+
local moduleTable = blobsProfiler.GetModule(pnlNew:GetText())
1177+
11721178
if not blobsProfiler.Client[pnlNew:GetText()] then
1173-
if blobsProfiler.Modules[pnlNew:GetText()].UpdateRealmData then
1174-
blobsProfiler.Modules[pnlNew:GetText()]:UpdateRealmData("Client")
1179+
if moduleTable.UpdateRealmData then
1180+
moduleTable:UpdateRealmData("Client")
11751181
end
11761182
end
11771183

@@ -1183,14 +1189,16 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
11831189

11841190
tabServer.OnActiveTabChanged = function(s, pnlOld, pnlNew)
11851191
blobsProfiler.Menu.MenuFrame:SetTitle("blobsProfiler - " .. blobsProfiler.Menu.selectedRealm .. " - " .. pnlNew:GetText())
1192+
local moduleTable = blobsProfiler.GetModule(pnlNew:GetText())
1193+
11861194
if not blobsProfiler.Server[pnlNew:GetText()] then
1187-
if blobsProfiler.Modules[pnlNew:GetText()].UpdateRealmData then
1188-
blobsProfiler.Modules[pnlNew:GetText()].retrievingData = true
1189-
blobsProfiler.Modules[pnlNew:GetText()]:UpdateRealmData("Server")
1195+
if moduleTable.UpdateRealmData then
1196+
moduleTable.retrievingData = true
1197+
moduleTable:UpdateRealmData("Server")
11901198
end
11911199
end
11921200

1193-
if blobsProfiler.Modules[pnlNew:GetText()] and firstSubModule[pnlNew:GetText()] then
1201+
if firstSubModule[pnlNew:GetText()] then
11941202
if firstSubModule[pnlNew:GetText()].data.UpdateRealmData then
11951203
if blobsProfiler.Server[pnlNew:GetText()][firstSubModule[pnlNew:GetText()].name] then return end
11961204
firstSubModule[pnlNew:GetText()].data.retrievingData = true
@@ -1208,45 +1216,28 @@ concommand.Add("blobsprofiler", function(ply, cmd, args, argStr)
12081216
end)
12091217

12101218
local function handleSVDataUpdate(rawModuleName, dataTable)
1211-
local moduleSplit = string.Explode(".", rawModuleName) -- [1] is parent, [2] is submodule
1212-
local moduleName = moduleSplit[1]
1213-
local subModule = nil
1214-
1219+
local moduleTable, parentModule = blobsProfiler.GetModule(rawModuleName)
12151220
blobsProfiler.Log(blobsProfiler.L_DEBUG, "requestData module: ".. rawModuleName)
12161221

1217-
if #moduleSplit == 2 then -- ew
1218-
subModule = moduleSplit[2]
1219-
1220-
if blobsProfiler.Modules[moduleName].childrenReceiving[moduleName .. "." .. subModule] then
1221-
blobsProfiler.Modules[moduleName].childrenReceiving[moduleName .. "." .. subModule] = nil
1222+
if parentModule then
1223+
if parentModule.childrenReceiving[rawModuleName] then
1224+
parentModule.childrenReceiving[rawModuleName] = nil
12221225
end
1223-
end
1224-
1225-
if not subModule then
1226-
if blobsProfiler.Modules[moduleName] then
1227-
blobsProfiler.SetRealmData("Server", moduleName, dataTable)
1228-
blobsProfiler.Modules[moduleName].retrievingData = false
12291226

1230-
blobsProfiler.Modules[moduleName].flashyUpdate = true
1231-
1232-
if blobsProfiler.Modules[moduleName].BuildPanel then
1233-
blobsProfiler.Modules[moduleName].BuildPanel("Server", blobsProfiler.Modules[moduleName].ServerTab)
1234-
blobsProfiler.Log(blobsProfiler.L_DEBUG, "Module.BuildPanel completed for module "..moduleName.. " (Server)")
1235-
end
1236-
end
1227+
parentModule.flashyUpdate = true
12371228
else
1238-
if blobsProfiler.Modules[moduleName] and blobsProfiler.Modules[moduleName].SubModules[subModule] then
1239-
blobsProfiler.SetRealmData("Server", rawModuleName, dataTable)
1240-
blobsProfiler.Modules[moduleName].SubModules[subModule].retrievingData = false
1229+
if moduleTable.childrenReceiving[rawModuleName] then
1230+
moduleTable.childrenReceiving[rawModuleName] = nil
1231+
end
1232+
end
12411233

1242-
blobsProfiler.Modules[moduleName].flashyUpdate = true
1243-
blobsProfiler.Modules[moduleName].SubModules[subModule].flashyUpdate = true
1234+
blobsProfiler.SetRealmData("Server", rawModuleName, dataTable)
1235+
moduleTable.retrievingData = false
1236+
moduleTable.flashyUpdate = true
12441237

1245-
if blobsProfiler.Modules[moduleName].SubModules[subModule].BuildPanel then
1246-
blobsProfiler.Modules[moduleName].SubModules[subModule].BuildPanel("Server", blobsProfiler.Modules[moduleName].SubModules[subModule].ServerTab)
1247-
blobsProfiler.Log(blobsProfiler.L_DEBUG, "Module.BuildPanel completed for ".. moduleName .." submodule ".. subModule.. " (Server)")
1248-
end
1249-
end
1238+
if moduleTable.BuildPanel then
1239+
moduleTable.BuildPanel("Server", moduleTable.ServerTab)
1240+
blobsProfiler.Log(blobsProfiler.L_DEBUG, "Module.BuildPanel completed for ".. rawModuleName .. " (Server)")
12501241
end
12511242
end
12521243

@@ -1274,6 +1265,7 @@ net.Receive("blobsProfiler:requestData", function()
12741265

12751266
table.insert(blobsProfiler.chunkModuleData[moduleName].receivedChunks, chunkData)
12761267

1268+
-- using blobsProfiler.Modules is acceptable here because it would look shit using .GetModule (i tried)
12771269
blobsProfiler.Modules[moduleParent].childrenReceiving = blobsProfiler.Modules[moduleParent].childrenReceiving or {}
12781270
blobsProfiler.Modules[moduleParent].childrenReceiving[moduleName] = blobsProfiler.chunkModuleData[moduleName]
12791271

lua/blobsprofiler/server/sv_blobsprofiler.lua

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -107,46 +107,41 @@ local function sendDataToClient(ply, moduleName, dataTbl)
107107
sendNextChunk()
108108
end
109109

110+
local function transformModuleNameForPermissionsCheck(moduleName)
111+
-- Example: Takes 'Lua.Globals' and turns it into {'Lua', 'Lua_Globals'}
112+
local part1, part2 = string.match(moduleName, "([^%.]+)%.(.+)")
113+
114+
if part1 and part2 then
115+
return { part1, part1 .. "_" .. part2 }
116+
else
117+
return { moduleName }
118+
end
119+
end
120+
110121
net.Receive("blobsProfiler:requestData", function(l, ply)
111122
if not blobsProfiler.CanAccess(ply, "serverData") then return end
112-
blobsProfiler.Log(blobsProfiler.L_DEBUG, "requestData NW")
113-
114-
local rawDataModule = net.ReadString()
115-
local moduleSplit = string.Explode(".", rawDataModule) -- [1] is parent, [2] is submodule
116-
local dataModule = moduleSplit[1]
117-
local subModule = nil
123+
local rawModuleName = net.ReadString()
124+
blobsProfiler.Log(blobsProfiler.L_DEBUG, "requestData SV: ".. rawModuleName)
118125

119-
if #moduleSplit == 2 then -- ew
120-
subModule = moduleSplit[2]
126+
local permStrs = transformModuleNameForPermissionsCheck(rawModuleName)
127+
for k, v in ipairs(permStrs) do
128+
if not blobsProfiler.CanAccess(ply, "serverData"..v) then return end -- Passing 'Lua.Globals' will check 'serverData_Lua' & 'serverData_Lua_Globals'
121129
end
122130

123-
if not blobsProfiler.Modules[dataModule] then return end
124-
blobsProfiler.Log(blobsProfiler.L_DEBUG, "Valid module: ".. dataModule)
125-
if not blobsProfiler.CanAccess(ply, "serverData_".. dataModule) then return end
131+
local moduleTable, parentModuleTable = blobsProfiler.GetModule(rawModuleName)
126132

127133
local dataTbl
128-
if subModule then
129-
if not blobsProfiler.Modules[dataModule].SubModules[subModule] then return end
130-
blobsProfiler.Log(blobsProfiler.L_DEBUG, "Valid ".. dataModule .." sub-module: ".. subModule)
131-
if not blobsProfiler.CanAccess(ply, "serverData_".. dataModule .. "_" .. subModule) then return end
132134

133-
if blobsProfiler.Modules[dataModule].SubModules[subModule].PrepServerData then
134-
dataTbl = blobsProfiler.Modules[dataModule].SubModules[subModule]:PrepServerData()
135-
end
136-
else
137-
if blobsProfiler.Modules[dataModule].PrepServerData then
138-
dataTbl = blobsProfiler.Modules[dataModule]:PrepServerData()
139-
end
135+
if moduleTable and moduleTable.PrepServerData then
136+
dataTbl = moduleTable:PrepServerData()
137+
blobsProfiler.Log(blobsProfiler.L_DEBUG, "Module: ".. rawModuleName .. " PrepServerData() called!")
140138
end
141139

142140
if not dataTbl then
143-
blobsProfiler.Log(blobsProfiler.L_NH_ERROR, "Module: ".. rawDataModule .." did not return data in PrepServerData!")
141+
blobsProfiler.Log(blobsProfiler.L_NH_ERROR, "Module: ".. rawModuleName .." did not return data in PrepServerData()!")
144142
dataTbl = {}
145143
end
146144

147-
--dataTbl = util.Compress(util.TableToJSON(dataTbl))
148-
--netstream.Heavy(ply, "blobsProfiler:requestData", rawDataModule, dataTbl)
149-
sendDataToClient(ply, rawDataModule, dataTbl)
150-
151-
blobsProfiler.Log(blobsProfiler.L_DEBUG, "Module: ".. rawDataModule .." data sent to client!")
145+
sendDataToClient(ply, rawModuleName, dataTbl)
146+
blobsProfiler.Log(blobsProfiler.L_DEBUG, "Module: ".. rawModuleName .." data sent to client!")
152147
end)

lua/blobsprofiler/shared/sh_modules.lua

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,24 +14,22 @@ blobsProfiler.RegisterSubModule = function(ParentModule, Name, ModuleConfig)
1414
print("[blobsProfiler] ".. ParentModule .." SubModule: ".. Name .." - Loaded!")
1515
end
1616

17-
blobsProfiler.GetRCFunctionsTable = function(fullModuleName)
17+
blobsProfiler.GetModule = function(fullModuleName)
1818
local splitModuleName = string.Explode(".", fullModuleName)
1919

2020
if #splitModuleName == 1 then
21-
return blobsProfiler.Modules[splitModuleName[1]].RCFunctions or blobsProfiler.Menu.RCFunctions_DEFAULT
21+
return blobsProfiler.Modules[splitModuleName[1]]
2222
else
23-
return blobsProfiler.Modules[splitModuleName[1]].SubModules[splitModuleName[2]].RCFunctions or blobsProfiler.Menu.RCFunctions_DEFAULT
23+
return blobsProfiler.Modules[splitModuleName[1]].SubModules[splitModuleName[2]], blobsProfiler.Modules[splitModuleName[1]]
2424
end
2525
end
2626

27-
blobsProfiler.GetIconOverrides = function(fullModuleName)
28-
local splitModuleName = string.Explode(".", fullModuleName)
29-
30-
if #splitModuleName == 1 then
31-
return blobsProfiler.Modules[splitModuleName[1]].TypeIconOverride
32-
else
33-
return blobsProfiler.Modules[splitModuleName[1]].SubModules[splitModuleName[2]].TypeIconOverride
34-
end
27+
blobsProfiler.GetRCFunctionsTable = function(fullModuleName)
28+
local moduleTable = blobsProfiler.GetModule(fullModuleName)
29+
return moduleTable.RCFunctions or blobsProfiler.Menu.RCFunctions_DEFAULT
30+
end
3531

36-
return nil
32+
blobsProfiler.GetIconOverrides = function(fullModuleName)
33+
local moduleTable = blobsProfiler.GetModule(fullModuleName)
34+
return moduleTable.TypeIconOverride or nil
3735
end

0 commit comments

Comments
 (0)