规则包加载流程优化
This commit is contained in:
@@ -62,10 +62,7 @@ return {
|
|||||||
mindas=0,minarr=0,minsdarr=0,
|
mindas=0,minarr=0,minsdarr=0,
|
||||||
noInitSZO=false,
|
noInitSZO=false,
|
||||||
|
|
||||||
mesDisp={},
|
-- Some Events are registered in player/init.lua, see "tableNeedMerge"
|
||||||
hook_drop={},
|
|
||||||
hook_die={},
|
|
||||||
task={},
|
|
||||||
extraEvent={
|
extraEvent={
|
||||||
{'attack',4},
|
{'attack',4},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -236,17 +236,7 @@ local function _loadRemoteEnv(P,confStr)-- Load gameEnv
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
local function _mergeFuncTable(f,L)
|
local tableNeedMerge={
|
||||||
if type(f)=='function' then
|
|
||||||
ins(L,f)
|
|
||||||
elseif type(f)=='table' then
|
|
||||||
for i=1,#f do
|
|
||||||
ins(L,f[i])
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return L
|
|
||||||
end
|
|
||||||
local hooks = {
|
|
||||||
'task',
|
'task',
|
||||||
'mesDisp',
|
'mesDisp',
|
||||||
'hook_left',
|
'hook_left',
|
||||||
@@ -260,35 +250,62 @@ local hooks = {
|
|||||||
'hook_spawn',
|
'hook_spawn',
|
||||||
'hook_hold',
|
'hook_hold',
|
||||||
'hook_die',
|
'hook_die',
|
||||||
|
'extraEvent',
|
||||||
}
|
}
|
||||||
|
local function _mergeFuncTable(f,L)
|
||||||
|
if type(f)=='function' then
|
||||||
|
ins(L,f)
|
||||||
|
elseif type(f)=='table' then
|
||||||
|
for i=1,#f do
|
||||||
|
ins(L,f[i])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return L
|
||||||
|
end
|
||||||
local function _applyGameEnv(P)-- Finish gameEnv processing
|
local function _applyGameEnv(P)-- Finish gameEnv processing
|
||||||
local ENV=P.gameEnv
|
local ENV=P.gameEnv
|
||||||
|
|
||||||
-- Apply events
|
-- Create event tables
|
||||||
for i=1,#hooks do
|
for i=1,#tableNeedMerge do
|
||||||
ENV[hooks[i]]=_mergeFuncTable(ENV[hooks[i]],{})
|
ENV[tableNeedMerge[i]]=_mergeFuncTable(ENV[tableNeedMerge[i]],{})
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Apply eventSet
|
-- Apply eventSet
|
||||||
if ENV.eventSet and ENV.eventSet~="X" then
|
while true do
|
||||||
if type(ENV.eventSet)=='string' then
|
if not (ENV.eventSet and ENV.eventSet~="X") then
|
||||||
local eventSet=require('parts.eventsets.'..ENV.eventSet)
|
break
|
||||||
if eventSet then
|
end
|
||||||
for k,v in next,eventSet do
|
if type(ENV.eventSet)~='string' then
|
||||||
if TABLE.find(hooks,k) then
|
MES.new('warn',"Wrong event set type: "..type(ENV.eventSet))
|
||||||
_mergeFuncTable(v,ENV[k])
|
break
|
||||||
elseif type(v)=='table' then
|
end
|
||||||
ENV[k]=TABLE.copy(v)
|
local eventSet=require('parts.eventsets.'..ENV.eventSet)
|
||||||
|
if not eventSet then
|
||||||
|
MES.new('warn',"No event set called: "..ENV.eventSet)
|
||||||
|
break
|
||||||
|
end
|
||||||
|
for k,v in next,eventSet do
|
||||||
|
if k=='extraEventHandler' then
|
||||||
|
for ev,handler in next,v do
|
||||||
|
if ENV.extraEventHandler[ev] then
|
||||||
|
local prevHandler=ENV.extraEventHandler[ev]
|
||||||
|
ENV.extraEventHandler[ev]=function(...)
|
||||||
|
prevHandler(...)
|
||||||
|
handler(...)
|
||||||
|
end
|
||||||
else
|
else
|
||||||
ENV[k]=v
|
ENV.extraEventHandler[ev]=handler
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
elseif TABLE.find(tableNeedMerge,k) then
|
||||||
|
_mergeFuncTable(v,ENV[k])
|
||||||
|
elseif type(v)=='table' then
|
||||||
|
ENV[k]=TABLE.copy(v)
|
||||||
else
|
else
|
||||||
MES.new('warn',"No event set called: "..ENV.eventSet)
|
ENV[k]=v
|
||||||
end
|
end
|
||||||
else
|
|
||||||
MES.new('warn',"Wrong event set type: "..type(ENV.eventSet))
|
|
||||||
end
|
end
|
||||||
|
break
|
||||||
end
|
end
|
||||||
|
|
||||||
P._20G=ENV.drop==0
|
P._20G=ENV.drop==0
|
||||||
|
|||||||
Reference in New Issue
Block a user