Skip to content

Commit 67cbe4a

Browse files
Fix small Wire runtime edge cases (#3649)
* fix: keep reviewed wire runtime fixes * fix: drop fpga operator change * chore: split passed review fixes * fix: keep wirenet fallback inline * fix: remove unused signal helper * fix: align reviewed network payload changes * fix: drop redundant compression size check * Code cleanups + less networking Should save 1 byte per file/folder and 2 bytes per message * Small styling * Simplify --------- Co-authored-by: Astralcircle <142503363+Astralcircle@users.noreply.github.com>
1 parent e6eea38 commit 67cbe4a

4 files changed

Lines changed: 28 additions & 24 deletions

File tree

lua/entities/gmod_wire_expression2/core/cl_files.lua

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -86,20 +86,20 @@ end)
8686
--- File List ---
8787

8888
net.Receive( "wire_expression2_request_list", function()
89-
local dir = process_filepath(net.ReadString())
89+
local directory = process_filepath(net.ReadString())
90+
local files, folders = file.Find(directory .. "*","DATA")
9091

9192
net.Start("wire_expression2_file_list")
92-
local files, folders = file.Find( dir .. "*","DATA" )
93-
net.WriteUInt(#files + #folders, 16)
94-
for _,fop in pairs(files) do
95-
if string.GetExtensionFromFilename( fop ) == "txt" then
96-
net.WriteUInt(#fop, 16)
97-
net.WriteData(fop)
98-
end
99-
end
100-
for _,fop in pairs(folders) do
101-
net.WriteUInt(#fop, 16)
102-
net.WriteData(fop .. "/")
93+
94+
for _, filename in ipairs(files) do
95+
if string.GetExtensionFromFilename(filename) == "txt" then
96+
net.WriteString(filename)
10397
end
98+
end
99+
100+
for _, folder in ipairs(folders) do
101+
net.WriteString(folder .. "/")
102+
end
103+
104104
net.SendToServer()
105105
end)

lua/entities/gmod_wire_expression2/core/files.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -443,8 +443,8 @@ net.Receive("wire_expression2_file_list", function(_, ply)
443443

444444
timer.Remove("wire_expression2_filelist_check_timeout_" .. ply:EntIndex())
445445

446-
for i=1, net.ReadUInt(16) do
447-
table.insert(plist.data, net.ReadData(net.ReadUInt(16)))
446+
while net.BytesLeft() > 0 do
447+
table.insert(plist.data, net.ReadString())
448448
end
449449

450450
plist.uploaded = true

lua/entities/gmod_wire_expression2/core/signal.lua

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,6 @@ local function broadcastSignal(group, name, scope, sender, filter_player)
9191
end
9292
end
9393

94-
--local function table_IsEmpty(t) return not pairs(t)(t) end
95-
local function table_IsEmpty(t) return not next(t) end
96-
9794
local function setGroup(self, group)
9895
-- set the current group to the new group
9996
self.data.signalgroup = group
@@ -241,8 +238,8 @@ __e2setcost(20)
241238

242239
--- sends signal S to chips owned by the given player, multiple calls for different players do not overwrite each other
243240
e2function void signalSendToPlayer(string name, entity player)
244-
if not IsValid(player) then return end
245-
broadcastSignal(self.data.signalgroup, name, 1, self.entity, player)
241+
if not IsValid(player) or not player:IsPlayer() then return end
242+
broadcastSignal(self.data.signalgroup, name, 1, self.entity, player:UniqueID())
246243
end
247244

248245
--[[************************************************************************]]--
@@ -253,14 +250,16 @@ registerCallback("construct",function(self)
253250
end)
254251

255252
registerCallback("destruct",function(self)
253+
local receiverid = self.entity:EntIndex()
254+
256255
-- loop through all scopes, ...
257256
for scope,groups in pairs_ac(scopes) do
258257
-- ... all groups ...
259258
for group, signals in pairs_ac(groups) do
260259
-- ... and all signals ...
261260
for name, contexts in pairs_ac(signals) do
262261
-- to remove all signals the chip registered for.
263-
contexts[self] = nil
262+
contexts[receiverid] = nil
264263
end
265264
end
266265
end

lua/wire/wirenet.lua

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,15 @@ if SERVER then
4949
local data = table.concat(tbl)
5050

5151
if #data < 4096 then
52-
data = util.Compress(data)
52+
local compressed = util.Compress(data)
5353
net.WriteBool(false)
54-
net.WriteUInt(#data, 12)
55-
net.WriteData(data)
54+
55+
if compressed then
56+
net.WriteUInt(#compressed, 12)
57+
net.WriteData(compressed)
58+
else
59+
net.WriteUInt(0, 12)
60+
end
5661
else
5762
net.WriteBool(true)
5863
net.WriteStream(data, nil, false)
@@ -207,4 +212,4 @@ function Net.Trivial.Receive(name, callback)
207212
update_handlers(name:lower(), callback)
208213
end
209214

210-
Net.Receivers = registered_handlers
215+
Net.Receivers = registered_handlers

0 commit comments

Comments
 (0)