From e882baac8ec5694d92e500651e9fe9f9498f645b Mon Sep 17 00:00:00 2001 From: Darthpred Date: Sun, 19 Oct 2014 15:27:28 +0400 Subject: [PATCH] delay check for option group allowing the lib to have all info when the check is executed to prevent false result every time --- ElvUI_SLE/options/dev_c.lua | 418 ++++++++++++++++++++++--------------------- 1 file changed, 212 insertions(+), 206 deletions(-) diff --git a/ElvUI_SLE/options/dev_c.lua b/ElvUI_SLE/options/dev_c.lua index 07dc2e9..058f0e1 100644 --- a/ElvUI_SLE/options/dev_c.lua +++ b/ElvUI_SLE/options/dev_c.lua @@ -13,236 +13,242 @@ function SLE:GetBNetInfo() end end -if SLE:Auth() then - local selectedChannel = '' - local UserListCache = {} - local highestVersion = tonumber(SLE.version) - local flag = 'SLE_DEV_SAYS' - local addonChannel = 'GUILD' - local addonTarget = "" - local output = 'SAY' - local text = '' - local wtarget = "" - local bnetP - - function SLE:delete(...) - local _, id = ... - id = tostring(id) - bnettesttbl[id] = nil - end - SLE:RegisterEvent('BN_FRIEND_ACCOUNT_OFFLINE', 'delete') - - RegisterAddonMessagePrefix('SLE_DEV_INFO') - - local f = CreateFrame('Frame') - f:RegisterEvent('CHAT_MSG_ADDON') - f:RegisterEvent('BN_CHAT_MSG_ADDON') - f:RegisterEvent('BN_FRIEND_ACCOUNT_ONLINE') - f:RegisterEvent('PLAYER_ENTERING_WORLD') - f:SetScript('OnEvent', function(self, event, prefix, message, channel, sender) - if event == 'BN_FRIEND_ACCOUNT_ONLINE' or event == 'BN_FRIEND_ACCOUNT_OFFLINE' then - SLE:GetBNetInfo() +local function Login(self, event) + self:UnregisterEvent(event) + if SLE:Auth() then + local selectedChannel = '' + local UserListCache = {} + local highestVersion = tonumber(SLE.version) + local flag = 'SLE_DEV_SAYS' + local addonChannel = 'GUILD' + local addonTarget = "" + local output = 'SAY' + local text = '' + local wtarget = "" + local bnetP + + function SLE:delete(...) + local _, id = ... + id = tostring(id) + bnettesttbl[id] = nil end + SLE:RegisterEvent('BN_FRIEND_ACCOUNT_OFFLINE', 'delete') + + RegisterAddonMessagePrefix('SLE_DEV_INFO') + + local f = CreateFrame('Frame') + f:RegisterEvent('CHAT_MSG_ADDON') + f:RegisterEvent('BN_CHAT_MSG_ADDON') + f:RegisterEvent('BN_FRIEND_ACCOUNT_ONLINE') + f:RegisterEvent('PLAYER_ENTERING_WORLD') + f:SetScript('OnEvent', function(self, event, prefix, message, channel, sender) + if event == 'BN_FRIEND_ACCOUNT_ONLINE' or event == 'BN_FRIEND_ACCOUNT_OFFLINE' then + SLE:GetBNetInfo() + end - if event == 'PLAYER_ENTERING_WORLD' then - SLE:GetBNetInfo() - end + if event == 'PLAYER_ENTERING_WORLD' then + SLE:GetBNetInfo() + end - if prefix == 'SLE_DEV_INFO' then - if event == 'CHAT_MSG_ADDON' or event == 'BN_CHAT_MSG_ADDON' then - if not message:find("SLEinfo") then - local userLevel, userClass, userName, userRealm, userVersion = strsplit('#', message) - if (userName == E.myname and userRealm == E.myrealm) then return end; + if prefix == 'SLE_DEV_INFO' then + if event == 'CHAT_MSG_ADDON' or event == 'BN_CHAT_MSG_ADDON' then + if not message:find("SLEinfo") then + local userLevel, userClass, userName, userRealm, userVersion = strsplit('#', message) + if (userName == E.myname and userRealm == E.myrealm) then return end; - userVersion = tonumber(userVersion) + userVersion = tonumber(userVersion) - if userVersion > highestVersion then - highestVersion = userVersion - end + if userVersion > highestVersion then + highestVersion = userVersion + end - local id = #UserListCache + 1; + local id = #UserListCache + 1; - for i=1,#UserListCache do - if (UserListCache[i].userName == userName and UserListCache[i].userRealm == userRealm) then - id = i; - break; + for i=1,#UserListCache do + if (UserListCache[i].userName == userName and UserListCache[i].userRealm == userRealm) then + id = i; + break; + end end - end - UserListCache[id] = { - ['userLevel'] = userLevel, - ['userClass'] = userClass, - ['userName'] = userName, - ['userRealm'] = userRealm, - ['userVersion'] = userVersion, - } + UserListCache[id] = { + ['userLevel'] = userLevel, + ['userClass'] = userClass, + ['userName'] = userName, + ['userRealm'] = userRealm, + ['userVersion'] = userVersion, + } - if (IsAddOnLoaded("ElvUI_Config")) then - ACD:SelectGroup('ElvUI', 'sle', 'developer', 'userList') - end - else - local _, numBNetOnline = BNGetNumFriends() - for i = 1, numBNetOnline do - local presenceID, presenceName, _, _, toon, _, _, _ = BNGetFriendInfo(i) - message = message:gsub("SLEinfo", '') - local pid = tonumber(message) - if pid == presenceID then - bnettesttbl[message] = presenceName; + if (IsAddOnLoaded("ElvUI_Config")) then + ACD:SelectGroup('ElvUI', 'sle', 'developer', 'userList') + end + else + local _, numBNetOnline = BNGetNumFriends() + for i = 1, numBNetOnline do + local presenceID, presenceName, _, _, toon, _, _, _ = BNGetFriendInfo(i) + message = message:gsub("SLEinfo", '') + local pid = tonumber(message) + if pid == presenceID then + bnettesttbl[message] = presenceName; + end end end end end - end - end) - - local function configTable() - E.Options.args.sle.args.developer = { - order = 999, - type = 'group', - name = "Developer", - childGroups = 'tab', - args = { - header = { - order = 1, - type = "header", - name = "Evil Overlord Control Panel", - }, - testdesc = { - order = 2, - type = "description", - name = "WTF are you doing here, asshole?!", - }, - userList = { - order = 3, - type = "group", - name = "User List", - args = { - listheader = { - order = 1, - type = "header", - name = "List of possible victims", - }, - List = { - type = 'select', - name = 'Choose a channel', - order = 2, - get = function() return selectedChannel end, - set = function(_, value) - selectedChannel = value - end, - values = { - [''] = ' ', - ['GUILD'] = 'Guild', - ['INSTANCE_CHAT'] = 'Instance', - ['PARTY'] = 'Party', - ['RAID'] = 'Raid', - ['BNET'] = 'BNet', + end) + + local function configTable() + E.Options.args.sle.args.developer = { + order = 999, + type = 'group', + name = "Developer", + childGroups = 'tab', + args = { + header = { + order = 1, + type = "header", + name = "Evil Overlord Control Panel", + }, + testdesc = { + order = 2, + type = "description", + name = "WTF are you doing here, asshole?!", + }, + userList = { + order = 3, + type = "group", + name = "User List", + args = { + listheader = { + order = 1, + type = "header", + name = "List of possible victims", }, - }, - submitbutton = { - type = 'execute', - order = 3, - name = function() - return selectedChannel ~= '' and "Update List" or "Clear List" - end, - func = function(info, value) - UserListCache = {} -- Clear Cache - - if selectedChannel == 'BNET' then - local _, numBNetOnline = BNGetNumFriends() - for i = 1, numBNetOnline do - local presenceID, _, _, _, _, _, client, isOnline = BNGetFriendInfo(i) - if isOnline and client == BNET_CLIENT_WOW then - BNSendGameData(presenceID, 'SLE_DEV_REQ', 'userlist') + List = { + type = 'select', + name = 'Choose a channel', + order = 2, + get = function() return selectedChannel end, + set = function(_, value) + selectedChannel = value + end, + values = { + [''] = ' ', + ['GUILD'] = 'Guild', + ['INSTANCE_CHAT'] = 'Instance', + ['PARTY'] = 'Party', + ['RAID'] = 'Raid', + ['BNET'] = 'BNet', + }, + }, + submitbutton = { + type = 'execute', + order = 3, + name = function() + return selectedChannel ~= '' and "Update List" or "Clear List" + end, + func = function(info, value) + UserListCache = {} -- Clear Cache + + if selectedChannel == 'BNET' then + local _, numBNetOnline = BNGetNumFriends() + for i = 1, numBNetOnline do + local presenceID, _, _, _, _, _, client, isOnline = BNGetFriendInfo(i) + if isOnline and client == BNET_CLIENT_WOW then + BNSendGameData(presenceID, 'SLE_DEV_REQ', 'userlist') + end end + elseif selectedChannel ~= '' then + SendAddonMessage('SLE_DEV_REQ', 'userlist', selectedChannel) end - elseif selectedChannel ~= '' then - SendAddonMessage('SLE_DEV_REQ', 'userlist', selectedChannel) - end - end, - }, - Space = { - type = 'description', - name = ' ', - order = 4, - }, - userList = { - type = 'group', - name = function() - return 'Userlist : '..selectedChannel - end, - order = 5, - guiInline = true, - args = {}, - hidden = function() return selectedChannel == '' end, + end, + }, + Space = { + type = 'description', + name = ' ', + order = 4, + }, + userList = { + type = 'group', + name = function() + return 'Userlist : '..selectedChannel + end, + order = 5, + guiInline = true, + args = {}, + hidden = function() return selectedChannel == '' end, + }, }, }, - }, - devdiaggroup = { - order = 5, - type = "group", - name = "Tech and shit", - args = { - subgroup = { - order = 1, - type = "header", - name = "Some tech stuff", - }, - cpuprofiling = { - order = 2, - type = 'execute', - name = "CPU Profiling", - func = function() SetCVar("scriptProfile", GetCVar("scriptProfile") == "1" and 0 or 1); ReloadUI() end, + devdiaggroup = { + order = 5, + type = "group", + name = "Tech and shit", + args = { + subgroup = { + order = 1, + type = "header", + name = "Some tech stuff", + }, + cpuprofiling = { + order = 2, + type = 'execute', + name = "CPU Profiling", + func = function() SetCVar("scriptProfile", GetCVar("scriptProfile") == "1" and 0 or 1); ReloadUI() end, + }, }, }, - }, - devgroupone = { - order = 500, - type = "group", - name = "Test Group", - args = { - subgroup = { - order = 1, - type = "header", - name = "Dafuq we have this?", + devgroupone = { + order = 500, + type = "group", + name = "Test Group", + args = { + subgroup = { + order = 1, + type = "header", + name = "Dafuq we have this?", + }, }, }, }, - }, - } - - for i = 1, 40 do - E.Options.args.sle.args.developer.args.userList.args.userList.args[tostring(i)] = { - type = 'description', - order = i, - name = function() - if UserListCache[i] then - local Level = GetQuestDifficultyColor(UserListCache[i]['userLevel']) - Level = format('|cff%02x%02x%02x%s|r', Level.r *255, Level.g *255, Level.b *255, UserListCache[i]['userLevel']) - - local ClassColor = '|c'..RAID_CLASS_COLORS[(UserListCache[i]['userClass'])]['colorStr'] - local UserName = ClassColor..UserListCache[i]['userName']..'|r' - - local UserRealm = UserListCache[i]['userRealm'] - - local UserVersion = UserListCache[i]['userVersion'] - UserVersion = (UserVersion == highestVersion and '|cffceff00' or '|cffff5678')..UserVersion - - local Icon = ''; - local realm = UserRealm:gsub(' ',''); - if (SLE.SpecialChatIcons[realm] and SLE.SpecialChatIcons[realm][UserListCache[i]['userName']]) then - Icon = SLE.SpecialChatIcons[realm][UserListCache[i]['userName']]; - - end - return Level..' '..UserName.. '|cffffffff - '..UserRealm..' : '..UserVersion..Icon - else - return ' ' - end - end, - hidden = function() return not UserListCache[i] end, } + + for i = 1, 40 do + E.Options.args.sle.args.developer.args.userList.args.userList.args[tostring(i)] = { + type = 'description', + order = i, + name = function() + if UserListCache[i] then + local Level = GetQuestDifficultyColor(UserListCache[i]['userLevel']) + Level = format('|cff%02x%02x%02x%s|r', Level.r *255, Level.g *255, Level.b *255, UserListCache[i]['userLevel']) + + local ClassColor = '|c'..RAID_CLASS_COLORS[(UserListCache[i]['userClass'])]['colorStr'] + local UserName = ClassColor..UserListCache[i]['userName']..'|r' + + local UserRealm = UserListCache[i]['userRealm'] + + local UserVersion = UserListCache[i]['userVersion'] + UserVersion = (UserVersion == highestVersion and '|cffceff00' or '|cffff5678')..UserVersion + + local Icon = ''; + local realm = UserRealm:gsub(' ',''); + if (SLE.SpecialChatIcons[realm] and SLE.SpecialChatIcons[realm][UserListCache[i]['userName']]) then + Icon = SLE.SpecialChatIcons[realm][UserListCache[i]['userName']]; + + end + return Level..' '..UserName.. '|cffffffff - '..UserRealm..' : '..UserVersion..Icon + else + return ' ' + end + end, + hidden = function() return not UserListCache[i] end, + } + end end - end - table.insert(E.SLEConfigs, configTable) -end \ No newline at end of file + table.insert(E.SLEConfigs, configTable) + end +end +local f = CreateFrame("Frame", "SLE_Dev_load", UIParent) +f:RegisterEvent("PLAYER_ENTERING_WORLD") +f:SetScript("OnEvent", Login) \ No newline at end of file -- 1.7.9.5