-- Current loaded props only; table IDs substituted from captured room config. do local ids=__PROP_IDS__ local function log(v)CS.UnityEngine.Debug.Log('[GAC_CW_TABLE_STATE] '..tostring(v))end _G.__gacCwTableState2=_G.__gacCwTableState2 or {index=0,hits=0} local state=_G.__gacCwTableState2 if not state.done then local ok,err=pcall(function() local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60) if not state.rows then local map=CS.RPG.Client.GlobalVars.s_ModuleManager.AdventureModule.MapDef local collection=map.AllMapEntityDefs state.rows=collection:GetType():GetField('BPPKNKJBABP',flags):GetValue(collection) log('BEGIN '..state.rows.Count) for _,id in ipairs(ids)do local row=CS.RPG.GameCore.PropExcelTable.GetData(id) log('PROP_ROW '..row.ID..' path='..tostring(row.JsonPath)..' states='..CS.Newtonsoft.Json.JsonConvert.SerializeObject(row.PropStateList)) end end for i=state.index,math.min(state.index+31,state.rows.Count-1)do local p=state.rows[i] for _,id in ipairs(ids)do if p.PropID==id then state.hits=state.hits+1 log('MATCH '..p.PropID) for _,name in ipairs({'ID','GroupID','InstID','EntityID','PropState','State','IsActive','IsClientOnly','IsLoaded','IsDelete'})do local good,value=pcall(function()return p[name]end) if good and type(value)~='userdata' and type(value)~='table' then log('VALUE '..name..' '..tostring(value))end end local methods=p:GetType():GetMethods(flags) for j=0,methods.Length-1 do local m=methods[j] if m.DeclaringType==p:GetType() and (m.Name:find('State')or m.Name:find('Entity')or m.Name:find('Active'))then log('METHOD '..tostring(m))end end end end end state.index=state.index+32 if state.index>=state.rows.Count then state.done=true;log('END hits='..state.hits)end end) if not ok then state.done=true;log('ERROR '..tostring(err))end end end