mirror of
https://github.com/mehah/otclient
synced 2026-08-15 16:29:06 -04:00
167 lines
4.8 KiB
Lua
167 lines
4.8 KiB
Lua
local debugInfoWindow = nil
|
|
local debugInfoButton = nil
|
|
local luaStats = nil
|
|
local luaCallback = nil
|
|
local mainStats = nil
|
|
local dispatcherStats = nil
|
|
local render = nil
|
|
local atlas = nil
|
|
local adaptiveRender = nil
|
|
local slowMain = nil
|
|
local slowRender = nil
|
|
local widgetsInfo = nil
|
|
local widgetsInfoToggle = nil
|
|
local packets = nil
|
|
local slowPackets = nil
|
|
|
|
local updateEvent = nil
|
|
local monitorEvent = nil
|
|
local iter = 0
|
|
local fps = {}
|
|
local ping = {}
|
|
local widgetsInfoEnabled = false
|
|
|
|
function init()
|
|
debugInfoButton = modules.client_topmenu.addTopRightToggleButton("debugInfoButton", tr("Debug Info"),
|
|
"/images/topbuttons/debug", toggle)
|
|
debugInfoButton:setOn(false)
|
|
|
|
debugInfoWindow = g_ui.displayUI("debug_info")
|
|
debugInfoWindow:hide()
|
|
|
|
Keybind.new("Debug", "Toggle Stats", "Ctrl+Alt+D", "")
|
|
Keybind.bind("Debug", "Toggle Stats", {
|
|
{
|
|
type = KEY_DOWN,
|
|
callback = toggle,
|
|
}
|
|
})
|
|
|
|
luaStats = debugInfoWindow:recursiveGetChildById("luaStats")
|
|
luaCallback = debugInfoWindow:recursiveGetChildById("luaCallback")
|
|
mainStats = debugInfoWindow:recursiveGetChildById("mainStats")
|
|
dispatcherStats = debugInfoWindow:recursiveGetChildById("dispatcherStats")
|
|
render = debugInfoWindow:recursiveGetChildById("render")
|
|
atlas = debugInfoWindow:recursiveGetChildById("atlas")
|
|
packets = debugInfoWindow:recursiveGetChildById("packets")
|
|
adaptiveRender = debugInfoWindow:recursiveGetChildById("adaptiveRender")
|
|
slowMain = debugInfoWindow:recursiveGetChildById("slowMain")
|
|
slowRender = debugInfoWindow:recursiveGetChildById("slowRender")
|
|
slowPackets = debugInfoWindow:recursiveGetChildById("slowPackets")
|
|
widgetsInfo = debugInfoWindow:recursiveGetChildById("widgetsInfo")
|
|
widgetsInfoToggle = debugInfoWindow:recursiveGetChildById("widgetsInfoToggle")
|
|
if widgetsInfoToggle then
|
|
widgetsInfoToggle:setChecked(false)
|
|
widgetsInfoToggle.onCheckChange = function(_, checked)
|
|
widgetsInfoEnabled = checked
|
|
if checked then
|
|
widgetsInfo:setVisible(true)
|
|
widgetsInfo:setText(g_stats.getWidgetsInfo(10, true))
|
|
else
|
|
widgetsInfo:setText("")
|
|
widgetsInfo:setHeight(0)
|
|
widgetsInfo:setVisible(false)
|
|
end
|
|
end
|
|
end
|
|
widgetsInfo:setText("")
|
|
widgetsInfo:setHeight(0)
|
|
widgetsInfo:setVisible(false)
|
|
|
|
if adaptiveRender then
|
|
adaptiveRender:setText("Adaptive renderer not available")
|
|
end
|
|
if atlas then
|
|
atlas:setText("Atlas: " .. g_atlas.getStats())
|
|
end
|
|
|
|
g_stats.resetSleepTime()
|
|
lastSleepTimeReset = g_clock.micros()
|
|
|
|
updateEvent = scheduleEvent(update, 2000)
|
|
monitorEvent = scheduleEvent(monitor, 1000)
|
|
end
|
|
|
|
function terminate()
|
|
debugInfoWindow:destroy()
|
|
debugInfoButton:destroy()
|
|
|
|
Keybind.delete("Debug", "Toggle Stats")
|
|
|
|
removeEvent(updateEvent)
|
|
removeEvent(monitorEvent)
|
|
end
|
|
|
|
function onClose()
|
|
debugInfoButton:setOn(false)
|
|
end
|
|
|
|
function onMiniWindowClose()
|
|
onClose()
|
|
end
|
|
|
|
function toggle()
|
|
if debugInfoButton:isOn() then
|
|
debugInfoWindow:hide()
|
|
debugInfoButton:setOn(false)
|
|
else
|
|
debugInfoWindow:show()
|
|
debugInfoWindow:raise()
|
|
debugInfoWindow:focus()
|
|
debugInfoButton:setOn(true)
|
|
end
|
|
end
|
|
|
|
function monitor()
|
|
if #fps > 1000 then
|
|
fps = {}
|
|
end
|
|
if #ping > 1000 then
|
|
ping = {}
|
|
end
|
|
table.insert(fps, g_app.getFps())
|
|
table.insert(ping, g_game.getPing())
|
|
monitorEvent = scheduleEvent(monitor, 1000)
|
|
end
|
|
|
|
function update()
|
|
updateEvent = scheduleEvent(update, 20)
|
|
|
|
if not debugInfoWindow:isVisible() then
|
|
return
|
|
end
|
|
|
|
iter = (iter + 1) % 8 -- some functions are slow (~5ms), it will avoid lags
|
|
if iter == 0 then
|
|
debugInfoWindow.debugPanel.sleepTime:setText("GFPS: " .. g_app.getGraphicsFps() .. " PFPS: " .. g_app.getProcessingFps() .. " Packets: " .. g_game.getRecivedPacketsCount() .. " , " .. (g_game.getRecivedPacketsSize() / 1024) .. " KB")
|
|
debugInfoWindow.debugPanel.luaRamUsage:setText("Ram usage by lua: " .. gcinfo() .. " kb")
|
|
elseif iter == 1 then
|
|
atlas:setText("Atlas: " .. g_atlas.getStats())
|
|
render:setText(g_stats.get(2, 10, true))
|
|
mainStats:setText(g_stats.get(1, 5, true))
|
|
dispatcherStats:setText(g_stats.get(3, 5, true))
|
|
elseif iter == 2 then
|
|
luaStats:setText(g_stats.get(4, 5, true))
|
|
luaCallback:setText(g_stats.get(5, 5, true))
|
|
elseif iter == 3 then
|
|
slowMain:setText(g_stats.getSlow(3, 10, 10, true) .. "\n\n\n" .. g_stats.getSlow(1, 20, 20, true))
|
|
elseif iter == 4 then
|
|
slowRender:setText(g_stats.getSlow(2, 10, 10, true))
|
|
elseif iter == 5 then
|
|
if widgetsInfoEnabled then
|
|
widgetsInfo:setText(g_stats.getWidgetsInfo(10, true))
|
|
end
|
|
elseif iter == 6 then
|
|
packets:setText(g_stats.get(6, 10, true))
|
|
slowPackets:setText(g_stats.getSlow(6, 10, 10, true))
|
|
elseif iter == 7 then
|
|
if g_proxy then
|
|
local text = ""
|
|
local proxiesDebug = g_proxy.getProxiesDebugInfo()
|
|
for proxy_name, proxy_debug in pairs(proxiesDebug) do
|
|
text = text .. proxy_name .. " - " .. proxy_debug .. "\n"
|
|
end
|
|
debugInfoWindow.debugPanel.proxies:setText(text)
|
|
end
|
|
end
|
|
end
|