From 492ea050514e36d62bb8854b955b541e2e1b540e Mon Sep 17 00:00:00 2001 From: Alar of Daggerspine Date: Sat, 20 Jun 2015 00:19:51 +0200 Subject: [PATCH] Debug.lua added to toc Signed-off-by: Alar of Daggerspine --- Init.lua | 336 -------------------------------------------------------------- 1 file changed, 336 deletions(-) diff --git a/Init.lua b/Init.lua index 8eceb16..ff64f3d 100644 --- a/Init.lua +++ b/Init.lua @@ -293,339 +293,3 @@ for _,trait in pairs(TT) do end ATEINFO['abilities']=map --]] - - ---Debug.lua (da aggiungere al toc) - ---@do-not-package@ -local me, ns = ... -if (me=="doc") then - local mt={ - keys=setmetatable({},{__index=function(t,k) rawset(t,k,{}) return t[k] end }), - __metatable=true - - } - function mt:__index(k) - - if k=="n" then - return #mt.keys[self] - end - return rawget(self,k) - end - function mt:__len() - return #mt.keys[self] - end - function mt:__newindex(k,v) - local keys=mt.keys[self] - local pos=#keys+1 - print("Inserting",k) - for i,x in ipairs(keys) do - if x>k then - pos=i - break; - end - end - table.insert(keys,pos,k) - print("Inserted",k,"at",pos) - rawset(self,k,v) - end - function a() - return function(unsorted,i) - i=i+1 - local k=mt.keys[unsorted][i] - if k then return i,k end - end,self,0 - end - function mt:__call() - do - local current=0 - return function(unsorted,i) - current=current+1 - local k=mt.keys[unsorted][current] - if k then return k,self[k] end - end,self,0 - end -end - local my=setmetatable({},mt) - my.pippo=3 - my.pluto=4 - my.andrea=2 - my.zanzi=1 - for k,v in my() do print(k,v) end - return -end -local me, ns = ... -local addon=ns.addon --#addon -local L=ns.L -local D=ns.D -local C=ns.C -local AceGUI=ns.AceGUI -local _G=_G -local pp=print -_G.GAC=addon - ---- Enable a trace for every function call. It's a VERY heavy debug --- -if ns.HD then -local memorysinks={} -local callstack={} -local lib=LibStub("LibInit") -for k,v in pairs(addon) do - if (type(v))=="function" and not lib[k] then - local wrapped - do - local original=addon[k] - wrapped=function(...) - pp(k) - tinsert(callstack,k) - local membefore=GetAddOnMemoryUsage("GarrisonCommander") - local a1,a2,a3,a4,a5,a6,a7,a8,a9=original(...) - local memafter=GetAddOnMemoryUsage("GarrisonCommander") - tremove(callstack) - memorysinks[k].mem=memorysinks[k].mem+memafter-membefore - memorysinks[k].calls=memorysinks[k].calls+1 - if (#callstack) then - memorysinks[k].callers=strjoin("->",unpack(callstack)) - else - memorysinks[k].callers="main" - end - if (memafter-membefore > 20) then - pp(C(k,'Red'),'used ',memafter-membefore) - end - return a1,a2,a3,a4,a5,a6,a7,a8,a9 - end - end - addon[k]=wrapped - memorysinks[k]={mem=0,calls=0,callers=""} - end -end -function addon:ResetSinks() - for k,v in pairs(memorysinks) do - memorysinks[k].mem=0 - memorysinks[k].calls=0 - end -end -local sorted={} -function addon:DumpSinks() - local scroll=self:GetScroller("Sinks",nil,400,1000) - wipe(sorted) - for k,v in pairs(memorysinks) do - if v.mem then - tinsert(sorted,format("Mem %06d (calls: %03d) Mem per call:%03.2f Callstack:%s(%s)",v.mem,v.calls,v.mem/v.calls,C(k,"Orange"),v.callers)) - end - end - table.sort(sorted,function(a,b) return a>b end) - self:cutePrint(scroll,sorted) -end -end -local m={} -function m:AddRow(text,...) - local l=AceGUI:Create("Label") - l:SetText(text) - l:SetColor(...) - l:SetFullWidth(true) - self:AddChild(l) - return l -end -function m:AddIconText(icon,text,qt) - local l=AceGUI:Create("InteractiveLabel") - l:SetFontObject(GameFontNormalSmall) - if (qt) then - l:SetText(format("%s x %s",text,qt)) - else - l:SetText(text) - end - l:SetImage(icon) - l:SetImageSize(24,24) - l:SetFullWidth(true) - l.frame:EnableMouse(true) - l.frame:SetFrameLevel(999) - self:AddChild(l) - return l -end -function m:AddItem(itemID,qt) - local _,itemlink,itemquality,_,_,_,_,_,_,itemtexture=GetItemInfo(itemID) - if not itemlink then - return self:AddIconText(itemtexture,itemID) - else - return self:AddIconText(itemtexture,itemlink) - end -end -function addon:GetScroller(title,type,h,w) - h=h or 800 - w=w or 400 - type=type or "Frame" - local scrollerWindow=AceGUI:Create("Frame") - --scrollerWindow.frame:SetAlpha(1) - scrollerWindow:SetTitle(title) - scrollerWindow:SetLayout("Fill") - --local scrollcontainer = AceGUI:Create("SimpleGroup") -- "InlineGroup" is also good - --scrollcontainer:SetFullWidth(true) - --scrollcontainer:SetFullHeight(true) -- probably? - --scrollcontainer:SetLayout("Fill") -- important! - --scrollerWindow:AddChild(scrollcontainer) - local scroll = AceGUI:Create("ScrollFrame") - scroll:SetLayout("Flow") -- probably? - scroll:SetFullWidth(true) - scroll:SetFullHeight(true) - scrollerWindow:AddChild(scroll) - scrollerWindow:SetCallback("OnClose","Release") - scrollerWindow:SetHeight(h) - scrollerWindow:SetWidth(w) - scrollerWindow:SetPoint("CENTER") - scrollerWindow:Show() - for k,v in pairs(m) do scroll[k]=v end - scroll.addRow=scroll.AddRow - return scroll -end -function addon:AddRow(obj,text,...) ---@debug@ - assert(obj) ---@end-debug@ - if (obj) then - local l=AceGUI:Create("Label") - l:SetText(text) - l:SetColor(...) - l:SetFullWidth(true) - obj:AddChild(l) - end -end -local function safesort(a,b) - if (tonumber(a) and tonumber(b)) then - return a < b - else - return tostring(a) < tostring(b) - end -end -function addon:cutePrint(scroll,level,k,v) - if (type(level)=="table") then - for k,v in kpairs(level,safesort) do - self:cutePrint(scroll,"",k,v) - end - return - end - if (type(v)=="table") then - if (level:len()>6) then return end - self:AddRow(scroll,level..C(k,"Azure")..":" ..C("Table","Orange")) - for kk,vv in pairs(v) do - self:cutePrint(scroll,level .. " ",kk,vv) - end - else - if (type(v)=="string" and v:sub(1,2)=='0x') then - v=v.. " " ..tostring(self:GetFollowerData(v,'name')) - end - self:AddRow(scroll,level..C(k,"White")..":" ..C(v,"Yellow")) - end -end -function addon:DumpFollower(name) - local follower=self:GetFollowerData(name) - if (follower) then - local scroll=self:GetScroller(follower.name) - self:cutePrint(scroll,follower) - end - -end -function addon:DumpStatus(title) - local scroll=self:GetScroller(title) - for i=1,#followersCache do - local followerID=followersCache[i].followerID - scroll:AddRow(format("%s (%s): %d",self:GetFollowerData(followerID,'fullname'),self:GetFollowerData(followerID,'followerID'),G.GetFollowerXP(followerID))) - end - scroll:AddRow("Garrison resources: " .. select(2,GetCurrencyInfo(GARRISON_CURRENCY))) - scroll:AddRow("Money: " .. GetMoneyString(GetMoney())) -end -function addon:DumpFollowers() - local scroll=self:GetScroller("Followers Cache (" .. #followersCache ..")" ) - self:cutePrint(scroll,followersCache) -end -function addon:DumpFollowerMissions(missionID) - local scroll=self:GetScroller("FollowerMissions " .. self:GetMissionData(missionID,'name')) - self:cutePrint(scroll,followerMissions.missions[missionID]) -end -function addon:DumpIgnored() - local scroll=self:GetScroller("Ignored") - self:cutePrint(scroll,self.privatedb.profile.ignored) -end -function addon:DumpMission(missionID) - local scroll=self:GetScroller("MissionCache " .. self:GetMissionData(missionID,'name')) - self:cutePrint(scroll,self:GetMissionData(missionID)) -end -function addon:DumpMissions() - local scroll=self:GetScroller("MissionCache") - for id,data in pairs(self:GetMissionData(missionID)) do - self:cutePrint(scroll,id .. '.'..data.name) - end -end ---- --- Debug function ---@param missionID Identificativo missione -function addon:DumpCounters(missionID) - local scroll=self:GetScroller("Counters " .. self:GetMissionData(missionID,'name')) - self:cutePrint(scroll,counters[missionID]) - self:cutePrint(scroll,"Lista per follower","","") - self:cutePrint(scroll,counterFollowerIndex[missionID]) - self:cutePrint(scroll,"Lista per threat","","") - self:cutePrint(scroll,counterThreatIndex[missionID]) -end -function addon:Dump(title,data) - if type(data)=="string" then - data=_G[data] - end - if type(data) ~= "table" then - print(data,"is not a table") - return - end - local scroll=self:GetScroller(title) - print("Dumping",title) - self:cutePrint(scroll,data) - return scroll -end -function addon:DumpCounterers(missionID) - local scroll=self:GetScroller("Counterers " .. self:GetMissionData(missionID,'name')) - self:cutePrint(scroll,cache.missions[missionID].counterers) -end -function addon:DumpParty(missionID) - local scroll=self:GetScroller("Party " .. self:GetMissionData(missionID,'name')) - self:cutePrint(scroll,parties[missionID]) -end -function addon:DumpAgeDb() - local t=ns.new() - for i,v in pairs(dbcache.seen) do - tinsert(t,format("%80s %s %d",self:GetMissionData(i,'name'),date("%d/%m/%y %H:%M:%S",v),ns.wowhead[i])) - end - local scroll=self:GetScroller("Expire db") - self:cutePrint(scroll,t) - ns.del(t) -end ---[[ -PlaySound("UI_Garrison_CommandTable_Open"); - PlaySound("UI_Garrison_CommandTable_Close"); - PlaySound("UI_Garrison_Nav_Tabs"); - PlaySound("UI_Garrison_Nav_Tabs"); - PlaySound("UI_Garrison_CommandTable_SelectMission"); - PlaySound("UI_Garrison_CommandTable_IncreaseSuccess"); - PlaySound("UI_Garrison_CommandTable_100Success"); - PlaySound("UI_Garrison_CommandTable_ReducedSuccessChance"); - PlaySound("UI_Garrison_Mission_Threat_Countered"); - PlaySoundKitID(43507); -- 100% chance reached - PlaySound("UI_Garrison_CommandTable_AssignFollower"); - PlaySound("UI_Garrison_CommandTable_UnassignFollower"); - PlaySound("UI_Garrison_Mission_Threat_Countered"); - PlaySound("UI_Garrison_CommandTable_MissionStart"); - PlaySound("UI_Garrison_CommandTable_ViewMissionReport"); - PlaySound("UI_Garrison_Mission_Complete_Encounter_Chance"); - PlaySound("UI_Garrison_CommandTable_Nav_Next"); - PlaySound("UI_Garrison_CommandTable_ChestUnlock_Gold_Success"); - PlaySound("UI_Garrison_Mission_Threat_Countered"); - PlaySound("UI_Garrison_MissionEncounter_Animation_Generic"); - PlaySoundKitID(currentAnim.castSoundID); - PlaySoundKitID(currentAnim.impactSoundID); - PlaySound("UI_Garrison_Mission_Complete_Encounter_Fail"); - PlaySound("UI_Garrison_Mission_Complete_Mission_Success"); - PlaySound("UI_Garrison_CommandTable_MissionSuccess_Stinger"); - PlaySound("UI_Garrison_Mission_Complete_MissionFail_Stinger"); - PlaySound("UI_Garrison_CommandTable_ChestUnlock"); - PlaySound("UI_Garrison_CommandTable_Follower_LevelUp"); - ---]] ---@end-do-not-package@ -- 1.7.9.5