From 8a0abc8a8c8227fd69d6c1a7b3bf3b72d62a0fcc Mon Sep 17 00:00:00 2001 From: Bunny67 Date: Sat, 14 Jul 2018 22:46:12 +0300 Subject: [PATCH] update friends datatext --- ElvUI/Modules/DataTexts/Friends.lua | 64 +++++++++++------------------ 1 file changed, 24 insertions(+), 40 deletions(-) diff --git a/ElvUI/Modules/DataTexts/Friends.lua b/ElvUI/Modules/DataTexts/Friends.lua index 65c26b8..ca32a29 100644 --- a/ElvUI/Modules/DataTexts/Friends.lua +++ b/ElvUI/Modules/DataTexts/Friends.lua @@ -3,31 +3,25 @@ local DT = E:GetModule("DataTexts"); --Cache global variables --Lua functions -local type, pairs = type, pairs -local sort, wipe = table.sort, wipe +local pairs = pairs +local tinsert, sort, wipe, next = table.insert, table.sort, wipe, next local format, find, join, gsub = string.format, string.find, string.join, string.gsub --WoW API / Variables -local UnitIsAFK = UnitIsAFK -local UnitIsDND = UnitIsDND local SendChatMessage = SendChatMessage local InviteByName = InviteByName local SetItemRef = SetItemRef local GetFriendInfo = GetFriendInfo local GetNumFriends = GetNumFriends local GetQuestDifficultyColor = GetQuestDifficultyColor -local UnitInParty = UnitInParty -local UnitInRaid = UnitInRaid local ToggleFriendsFrame = ToggleFriendsFrame -local L_EasyMenu = L_EasyMenu -local AVAILABLE, CHAT_MSG_AFK, CHAT_MSG_DND, CHAT_MSG_WHISPER_INFORM = AVAILABLE, CHAT_MSG_AFK, CHAT_MSG_DND, CHAT_MSG_WHISPER_INFORM -local ERR_FRIEND_ONLINE_SS, ERR_FRIEND_OFFLINE_S, FRIENDS, FRIENDS_LIST = ERR_FRIEND_ONLINE_SS, ERR_FRIEND_OFFLINE_S, FRIENDS, FRIENDS_LIST -local GUILD_ONLINE_LABEL, OPTIONS_MENU, PARTY_INVITE, PLAYER_STATUS = GUILD_ONLINE_LABEL, OPTIONS_MENU, PARTY_INVITE, PLAYER_STATUS - -local LOCALIZED_CLASS_NAMES_MALE = LOCALIZED_CLASS_NAMES_MALE +local CHAT_MSG_AFK = CHAT_MSG_AFK +local CHAT_MSG_DND = CHAT_MSG_DND +local FRIENDS = FRIENDS local LOCALIZED_CLASS_NAMES_FEMALE = LOCALIZED_CLASS_NAMES_FEMALE -local CUSTOM_CLASS_COLORS = CUSTOM_CLASS_COLORS -local RAID_CLASS_COLORS = RAID_CLASS_COLORS +local LOCALIZED_CLASS_NAMES_MALE = LOCALIZED_CLASS_NAMES_MALE + +local L_EasyMenu = L_EasyMenu local function GetNumberFriends() local numFriends = GetNumFriends() @@ -52,9 +46,9 @@ local menuList = { {text = CHAT_MSG_WHISPER_INFORM, hasArrow = true, notCheckable = true}, {text = PLAYER_STATUS, hasArrow = true, notCheckable = true, menuList = { - -- {text = "|cff2BC226" .. AVAILABLE .. "|r", notCheckable = true, func = function() end}, -- TODO - {text = "|cffE7E716" .. CHAT_MSG_AFK .. "|r", notCheckable = true, func = function() SendChatMessage("", "AFK") end}, - {text = "|cffFF0000" .. CHAT_MSG_DND .. "|r", notCheckable = true, func = function() SendChatMessage("", "DND") end} +-- {text = "|cff2BC226"..AVAILABLE.."|r", notCheckable = true, func = function() end}, -- TODO + {text = "|cffE7E716"..CHAT_MSG_AFK.."|r", notCheckable = true, func = function() SendChatMessage("", "AFK") end}, + {text = "|cffFF0000"..CHAT_MSG_DND.."|r", notCheckable = true, func = function() SendChatMessage("", "DND") end} } } } @@ -66,12 +60,12 @@ end local function whisperClick(playerName) menuFrame:Hide() - SetItemRef("player:" .. playerName, format("|Hplayer:%1$s|h[%1$s]|h", playerName), "LeftButton") + SetItemRef("player:"..playerName, format("|Hplayer:%1$s|h[%1$s]|h", playerName), "LeftButton") end local lastPanel local levelNameString = "|cff%02x%02x%02x%d|r |cff%02x%02x%02x%s|r" -local levelNameClassString = "|cff%02x%02x%02x%d|r %s%s" +local levelNameClassString = "|cff%02x%02x%02x%d|r %s" local totalOnlineString = join("", GUILD_ONLINE_LABEL, ": %s/%s") local tthead = {r = 0.4, g = 0.78, b = 1} local activezone, inactivezone = {r = 0.3, g = 1.0, b = 0.3}, {r = 0.65, g = 0.65, b = 0.65} @@ -82,37 +76,32 @@ local friendOnline, friendOffline = gsub(ERR_FRIEND_ONLINE_SS, "\124Hplayer:%%s\ local dataValid = false local function SortAlphabeticName(a, b) - if(a[1] and b[1]) then + if a[1] and b[1] then return a[1] < b[1] end end local function BuildFriendTable(total) wipe(friendTable) - local name, level, class, area, online, status, note + local name, level, class, area, online for i = 1, total do - name, level, class, area, online, status, note = GetFriendInfo(i) - - if status == CHAT_FLAG_AFK then - status = "|cffFFFFFF[|r|cfffaff00" .. CHAT_MSG_AFK .. "|r|cffFFFFFF]|r" - elseif status == CHAT_FLAG_DND then - status = "|cffFFFFFF[|r|cffff0000" .. CHAT_MSG_DND .. "|r|cffFFFFFF]|r" - end + name, level, class, area, online = GetFriendInfo(i) if online then for k, v in pairs(LOCALIZED_CLASS_NAMES_MALE) do if class == v then class = k end end for k, v in pairs(LOCALIZED_CLASS_NAMES_FEMALE) do if class == v then class = k end end - friendTable[i] = {name, level, class, area, online, status, note} + friendTable[i] = {name, level, class, area, online} end end - sort(friendTable, SortAlphabeticName) + if next(friendTable) then + sort(friendTable, SortAlphabeticName) + end end -local function OnEvent(self, event) +local function OnEvent(self, event, message) local _, onlineFriends = GetNumberFriends() if event == "CHAT_MSG_SYSTEM" then - local message = arg1 if not (find(message, friendOnline) or find(message, friendOffline)) then return end end @@ -127,8 +116,6 @@ local function OnClick() DT.tooltip:Hide() if arg1 == "RightButton" then - local menuCountWhispers = 0 - local menuCountInvites = 0 local classc, levelc menuList[2].menuList = {} @@ -136,14 +123,11 @@ local function OnClick() for _, info in friendTable do if info[5] then - menuCountInvites = menuCountInvites + 1 - menuCountWhispers = menuCountWhispers + 1 - classc, levelc = (CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS)[info[3]], GetQuestDifficultyColor(info[2]) classc = classc or GetQuestDifficultyColor(info[2]) - menuList[2].menuList[menuCountInvites] = {text = format(levelNameString, levelc.r*255,levelc.g*255,levelc.b*255, info[2],classc.r*255,classc.g*255,classc.b*255, info[1]), arg1 = info[1], notCheckable = true, func = inviteClick} - menuList[3].menuList[menuCountWhispers] = {text = format(levelNameString, levelc.r*255,levelc.g*255,levelc.b*255, info[2],classc.r*255,classc.g*255,classc.b*255, info[1]), arg1 = info[1], notCheckable = true, func = whisperClick} + tinsert(menuList[2].menuList, {text = format(levelNameString, levelc.r*255,levelc.g*255,levelc.b*255, info[2],classc.r*255,classc.g*255,classc.b*255, info[1]), arg1 = info[1], notCheckable = true, func = inviteClick}) + tinsert(menuList[3].menuList, {text = format(levelNameString, levelc.r*255,levelc.g*255,levelc.b*255, info[2],classc.r*255,classc.g*255,classc.b*255, info[1]), arg1 = info[1], notCheckable = true, func = whisperClick}) end end L_EasyMenu(menuList, menuFrame, "cursor", 0, 0, "MENU", 2) @@ -173,7 +157,7 @@ local function OnEnter(self) classc, levelc = (CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS)[info[3]], GetQuestDifficultyColor(info[2]) classc = classc or GetQuestDifficultyColor(info[2]) - DT.tooltip:AddDoubleLine(format(levelNameClassString, levelc.r*255,levelc.g*255,levelc.b*255, info[2], info[1], " " .. info[6]), info[4], classc.r,classc.g,classc.b, zonec.r,zonec.g,zonec.b) + DT.tooltip:AddDoubleLine(format(levelNameClassString, levelc.r*255,levelc.g*255,levelc.b*255, info[2], info[1]), info[4], classc.r,classc.g,classc.b, zonec.r,zonec.g,zonec.b) end end end