Mercurial > wow > breuesk
diff Lists.lua @ 37:6362fe301d43
Storing class name in the persons so we can color them in later
Exposing some data lists, but this will likely be retracted later in favor of interface functions
| author | John@Yosemite-PC |
|---|---|
| date | Tue, 13 Mar 2012 23:17:18 -0400 |
| parents | ecd37523ae04 |
| children | ecef0cba2913 |
line wrap: on
line diff
--- a/Lists.lua Tue Mar 13 23:15:40 2012 -0400 +++ b/Lists.lua Tue Mar 13 23:17:18 2012 -0400 @@ -68,9 +68,9 @@ bsk.lists = {} bsk.persons = {} -local raidNameP = {} -- "name" is present in raid -local raidIdP = {} -- "id" is present in raid -local reserveIdP = {} -- "reserve id present" +bsk.raidNameP = {} -- "name" is present in raid +bsk.raidIdP = {} -- "id" is present in raid +bsk.reserveIdP = {} -- "reserve id present" local activeListKey = 1 -- temporary local personName2id = {} -- given "name" get that person's id @@ -84,9 +84,9 @@ bsk.db.profile.persons = {} bsk.db.profile.changes = {} bsk.db.profile.lists = {} - raidNameP = {} - raidIdP = {} - reserveIdP = {} + bsk.raidNameP = {} + bsk.raidIdP = {} + bsk.reserveIdP = {} personName2id = {} end function bsk:tcopy(to, from) @@ -130,6 +130,7 @@ function bsk:PrintTable(table, depth) depth = depth or "" if not table then return end + if #depth > 3*5 then self:Print(depth.."Recursion too deep - stopping"); return end for i,v in pairs(table) do if( type(v) == "string" ) then self:Print(depth .. i .. " - " .. v) @@ -140,6 +141,8 @@ self:PrintTable(v,depth.." ") elseif( type(v) == "boolean" ) then self:Print(depth .. i .. " - " .. tostring(v)) + elseif( type(v) == "function" ) then + self:Print(depth .. "function " .. i .. "()") else self:Print(depth .. i .. " - not sure how to print type: " .. type(v) ) end @@ -148,11 +151,11 @@ function bsk:PrintRaidAndReserve() bsk:Print("RaidNameP") - bsk:PrintTable(raidNameP) + bsk:PrintTable(bsk.raidNameP) bsk:Print("RaidIdP") - bsk:PrintTable(raidIdP) + bsk:PrintTable(bsk.raidIdP) bsk:Print("ReserveP") - bsk:PrintTable(reserveIdP) + bsk:PrintTable(bsk.reserveIdP) bsk:Print("personName2id") bsk:PrintTable(personName2id) end @@ -293,13 +296,12 @@ function bsk:DoAddPerson(change)--{{{ assert(change) assert(change.arg.id) - local arg = change.arg -- require admin local persons = bsk.persons - local name = arg.name - local id = arg.id + local name = change.arg.name + local id = change.arg.id assert(persons[id]==nil) - persons[id] = {main=name} + persons[id] = {main=name,class=change.arg.class} persons.time=change.time personName2id[name] = id return true @@ -312,6 +314,8 @@ self:Print(sformat("Could not add player %s - they must be in range or group",name)) return end + local _,englishClass = UnitClass(name) + --bsk:Print("Person " .. name .. " is class " .. englishClass) local id = string.sub(guid,6) -- skip at least 0x0580 ... id = id:gsub("^0*(.*)","%1") -- nom all leading zeroes remaining @@ -323,7 +327,7 @@ self:Print(sformat("%s is already in the persons list; disregarding", name)) return end - local change = {action="AddPerson",arg={name=name,id=id}} + local change = {action="AddPerson",arg={name=name,id=id,class=englishClass}} if bsk:DoAddPerson(change) then bsk:CreateChange(change) end @@ -565,7 +569,7 @@ for id,_ in pairs(bsk.persons) do t[id] = true end - for name,_ in pairs(raidNameP) do + for name,_ in pairs(bsk.raidNameP) do if personName2id[name] == nil then bsk:Print(sformat("Person %s is missing from the persons list - adding",name)) bsk:AddPerson(name) @@ -580,10 +584,10 @@ local list = bsk.lists[listIndex] local t = {} -- after loops, contains intersection of IDs present between raid and reserve - for i,v in pairs(raidIdP) do + for i,v in pairs(bsk.raidIdP) do if v then t[i] = true end end - for i,v in pairs(reserveIdP) do + for i,v in pairs(bsk.reserveIdP) do if v then t[i] = true end end @@ -616,12 +620,12 @@ -- reserves function bsk:AddReserve(name) - reserveIdP[personName2id[name]]=true + bsk.reserveIdP[personName2id[name]]=true -- TODO: communicate to others. don't store this in any way. end function bsk:RemoveReserve(name) - reserveIdP[personName2id[name]]=false + bsk.reserveIdP[personName2id[name]]=false -- TODO: communicate to others. don't store this in any way. end @@ -647,14 +651,14 @@ local inRaid = GetNumRaidMembers() local add = function(unitNameArg) local name = UnitName(unitNameArg) - raidNameP[name]=true + bsk.raidNameP[name]=true if personName2id[name] ~= nil then - raidIdP[personName2id[name]]=true + bsk.raidIdP[personName2id[name]]=true end end - wipe(raidNameP) - wipe(raidIdP) + wipe(bsk.raidNameP) + wipe(bsk.raidIdP) if inRaid > 0 then for i = 1, inRaid do add(rID[i]) @@ -669,7 +673,7 @@ -- You're alone add("player") end - --bsk:PrintTable(raidNameP) + --bsk:PrintTable(bsk.raidNameP) end -- undo rules! @@ -691,7 +695,7 @@ if list[i].id == id then pushing = true end - if pushing and (raidIdP[list[i].id] or reserveIdP[list[i].id]) then + if pushing and (bsk.raidIdP[list[i].id] or bsk.reserveIdP[list[i].id]) then tinsert(ret,list[i].id) end end
