32 lines
1.7 KiB
Lua
32 lines
1.7 KiB
Lua
-- Read exact repository inheritance; private base fields are not returned by
|
|
-- GetField on the concrete type. No repository initialization or constructors.
|
|
do local function capture()
|
|
local s=_G.__gacComicRepoHierarchy1 or {target=1,index=0};_G.__gacComicRepoHierarchy1=s
|
|
if s.done then return end
|
|
local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),62)
|
|
local names={'CycleConfigRepository','LevelConfigRepository'}
|
|
if s.target>#names then s.done=true;return end
|
|
local m=CS.RPG.Client.GlobalVars.s_ModuleManager.ComicDessertModule
|
|
local value=m and m[names[s.target]];if not value then return end
|
|
local log=function(v)CS.UnityEngine.Debug.Log('[GAC_COMIC_REPO_HIERARCHY] '..tostring(v))end
|
|
if not s.t then s.t=value:GetType()end
|
|
if not s.fields then s.fields=s.t:GetFields(flags);s.index=0;log('TYPE '..names[s.target]..' '..s.t.FullName)end
|
|
for n=1,8 do
|
|
if s.index>=s.fields.Length then
|
|
s.t=s.t.BaseType;s.fields=nil
|
|
if not s.t or s.t.FullName=='System.Object'then s.target=s.target+1;s.t=nil end
|
|
return
|
|
end
|
|
local f=s.fields[s.index];s.index=s.index+1
|
|
if not f.IsStatic then
|
|
local v=f:GetValue(value)
|
|
log('FIELD '..f.Name..' TYPE '..f.FieldType.FullName..' NULL '..tostring(v==nil))
|
|
if v and f.FieldType.FullName:find('System.Collections.Generic.Dictionary',1,true) then
|
|
log('DICTIONARY '..names[s.target]..' FIELD '..f.Name..' COUNT '..v.Count)
|
|
_G.__GAC_COMIC_CAPTURE_REPOSITORIES=_G.__GAC_COMIC_CAPTURE_REPOSITORIES or {}
|
|
_G.__GAC_COMIC_CAPTURE_REPOSITORIES[names[s.target]]=v
|
|
end
|
|
end
|
|
end
|
|
end local ok,e=pcall(capture);if not ok then _G.__gacComicRepoHierarchy1={done=true};CS.UnityEngine.Debug.Log('[GAC_COMIC_REPO_HIERARCHY] ERROR '..tostring(e))end end
|