update friends datatext

This commit is contained in:
Bunny67
2018-07-14 22:46:12 +03:00
parent 0c1fc4ee67
commit 8a0abc8a8c
+19 -35
View File
@@ -3,31 +3,25 @@ local DT = E:GetModule("DataTexts");
--Cache global variables --Cache global variables
--Lua functions --Lua functions
local type, pairs = type, pairs local pairs = pairs
local sort, wipe = table.sort, wipe local tinsert, sort, wipe, next = table.insert, table.sort, wipe, next
local format, find, join, gsub = string.format, string.find, string.join, string.gsub local format, find, join, gsub = string.format, string.find, string.join, string.gsub
--WoW API / Variables --WoW API / Variables
local UnitIsAFK = UnitIsAFK
local UnitIsDND = UnitIsDND
local SendChatMessage = SendChatMessage local SendChatMessage = SendChatMessage
local InviteByName = InviteByName local InviteByName = InviteByName
local SetItemRef = SetItemRef local SetItemRef = SetItemRef
local GetFriendInfo = GetFriendInfo local GetFriendInfo = GetFriendInfo
local GetNumFriends = GetNumFriends local GetNumFriends = GetNumFriends
local GetQuestDifficultyColor = GetQuestDifficultyColor local GetQuestDifficultyColor = GetQuestDifficultyColor
local UnitInParty = UnitInParty
local UnitInRaid = UnitInRaid
local ToggleFriendsFrame = ToggleFriendsFrame 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 CHAT_MSG_AFK = CHAT_MSG_AFK
local ERR_FRIEND_ONLINE_SS, ERR_FRIEND_OFFLINE_S, FRIENDS, FRIENDS_LIST = ERR_FRIEND_ONLINE_SS, ERR_FRIEND_OFFLINE_S, FRIENDS, FRIENDS_LIST local CHAT_MSG_DND = CHAT_MSG_DND
local GUILD_ONLINE_LABEL, OPTIONS_MENU, PARTY_INVITE, PLAYER_STATUS = GUILD_ONLINE_LABEL, OPTIONS_MENU, PARTY_INVITE, PLAYER_STATUS local FRIENDS = FRIENDS
local LOCALIZED_CLASS_NAMES_MALE = LOCALIZED_CLASS_NAMES_MALE
local LOCALIZED_CLASS_NAMES_FEMALE = LOCALIZED_CLASS_NAMES_FEMALE local LOCALIZED_CLASS_NAMES_FEMALE = LOCALIZED_CLASS_NAMES_FEMALE
local CUSTOM_CLASS_COLORS = CUSTOM_CLASS_COLORS local LOCALIZED_CLASS_NAMES_MALE = LOCALIZED_CLASS_NAMES_MALE
local RAID_CLASS_COLORS = RAID_CLASS_COLORS
local L_EasyMenu = L_EasyMenu
local function GetNumberFriends() local function GetNumberFriends()
local numFriends = GetNumFriends() local numFriends = GetNumFriends()
@@ -71,7 +65,7 @@ end
local lastPanel local lastPanel
local levelNameString = "|cff%02x%02x%02x%d|r |cff%02x%02x%02x%s|r" 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 totalOnlineString = join("", GUILD_ONLINE_LABEL, ": %s/%s")
local tthead = {r = 0.4, g = 0.78, b = 1} 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} 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 dataValid = false
local function SortAlphabeticName(a, b) local function SortAlphabeticName(a, b)
if(a[1] and b[1]) then if a[1] and b[1] then
return a[1] < b[1] return a[1] < b[1]
end end
end end
local function BuildFriendTable(total) local function BuildFriendTable(total)
wipe(friendTable) wipe(friendTable)
local name, level, class, area, online, status, note local name, level, class, area, online
for i = 1, total do for i = 1, total do
name, level, class, area, online, status, note = GetFriendInfo(i) name, level, class, area, online = 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
if online then 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_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 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
end end
if next(friendTable) then
sort(friendTable, SortAlphabeticName) sort(friendTable, SortAlphabeticName)
end end
end
local function OnEvent(self, event) local function OnEvent(self, event, message)
local _, onlineFriends = GetNumberFriends() local _, onlineFriends = GetNumberFriends()
if event == "CHAT_MSG_SYSTEM" then if event == "CHAT_MSG_SYSTEM" then
local message = arg1
if not (find(message, friendOnline) or find(message, friendOffline)) then return end if not (find(message, friendOnline) or find(message, friendOffline)) then return end
end end
@@ -127,8 +116,6 @@ local function OnClick()
DT.tooltip:Hide() DT.tooltip:Hide()
if arg1 == "RightButton" then if arg1 == "RightButton" then
local menuCountWhispers = 0
local menuCountInvites = 0
local classc, levelc local classc, levelc
menuList[2].menuList = {} menuList[2].menuList = {}
@@ -136,14 +123,11 @@ local function OnClick()
for _, info in friendTable do for _, info in friendTable do
if info[5] then 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, levelc = (CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS)[info[3]], GetQuestDifficultyColor(info[2])
classc = classc or 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} 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})
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[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
end end
L_EasyMenu(menuList, menuFrame, "cursor", 0, 0, "MENU", 2) 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, levelc = (CUSTOM_CLASS_COLORS or RAID_CLASS_COLORS)[info[3]], GetQuestDifficultyColor(info[2])
classc = classc or 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 end
end end