31 lines
1.8 KiB
Lua
31 lines
1.8 KiB
Lua
-- Narrow metadata/read-only scalar state from the already resolved CW panel.
|
|
-- At most eight members per heartbeat; no assembly scan or gameplay calls.
|
|
do local function capture()
|
|
local s=_G.__gacCwBookActivityMetadata1 or {index=0,target=1};_G.__gacCwBookActivityMetadata1=s
|
|
if s.done then return end
|
|
local function log(v)CS.UnityEngine.Debug.Log('[GAC_CW_BOOK_ACTIVITY] '..tostring(v))end
|
|
local ok,err=pcall(function()
|
|
if not s.objects then
|
|
local class=package.loaded['Ui.DailyMission.Rogue.GridFight.HandbookRogueGridFightTabItem']
|
|
local constants
|
|
for i=1,16 do local n,v=debug.getupvalue(class._on_click_go,i);if not n then break end;if n=='_GRID_FIGHT_CONSTANTS'then constants=v;break end end
|
|
local panel=CS.RPG.Client.GlobalVars.s_ModuleManager.ActivityModule:GetPanelData(constants.ActivityID)
|
|
if not panel or not panel.StateData then error('Resolved CW panel/state unavailable')end
|
|
s.objects={panel.StateData,panel};s.flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60)
|
|
end
|
|
local value=s.objects[s.target]
|
|
if not s.members then
|
|
local t=value:GetType();s.members=t:GetFields(s.flags)
|
|
log('TYPE '..t.FullName..' FIELDS '..s.members.Length)
|
|
end
|
|
for i=s.index,math.min(s.index+7,s.members.Length-1)do
|
|
local m=s.members[i];local v=m:GetValue(value)
|
|
local text=v==nil and 'nil' or (m.FieldType.IsPrimitive or m.FieldType.IsEnum or m.FieldType.FullName=='System.String') and tostring(v) or tostring(m.FieldType.FullName)
|
|
log('FIELD '..m.Name..' TYPE '..m.FieldType.FullName..' VALUE '..text)
|
|
end
|
|
s.index=s.index+8
|
|
if s.index>=s.members.Length or s.index>=64 then s.members=nil;s.index=0;s.target=s.target+1;if s.target>#s.objects then s.done=true;log('END')end end
|
|
end)
|
|
if not ok then s.done=true;log('ERROR '..tostring(err))end
|
|
end;capture()end
|