Files
GaCy-GO/tools/cw_run_method_handles.lua
T

32 lines
1.6 KiB
Lua
Raw Normal View History

-- Named runtime method handles only; one method per heartbeat, no invocation.
do
local targets={
{'RPG.Client.GridFightModule','_StartTutorialLevel'},
{'RPG.Client.GridFightStageNode','_RefreshCachedFields'},
{'RPG.Client.GridFightStageNode','UpdateRouteNode'},
{'RPG.Client.GridFightGameSession','Sync'},
{'RPG.GameCore.GameCoreConfigLoader','LoadJsonConfig'},
{'RPG.GameCore.GameCoreConfigLoader','LoadGridFightStageTemplateConfig'}
}
_G.__gacCwRunHandles1=_G.__gacCwRunHandles1 or 1
local index=_G.__gacCwRunHandles1
if index>#targets then return end
local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60)
local manager=CS.RPG.Client.GlobalVars.s_GamePhaseManager
local phase=manager and typeof(CS.RPG.Client.GamePhaseManager):GetField('_CurrentPhase',flags):GetValue(manager)
if not phase or typeof(CS.RPG.Client.BattleGamePhase):IsInstanceOfType(phase)then return end
_G.__gacCwRunHandles1=index+1
local log=function(v)CS.UnityEngine.Debug.Log('[GAC_CW_RUN_HANDLE] '..tostring(v))end
local good,result=pcall(function()
local name,method=targets[index][1],targets[index][2]
local a=typeof(CS.RPG.Client.GridFightModule).Assembly
local b=typeof(CS.RPG.GameCore.GridFightRoleConfigRow).Assembly
local t=a:GetType(name) or b:GetType(name)
if not t then return name..' TYPE_MISSING' end
local m=t:GetMethod(method,flags)
if not m then return name..' '..method..' METHOD_MISSING' end
return name..' '..method..' '..tostring(m.MethodHandle.Value)..' signature='..tostring(m)
end)
log(tostring(good)..' '..tostring(result))
if index==#targets then log('END')end
end