Files
Techmino/Zframework/log.lua
2020-09-17 23:39:45 +08:00

80 lines
1.7 KiB
Lua

local gc=love.graphics
local int,min=math.floor,math.min
local ins,rem=table.insert,table.remove
local debugMesList={}
local debugMesHistory={
"Version: "..gameVersion,
os.date("Launched at %Y/%m/%d %H:%M"),
}
local debugMesFloat=0
local LOG={}
function LOG.update()
if debugMesList[1]then
for i=#debugMesList,1,-1 do
local M=debugMesList[i]
if M.blink>0 then
M.blink=M.blink-1
else
M.time=M.time-1
if M.time==0 then
rem(debugMesList,i)
if not debugMesList[1]then
debugMesFloat=0
elseif i==1 then
debugMesFloat=debugMesFloat+25
end
end
end
end
if debugMesFloat>0 then
debugMesFloat=int(debugMesFloat*.9)
end
end
end
function LOG.draw()
if debugMesList[1]then
gc.push("transform")
setFont(int(20*scr.w/1280))
for i=1,#debugMesList do
local M=debugMesList[i]
local t=M.time
gc.setColor(M.r,M.g,M.b,M.blink>0 and int(M.blink/3)%2 or min(t/26,1))
gc.print(M.text,10+(20-min(t,20))^1.5/4,25*i+debugMesFloat)
end
gc.pop()
end
end
function LOG.print(text,T,C)--text,type/time,color
local time
local his
if T=="warn"then
C=C or color.yellow
his=true
time=180
elseif T=="error"then
C=C or color.red
his=true
time=210
elseif T=="message"then
C=C or color.green
his=true
elseif type(T)=="number"then
C=C or color.white
time=T
elseif type(T)=="table"then
C,T=T or color.white
elseif not C then
C=color.white
end
if his then
ins(debugMesHistory,SCN.cur..": "..tostring(text))
end
ins(debugMesList,{text=text,r=C[1],g=C[2],b=C[3],blink=30,time=time or 120})
end
function LOG.copy()
local str=table.concat(debugMesHistory,"\n")
love.system.setClipboardText(str)
LOG.print("Log copied",color.blue)
end
return LOG