Skip to content

Commit fad199a

Browse files
committed
Fixed issues with InteractiveControl integration and multiplayer
1 parent 0a45f69 commit fad199a

1 file changed

Lines changed: 32 additions & 23 deletions

File tree

scripts/extensions/InteractiveControlExtension.lua

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
---@class InteractiveFunctionsParams
55
---@field posFunc fun(target: MaterialProcessor, data: any, noEventSend: boolean | nil)
66
---@field negFunc? fun(target: MaterialProcessor, data: any, noEventSend: boolean | nil)
7-
---@field updateFunc? fun(target: MaterialProcessor): boolean | nil
8-
---@field isBlockedFunc? fun(target: MaterialProcessor): boolean
7+
---@field updateFunc? fun(target: MaterialProcessor): boolean?
8+
---@field isBlockedFunc? fun(target: MaterialProcessor): boolean?
99

1010
---@class InteractiveControlExtension
1111
InteractiveControlExtension = {}
@@ -44,23 +44,23 @@ end
4444
function InteractiveControlExtension:registerConfigurationFunction(icf)
4545
if icf.addFunction('PROCESSOR_CONTROL_PANEL',
4646
{
47-
posFunc = function (target)
48-
---@type MaterialProcessor_spec
49-
local spec = target[MaterialProcessor.SPEC_NAME]
47+
posFunc = function (target, data, noEventSend)
48+
if noEventSend then
49+
return
50+
end
5051

51-
if spec ~= nil then
52+
if target.isClient and target[MaterialProcessor.SPEC_NAME] ~= nil then
5253
MaterialProcessor.actionEventOpenDialog(target)
5354
end
5455
end,
5556
isBlockedFunc = function (target)
56-
---@type MaterialProcessor_spec
57-
local spec = target[MaterialProcessor.SPEC_NAME]
57+
if g_client ~= nil and target.getProcessor ~= nil then
58+
local processor = target:getProcessor()
5859

59-
if spec ~= nil then
60-
return #spec.processor.configurations > 0
60+
return #processor.configurations > 0
6161
end
6262

63-
return false
63+
return nil
6464
end
6565
}
6666
) then
@@ -72,27 +72,36 @@ end
7272
function InteractiveControlExtension:registerToggleDischargeToGroundFunction(icf)
7373
if icf.addFunction('PROCESSOR_TOGGLE_DISCHARGE_GROUND',
7474
{
75-
posFunc = function (target)
76-
---@type MaterialProcessor_spec
77-
local spec = target[MaterialProcessor.SPEC_NAME]
75+
posFunc = function (target, data, noEventSend)
76+
if noEventSend then
77+
return
78+
end
79+
80+
if target.getProcessor ~= nil then
81+
local processor = target:getProcessor()
7882

79-
if spec ~= nil and spec.processor.canToggleDischargeToGround then
80-
MaterialProcessor.actionEventToggleDischargeToGround(target)
83+
if processor.canToggleDischargeToGround then
84+
MaterialProcessor.actionEventToggleDischargeToGround(target)
85+
end
8186
end
8287
end,
8388
updateFunc = function (target)
84-
---@type MaterialProcessor_spec
85-
local spec = target[MaterialProcessor.SPEC_NAME]
89+
if target.getProcessor ~= nil then
90+
local processor = target:getProcessor()
8691

87-
if spec ~= nil then
88-
return spec.processor.canDischargeToGround
92+
return processor.canDischargeToGround
8993
end
94+
95+
return nil
9096
end,
9197
isBlockedFunc = function (target)
92-
---@type MaterialProcessor_spec
93-
local spec = target[MaterialProcessor.SPEC_NAME]
98+
if target.getProcessor ~= nil then
99+
local processor = target:getProcessor()
100+
101+
return processor.canToggleDischargeToGround
102+
end
94103

95-
return spec ~= nil and spec.processor.canToggleDischargeToGround
104+
return nil
96105
end
97106
}
98107
) then

0 commit comments

Comments
 (0)