You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
1.9 KiB

-- Chat and Print functionality
local _, app = ...;
local print
= print
app.print = function(...)
print(app.L.SHORTTITLE, ...);
end
app.report = function(...)
if ... then
app.print(...);
end
app.print(app.Version..": "..app.L.PLEASE_REPORT_MESSAGE);
end
-- Consolidated debug-only print with preceding precise timestamp
local GetTimePreciseSec = GetTimePreciseSec;
local DEBUG_PRINT_LAST;
app.PrintDebug = function(...)
DEBUG_PRINT_LAST = GetTimePreciseSec();
if app.Debugging then print(DEBUG_PRINT_LAST,...) end
end
-- Consolidated debug-only print with precise frame duration since last successful print
app.PrintDebugPrior = function(...)
if app.Debugging then
local now = GetTimePreciseSec();
if DEBUG_PRINT_LAST then
local diff = now - DEBUG_PRINT_LAST;
print(now,"<>",diff,"Stutter @", math.ceil(1 / diff), ...)
else
print(now,0,...)
end
DEBUG_PRINT_LAST = GetTimePreciseSec();
end
end
app.PrintTable = function(t,depth)
-- only allowing table prints when Debug print is active
if not app.Debugging then return; end
if t == nil then print("nil"); return; end
if type(t) ~= "table" then print(type(t),t); return; end
depth = depth or 0;
if depth == 0 then app._PrintTable = {}; end
local p = "";
for i=1,depth,1 do
p = p .. "-";
end
-- dont accidentally recursively print the same table
if not app._PrintTable[t] then
app._PrintTable[t] = true;
print(p,tostring(t),"__type",t.__type," {");
for k,v in pairs(t) do
if type(v) == "table" then
print(p,k,":");
if k == "parent" or k == "sourceParent" then
print("SKIPPED")
elseif k == "g" then
print("#",v and #v)
else
app.PrintTable(v,depth + 1);
end
else
print(p,k,":",tostring(v))
end
end
if getmetatable(t) then
print(p,"__index:");
app.PrintTable(getmetatable(t).__index, depth + 1);
end
print(p,"}");
else
print(p,tostring(t),"RECURSIVE");
end
end