From f123a5512f9e7a10cf78c5c9018e9b33d774f1c2 Mon Sep 17 00:00:00 2001 From: Taidtuskecyh Date: Sat, 2 Jan 2021 15:28:24 +0100 Subject: [PATCH 1/5] clean up on sending msgs --- Modules/Sync.lua | 9 +- Modules/comm.lua | 477 ++++++++++++++++++++++++++++++++++------------- 2 files changed, 352 insertions(+), 134 deletions(-) diff --git a/Modules/Sync.lua b/Modules/Sync.lua index af922d00..563e3d0d 100644 --- a/Modules/Sync.lua +++ b/Modules/Sync.lua @@ -222,7 +222,14 @@ function CommDKP_BroadcastFull_Init() return end if core.Broadcast.fullCheckbox:GetChecked() == true then - tempTable = { DKPTable=CommDKP:GetTable(CommDKP_DKPTable, true), DKP=CommDKP:GetTable(CommDKP_DKPHistory, true), Loot=CommDKP:GetTable(CommDKP_Loot, true), Archive=CommDKP:GetTable(CommDKP_Archive, true), MinBids=CommDKP:FormatPriceTable(), Teams=teams } + tempTable = { + DKPTable = CommDKP:GetTable(CommDKP_DKPTable, true), + DKP=CommDKP:GetTable(CommDKP_DKPHistory, true), + Loot=CommDKP:GetTable(CommDKP_Loot, true), + Archive=CommDKP:GetTable(CommDKP_Archive, true), + MinBids=CommDKP:FormatPriceTable(), + Teams=teams + } elseif core.Broadcast.mergeCheckbox:GetChecked() == true then tempTable = CommDKP_MergeTable_Create() end diff --git a/Modules/comm.lua b/Modules/comm.lua index 152107c9..59eb7684 100644 --- a/Modules/comm.lua +++ b/Modules/comm.lua @@ -430,101 +430,7 @@ function CommDKP.Sync:OnCommReceived(prefix, message, distribution, sender) if prefix == "CommDKPAllTabs" then -- receives full table broadcast --print("[CommunityDKP] COMMS: Full Broadcast Receive Started for team "..CommDKP:GetTeamName(_objReceived.CurrentTeam)); - table.sort(_objReceived.Data.Loot, function(a, b) - return a["date"] > b["date"] - end) - - table.sort(_objReceived.Data.DKP, function(a, b) - return a["date"] > b["date"] - end) - - if _objReceived.Data.MinBids ~= nil then - table.sort(_objReceived.Data.MinBids, function(a, b) - --Ensure that if there is a data issue, we detect and move on during syncs. - local aItem = a["item"] or GetNameFromLink(a["link"]); - local bItem = b["item"] or GetNameFromLink(b["link"]); - - return aItem < bItem - end) - end - - if (#CommDKP:GetTable(CommDKP_DKPHistory, true, _objReceived.CurrentTeam) > 0 and #CommDKP:GetTable(CommDKP_Loot, true, _objReceived.CurrentTeam) > 0) and - ( - _objReceived.Data.DKP[1].date < CommDKP:GetTable(CommDKP_DKPHistory, true, _objReceived.CurrentTeam)[1].date or - _objReceived.Data.Loot[1].date < CommDKP:GetTable(CommDKP_Loot, true, _objReceived.CurrentTeam)[1].date - ) then - - local entry1 = "Loot: ".._objReceived.Data.Loot[1].loot.." |cff616ccf"..L["WONBY"].." ".._objReceived.Data.Loot[1].player.." ("..date("%b %d @ %H:%M:%S", _objReceived.Data.Loot[1].date)..") by "..strsub(_objReceived.Data.Loot[1].index, 1, strfind(_objReceived.Data.Loot[1].index, "-")-1).."|r" - local entry2 = "DKP: |cff616ccf".._objReceived.Data.DKP[1].reason.." ("..date("%b %d @ %H:%M:%S", _objReceived.Data.DKP[1].date)..") - "..strsub(_objReceived.Data.DKP[1].index, 1, strfind(_objReceived.Data.DKP[1].index, "-")-1).."|r" - - StaticPopupDialogs["FULL_TABS_ALERT"] = { - text = "|CFFFF0000"..L["WARNING"].."|r: "..string.format(L["NEWERTABS1"], sender).."\n\n"..entry1.."\n\n"..entry2.."\n\n"..L["NEWERTABS2"], - button1 = L["YES"], - button2 = L["NO"], - OnAccept = function() - CommDKP:SetTable(CommDKP_DKPTable, true, _objReceived.Data.DKPTable, _objReceived.CurrentTeam); - CommDKP:SetTable(CommDKP_DKPHistory, true, _objReceived.Data.DKP, _objReceived.CurrentTeam); - CommDKP:SetTable(CommDKP_Loot, true, _objReceived.Data.Loot, _objReceived.CurrentTeam); - CommDKP:SetTable(CommDKP_Archive, true, _objReceived.Data.Archive, _objReceived.CurrentTeam); - - local minBidTable = CommDKP:FormatPriceTable(_objReceived.Data.MinBids, true); - local newMinBidTable = {} - for i=1, #minBidTable do - local id = minBidTable[i].itemID; - if id == nil and minBidTable[i].link ~= nil then - id = minBidTable[i].link:match("|Hitem:(%d+):") - end - if id ~= nil then - newMinBidTable[id] = minBidTable[i]; - end - - end - - CommDKP:SetTable(CommDKP_MinBids, true, newMinBidTable, _objReceived.CurrentTeam); - core.DB["teams"] = _objReceived.Teams; - - CommDKP:SetCurrentTeam(_objReceived.CurrentTeam) - - CommDKP:FilterDKPTable(core.currentSort, "reset") - CommDKP:StatusVerify_Update() - end, - timeout = 0, - whileDead = true, - hideOnEscape = true, - preferredIndex = 3, - } - StaticPopup_Show ("FULL_TABS_ALERT") - else - CommDKP:SetTable(CommDKP_DKPTable, true, _objReceived.Data.DKPTable, _objReceived.CurrentTeam); - CommDKP:SetTable(CommDKP_DKPHistory, true, _objReceived.Data.DKP, _objReceived.CurrentTeam); - CommDKP:SetTable(CommDKP_Loot, true, _objReceived.Data.Loot, _objReceived.CurrentTeam); - CommDKP:SetTable(CommDKP_Archive, true, _objReceived.Data.Archive, _objReceived.CurrentTeam); - - local minBidTable = CommDKP:FormatPriceTable(_objReceived.Data.MinBids, true); - local newMinBidTable = {} - for i=1, #minBidTable do - local id = minBidTable[i].itemID; - if id == nil and minBidTable[i].link ~= nil then - id = minBidTable[i].link:match("|Hitem:(%d+):") - end - if id ~= nil then - newMinBidTable[id] = minBidTable[i]; - end - - end - - CommDKP:SetTable(CommDKP_MinBids, true, newMinBidTable, _objReceived.CurrentTeam); - - core.DB["teams"] = _objReceived.Teams; - CommDKP:SetCurrentTeam(_objReceived.CurrentTeam) - -- reset seeds since this is a fullbroadcast - CommDKP:GetTable(CommDKP_DKPHistory, true, _objReceived.CurrentTeam).seed = 0 - CommDKP:GetTable(CommDKP_Loot, true, _objReceived.CurrentTeam).seed = 0 - CommDKP:FilterDKPTable(core.currentSort, "reset") - CommDKP:StatusVerify_Update() - end - - print("[CommunityDKP] COMMS: Full Broadcast Receive Finished for team "..CommDKP:GetTeamName(_objReceived.CurrentTeam)); + FullBroadcastReceived(_objReceived); return elseif prefix == "CommDKPMerge" then for i=1, #_objReceived.Data.DKP do @@ -968,7 +874,7 @@ function CommDKP.Sync:SendData(prefix, data, target, targetTeam) CurrentTeam = CommDKP:GetCurrentTeamIndex(), TargetTeam = targetTeam, Data = nil, - Prefix=prefix + Prefix = prefix }; if prefix == "CommDKPBuild" then @@ -979,9 +885,6 @@ function CommDKP.Sync:SendData(prefix, data, target, targetTeam) -- everything else but CommDKPBuild is getting compressed _objToSend.Data = data; -- if we send table everytime we have to serialize / deserialize anyway - --print("Last Sent "..prefix); - --_objLastSend = CopyTable(_objToSend); - local _compressedObj = CommDKP.Sync:SerializeTableToString(_objToSend); if _compressedObj == nil then @@ -997,14 +900,23 @@ function CommDKP.Sync:SendData(prefix, data, target, targetTeam) return; end - - -- non officers / not encoded + -- at this point object is ready to be sent + if IsInGuild() then - if prefix == "CommDKPQuery" or prefix == "CommDKPBuild" or prefix == "CommDKPTalents" or prefix == "CommDKPRoles" or prefix == "CDKProfileSend" then - CommDKP.Sync:SendCommMessage(prefix, _compressedObj, "GUILD") + if prefix == "CommDKPQuery" then + CommDKPQuerySend(prefix, _compressedObj, "GUILD"); + return; + elseif prefix == "CommDKPTalents" then + CommDKPTalentsSend(prefix, _compressedObj, "GUILD"); + return; + elseif prefix == "CommDKPRoles" then + CommDKPRolesSend(prefix, _compressedObj, "GUILD"); return; - elseif prefix == "CommDKPBidder" then -- bid submissions. Keep to raid. - CommDKP.Sync:SendCommMessage(prefix, _compressedObj, "RAID") + elseif prefix == "CDKProfileSend" then + CommDKPProfileSend(prefix, _compressedObj, "GUILD"); + return; + elseif prefix == "CommDKPBidder" then -- bid submissions. Keep to raid. + CommDKPBidderSend(prefix, _compressedObj, "RAID"); return; end end @@ -1012,49 +924,52 @@ function CommDKP.Sync:SendData(prefix, data, target, targetTeam) -- officers if IsInGuild() and core.IsOfficer then - if prefix == "CommDKPCommand" or prefix == "CommDKPRaidTime" then - CommDKP.Sync:SendCommMessage(prefix, _compressedObj, "RAID") + if prefix == "CommDKPCommand" then + CommDKPCommandSend(prefix, _compressedObj, "RAID"); + return; + end + + if prefix == "CommDKPRaidTime" then + CommDKPRaidTimeSend(prefix, _compressedObj, "RAID"); return; end if prefix == "CommDKPBCastMsg" then - CommDKP.Sync:SendCommMessage(prefix, _compressedObj, "RAID") -- changed to raid from guild + CommDKPCastMsgSend(prefix, _compressedObj, "RAID"); return; end - if (prefix == "CommDKPZSumBank" or prefix == "CommDKPBossLoot" or prefix == "CommDKPBidShare") then -- Zero Sum bank/loot table/bid table data and bid submissions. Keep to raid. - CommDKP.Sync:SendCommMessage(prefix, _compressedObj, "RAID") + if prefix == "CommDKPZSumBank" then + CommDKPZSumBankSend(prefix, _compressedObj, "RAID"); return; - end + end + + if prefix == "CommDKPBossLoot" then + CommDKPBossLootSend(prefix, _compressedObj, "RAID"); + return; + end + + if prefix == "CommDKPBidShare" then + CommDKPBidShareSend(prefix, _compressedObj, "RAID"); + return; + end if prefix == "CommDKPPreBroad" then - if target then - CommDKP.Sync:SendCommMessage(prefix, _compressedObj, target); - else - CommDKP.Sync:SendCommMessage(prefix, _compressedObj, "GUILD"); - end + CommDKPPreBroadSend(prefix, _compressedObj, target); return; end - if prefix == "CommDKPAllTabs" or prefix == "CommDKPMerge" then - if target then - if prefix == "CommDKPAllTabs" then - print("[CommunityDKP] COMMS: You started Full Broadcast for team "..CommDKP:GetTeamName(CommDKP:GetCurrentTeamIndex()).." to player "..target); - elseif prefix == "CommDKPMerge" then - print("[CommunityDKP] COMMS: You started 2-week broadcast for team "..CommDKP:GetTeamName(CommDKP:GetCurrentTeamIndex()).." to player "..target); - end - CommDKP.Sync:SendCommMessage(prefix, _compressedObj, "WHISPER", target, "NORMAL", CommDKP_BroadcastFull_Callback, nil) - else - if prefix == "CommDKPAllTabs" then - CommDKP.Sync:SendData("CommDKPPreBroad", "CommDKPAllTabs", nil); - elseif prefix == "CommDKPMerge" then - CommDKP.Sync:SendData("CommDKPPreBroad", "CommDKPMerge", nil); - end - CommDKP.Sync:SendCommMessage(prefix, _compressedObj, "GUILD", nil, "NORMAL", CommDKP_BroadcastFull_Callback, nil) - end - return + if prefix == "CommDKPAllTabs" then + FullBroadcastSend(prefix, _compressedObj, target); + return; + end + + if prefix == "CommDKPMerge" then + TableMergeSend(prefix, _compressedObj, target); + return; end + -- what is being sent here? if target then CommDKP.Sync:SendCommMessage(prefix, _compressedObj, "WHISPER", target) else @@ -1063,6 +978,7 @@ function CommDKP.Sync:SendData(prefix, data, target, targetTeam) end end + function CommDKP.Sync:SerializeTableToString(data) local serialized = nil; @@ -1079,6 +995,7 @@ function CommDKP.Sync:SerializeTableToString(data) return packet; end + function CommDKP.Sync:DeserializeStringToTable(_string) if not _string == nil then @@ -1096,3 +1013,297 @@ function CommDKP.Sync:DeserializeStringToTable(_string) end end + + +---------- +-- FULL BROADCAST HANDLERS +---------- +function FullBroadcastSend(prefix, commObject, channel) + local _channel = channel or "GUILD"; + local _prefix = prefix or "CommDKPAllTabs"; + + if channel then -- check if we are targeting specific player + print("[CommunityDKP] COMMS: You started Full Broadcast for team "..CommDKP:GetTeamName(CommDKP:GetCurrentTeamIndex()).." to player "..channel); + CommDKP.Sync:SendCommMessage(prefix, commObject, "WHISPER", channel, "NORMAL", CommDKP_BroadcastFull_Callback, nil); + else + CommDKP.Sync:SendData("CommDKPPreBroad", prefix, nil); + CommDKP.Sync:SendCommMessage(prefix, commObject, _channel, nil, "NORMAL", CommDKP_BroadcastFull_Callback, nil); + end +end + + +function FullBroadcastReceived(commObject) + --[[ + commObject = { + Teams = {}, + CurrentTeam = "0", + Data = { + DKPTable = {}, + DKP = {}, + Loot = {}, + Archive = {}, + MinBids = {}, + Teams= {} + } + } + --]] + + table.sort(commObject.Data.Loot, function(a, b) + return a["date"] > b["date"] + end) + + table.sort(commObject.Data.DKP, function(a, b) + return a["date"] > b["date"] + end) + + if commObject.Data.MinBids ~= nil then + table.sort(commObject.Data.MinBids, function(a, b) + --Ensure that if there is a data issue, we detect and move on during syncs. + local aItem = a["item"] or GetNameFromLink(a["link"]); + local bItem = b["item"] or GetNameFromLink(b["link"]); + + return aItem < bItem + end) + end + + if (#CommDKP:GetTable(CommDKP_DKPHistory, true, commObject.CurrentTeam) > 0 and #CommDKP:GetTable(CommDKP_Loot, true, commObject.CurrentTeam) > 0) and + ( + commObject.Data.DKP[1].date < CommDKP:GetTable(CommDKP_DKPHistory, true, commObject.CurrentTeam)[1].date or + commObject.Data.Loot[1].date < CommDKP:GetTable(CommDKP_Loot, true, commObject.CurrentTeam)[1].date + ) then + + local entry1 = "Loot: "..commObject.Data.Loot[1].loot.." |cff616ccf"..L["WONBY"].." "..commObject.Data.Loot[1].player.." ("..date("%b %d @ %H:%M:%S", commObject.Data.Loot[1].date)..") by "..strsub(commObject.Data.Loot[1].index, 1, strfind(commObject.Data.Loot[1].index, "-")-1).."|r" + local entry2 = "DKP: |cff616ccf"..commObject.Data.DKP[1].reason.." ("..date("%b %d @ %H:%M:%S", commObject.Data.DKP[1].date)..") - "..strsub(commObject.Data.DKP[1].index, 1, strfind(commObject.Data.DKP[1].index, "-")-1).."|r" + + StaticPopupDialogs["FULL_TABS_ALERT"] = { + text = "|CFFFF0000"..L["WARNING"].."|r: "..string.format(L["NEWERTABS1"], sender).."\n\n"..entry1.."\n\n"..entry2.."\n\n"..L["NEWERTABS2"], + button1 = L["YES"], + button2 = L["NO"], + OnAccept = function() + CommDKP:SetTable(CommDKP_DKPTable, true, commObject.Data.DKPTable, commObject.CurrentTeam); + CommDKP:SetTable(CommDKP_DKPHistory, true, commObject.Data.DKP, commObject.CurrentTeam); + CommDKP:SetTable(CommDKP_Loot, true, commObject.Data.Loot, commObject.CurrentTeam); + CommDKP:SetTable(CommDKP_Archive, true, commObject.Data.Archive, commObject.CurrentTeam); + + local minBidTable = CommDKP:FormatPriceTable(commObject.Data.MinBids, true); + local newMinBidTable = {} + for i=1, #minBidTable do + local id = minBidTable[i].itemID; + if id == nil and minBidTable[i].link ~= nil then + id = minBidTable[i].link:match("|Hitem:(%d+):") + end + if id ~= nil then + newMinBidTable[id] = minBidTable[i]; + end + end + + CommDKP:SetTable(CommDKP_MinBids, true, newMinBidTable, commObject.CurrentTeam); + core.DB["teams"] = commObject.Teams; + + CommDKP:SetCurrentTeam(commObject.CurrentTeam) + + CommDKP:FilterDKPTable(core.currentSort, "reset") + CommDKP:StatusVerify_Update() + end, + timeout = 0, + whileDead = true, + hideOnEscape = true, + preferredIndex = 3, + } + StaticPopup_Show ("FULL_TABS_ALERT") + else + CommDKP:SetTable(CommDKP_DKPTable, true, commObject.Data.DKPTable, commObject.CurrentTeam); + CommDKP:SetTable(CommDKP_DKPHistory, true, commObject.Data.DKP, commObject.CurrentTeam); + CommDKP:SetTable(CommDKP_Loot, true, commObject.Data.Loot, commObject.CurrentTeam); + CommDKP:SetTable(CommDKP_Archive, true, commObject.Data.Archive, commObject.CurrentTeam); + + local minBidTable = CommDKP:FormatPriceTable(commObject.Data.MinBids, true); + local newMinBidTable = {} + for i=1, #minBidTable do + local id = minBidTable[i].itemID; + if id == nil and minBidTable[i].link ~= nil then + id = minBidTable[i].link:match("|Hitem:(%d+):") + end + if id ~= nil then + newMinBidTable[id] = minBidTable[i]; + end + end + + CommDKP:SetTable(CommDKP_MinBids, true, newMinBidTable, commObject.CurrentTeam); + + core.DB["teams"] = commObject.Teams; + CommDKP:SetCurrentTeam(commObject.CurrentTeam) + -- reset seeds since this is a fullbroadcast + CommDKP:GetTable(CommDKP_DKPHistory, true, commObject.CurrentTeam).seed = 0 + CommDKP:GetTable(CommDKP_Loot, true, commObject.CurrentTeam).seed = 0 + CommDKP:FilterDKPTable(core.currentSort, "reset"); + CommDKP:StatusVerify_Update(); + end + + print("[CommunityDKP] COMMS: Full broadcast receive finished for team "..CommDKP:GetTeamName(commObject.CurrentTeam)); +end + + +---------- +-- 2-WEEK MERGE HANDLERS +---------- +function TableMergeSend(prefix, commObject, channel) + local _channel = channel or "GUILD"; + local _prefix = prefix or "CommDKPMerge"; + + if channel then -- check if we are targeting specific player + print("[CommunityDKP] COMMS: You started 2-week broadcast for team "..CommDKP:GetTeamName(CommDKP:GetCurrentTeamIndex()).." to player "..channel); + CommDKP.Sync:SendCommMessage(prefix, commObject, "WHISPER", channel, "NORMAL", CommDKP_BroadcastFull_Callback, nil); + else + CommDKP.Sync:SendData("CommDKPPreBroad", prefix, nil); + CommDKP.Sync:SendCommMessage(prefix, commObject, _channel, nil, "NORMAL", CommDKP_BroadcastFull_Callback, nil); + end +end + + +---------- +-- CommDKPQuery message HANDLERS +---------- +function CommDKPQuerySend(prefix, commObject, channel) + local _channel = channel or "GUILD"; + local _prefix = prefix or "CommDKPQuery"; + CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); +end + + +function CommDKPQueryReceived(commObject) + +end + + +---------- +-- CommDKPBuild message HANDLERS +---------- + + +---------- +-- CommDKPTalents message HANDLERS +---------- + +function CommDKPTalentsSend(prefix, commObject, channel) + local _channel = channel or "GUILD"; + local _prefix = prefix or "CommDKPTalents"; + CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); +end + + +---------- +-- CommDKPRoles message HANDLERS +---------- + +function CommDKPRolesSend(prefix, commObject, channel) + local _channel = channel or "GUILD"; + local _prefix = prefix or "CommDKPRoles"; + CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); +end + + +---------- +-- CDKProfileSend message HANDLERS +---------- + +function CommDKPProfileSend(prefix, commObject, channel) + local _channel = channel or "GUILD"; + local _prefix = prefix or "CDKProfileSend"; + CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); +end + + +---------- +-- CommDKPBidder message HANDLERS +---------- + +function CommDKPBidderSend(prefix, commObject, channel) + local _channel = channel or "RAID"; + local _prefix = prefix or "CommDKPBidder"; + CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); +end + + +---------- +-- CommDKPCommand message HANDLERS +---------- + +function CommDKPCommandSend(prefix, commObject, channel) + local _channel = channel or "RAID"; + local _prefix = prefix or "CommDKPCommand"; + CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); +end + + +---------- +-- CommDKPRaidTime message HANDLERS +---------- + +function CommDKPRaidTimeSend(prefix, commObject, channel) + local _channel = channel or "RAID"; + local _prefix = prefix or "CommDKPRaidTime"; + CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); +end + + +---------- +-- CommDKPBCastMsg message HANDLERS +---------- + +function CommDKPCastMsgSend(prefix, commObject, channel) + local _channel = channel or "RAID"; + local _prefix = prefix or "CommDKPBCastMsg"; + CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); +end + + +---------- +-- CommDKPZSumBank message HANDLERS +---------- + +function CommDKPZSumBankSend(prefix, commObject, channel) + local _channel = channel or "RAID"; + local _prefix = prefix or "CommDKPZSumBank"; + CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); +end + + +---------- +-- CommDKPBossLoot message HANDLERS +---------- + +function CommDKPBossLootSend(prefix, commObject, channel) + local _channel = channel or "RAID"; + local _prefix = prefix or "CommDKPBossLoot"; + CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); +end + + +---------- +-- CommDKPBidShare message HANDLERS +---------- + +function CommDKPBidShareSend(prefix, commObject, channel) + local _channel = channel or "RAID"; + local _prefix = prefix or "CommDKPBidShare"; + CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); +end + +---------- +-- CommDKPPreBroad message HANDLERS +---------- + +function CommDKPPreBroadSend(prefix, commObject, channel) + local _channel = channel or "GUILD"; + local _prefix = prefix or "CommDKPPreBroad"; + CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); +end + +---------- +-- TODO message HANDLERS +---------- + +---------- +-- TODO message HANDLERS +---------- \ No newline at end of file From 889b878eb86f86ae32883dc99d891c00cfef1a5c Mon Sep 17 00:00:00 2001 From: Taidtuskecyh Date: Sat, 2 Jan 2021 21:04:03 +0100 Subject: [PATCH 2/5] second phase --- Modules/comm.lua | 1785 +++++++++++++++++++++++++--------------------- 1 file changed, 988 insertions(+), 797 deletions(-) diff --git a/Modules/comm.lua b/Modules/comm.lua index 59eb7684..06b6a7bc 100644 --- a/Modules/comm.lua +++ b/Modules/comm.lua @@ -88,38 +88,19 @@ function GetNameFromLink(link) return Name; end +-- main functions that receives all communication via appropriate channels function CommDKP.Sync:OnCommReceived(prefix, message, distribution, sender) + + if not core.Initialized or core.IsOfficer == nil then + return; + end - --local msgType = prefix or "nil"; - --local name = sender or "nil"; - --print("Comms Prefix: "..msgType.." Sender: "..name); - - if not core.Initialized or core.IsOfficer == nil then return end if prefix then - local decoded = LibDeflate:DecodeForWoWAddonChannel(message); local decompressed = LibDeflate:DecompressDeflate(decoded); if decompressed == nil then -- this checks if message was previously encoded and compressed, only case we allow this is CommDKPBuild - -- check if 2.1.2 is trying to communicate - if prefix == "CommDKPBuild" and sender ~= UnitName("player") then - local LastVerCheck = time() - core.LastVerCheck; - - if LastVerCheck > 900 then -- limits the Out of Date message from firing more than every 15 minutes - if tonumber(message) > core.BuildNumber then - core.LastVerCheck = time(); - CommDKP:Print(L["OUTOFDATEANNOUNCE"]) - end - end - - if tonumber(message) < core.BuildNumber then -- returns build number if receiving party has a newer version - CommDKP.Sync:SendData("CommDKPBuild", tostring(core.BuildNumber)) - end - return; - elseif prefix == "CommDKPBuild" and sender == UnitName("player") then - return; - end - return; + CommDKP:Print("Unknown comm Received with prefix "..prefix.." from "..sender); end -- decompresed is not null meaning data is coming from 2.3.0 or CommunityDKP @@ -135,725 +116,113 @@ function CommDKP.Sync:OnCommReceived(prefix, message, distribution, sender) if success then if prefix == "CommDKPQuery" then - ------------------------------ -- This has been deprecated -- ------------------------------ - return; elseif prefix == "CommDKPSeed" then - if sender ~= UnitName("player") then - - --[[ - Data = { - ["0"] = { - ["Loot"] = "name-date", - ["DKPHistory"] = "name-date" - }, - ["1"] = { - ["Loot"] = "start", - ["DKPHistory"] = "start" - } - } - --]] - - for tableIndex,v in pairs(_objReceived.Data) do - if(type(v) == "table") then - for property,value in pairs(v) do - if value ~= "start" then - - local off1,date1 = strsplit("-", value); - - if CommDKP:ValidateSender(off1) then - if property == "Loot" then - - local searchLoot = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_Loot, true, tostring(tableIndex)), value, "index") - - if not searchLoot then - CommDKP:GetTable(CommDKP_Loot, true, tostring(tableIndex)).seed = value - end - - elseif property == "DKPHistory" then - local searchDKPHistory = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPHistory, true, tostring(tableIndex)), value, "index") - - if not searchDKPHistory then - CommDKP:GetTable(CommDKP_DKPHistory, true, tostring(tableIndex)).seed = value - end - end - end - end - end - end - end - end + CommDKPSeedReceived(_objReceived, sender); + return; elseif prefix == "CommDKPBidder" then - if core.BidInProgress and core.IsOfficer then - if _objReceived.Data == "pass" then - -- CommDKP:Print(sender.." has passed.") --TODO: Let's do something different here at some point. - return - else - CommDKP_CHAT_MSG_WHISPER(_objReceived.Data, sender) - return - end - else - return - end + CommDKPBidderReceived(_objReceived, sender); + return; elseif prefix == "CommDKPTeams" then - CommDKP:GetTable(CommDKP_DB, false)["teams"] = _objReceived.Teams + CommDKPTeamsReceived(_objReceived, sender); return; elseif prefix == "CDKProfileSend" then - local profile = _objReceived.Data; - CommDKP:GetTable(CommDKP_Profiles, true, _objReceived.CurrentTeam)[profile.player] = profile; - - --Legacy Version Tracking - local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true), profile.player, "player") - if search then - CommDKP:GetTable(CommDKP_DKPTable, true)[search[1][1]].version = profile.version; - end - + CDKProfileSendReceived(_objReceived, sender); + return; elseif prefix == "CommDKPCurTeam" then - CommDKP:SetCurrentTeam(_objReceived.CurrentTeam) -- this also refreshes all the tables/views/graphs + CommDKPCurTeamReceived(_objReceived, sender); return; elseif prefix == "CommDKPTalents" then - - for teamIndex,team in pairs(_objReceived.Teams) do - local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, teamIndex), sender, "player") - - if search then - local curSelection = CommDKP:GetTable(CommDKP_DKPTable, true, teamIndex)[search[1][1]] - curSelection.spec = _objReceived.Data; - - if CommDKP:GetTable(CommDKP_Profiles, true, teamIndex)[sender] == nil then - CommDKP:GetTable(CommDKP_Profiles, true, teamIndex)[sender] = CommDKP:GetDefaultEntity(); - end - - CommDKP:GetTable(CommDKP_Profiles, true, teamIndex)[sender].spec = _objReceived.Data; - end - - end - - return + CommDKPTalentsReceived(_objReceived, sender); + return; elseif prefix == "CommDKPRoles" then - for teamIndex,team in pairs(_objReceived.Teams) do - local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, teamIndex), sender, "player") - local curClass = "None"; - - if search then - local curSelection = CommDKP:GetTable(CommDKP_DKPTable, true, teamIndex)[search[1][1]] - curClass = CommDKP:GetTable(CommDKP_DKPTable, true, teamIndex)[search[1][1]].class - - if curClass == "WARRIOR" then - local a,b,c = strsplit("/", _objReceived.Data) - if strfind(_objReceived.Data, "Protection") or (tonumber(c) and tonumber(strsub(c, 1, -2)) > 15) then - curSelection.role = L["TANK"] - else - curSelection.role = L["MELEEDPS"] - end - elseif curClass == "PALADIN" then - if strfind(_objReceived.Data, "Protection") then - curSelection.role = L["TANK"] - elseif strfind(_objReceived.Data, "Holy") then - curSelection.role = L["HEALER"] - else - curSelection.role = L["MELEEDPS"] - end - elseif curClass == "HUNTER" then - curSelection.role = L["RANGEDPS"] - elseif curClass == "ROGUE" then - curSelection.role = L["MELEEDPS"] - elseif curClass == "PRIEST" then - if strfind(_objReceived.Data, "Shadow") then - curSelection.role = L["CASTERDPS"] - else - curSelection.role = L["HEALER"] - end - elseif curClass == "SHAMAN" then - if strfind(_objReceived.Data, "Restoration") then - curSelection.role = L["HEALER"] - elseif strfind(_objReceived.Data, "Elemental") then - curSelection.role = L["CASTERDPS"] - else - curSelection.role = L["MELEEDPS"] - end - elseif curClass == "MAGE" then - curSelection.role = L["CASTERDPS"] - elseif curClass == "WARLOCK" then - curSelection.role = L["CASTERDPS"] - elseif curClass == "DRUID" then - if strfind(_objReceived.Data, "Feral") then - curSelection.role = L["TANK"] - elseif strfind(_objReceived.Data, "Balance") then - curSelection.role = L["CASTERDPS"] - else - curSelection.role = L["HEALER"] - end - else - curSelection.role = L["NOROLEDETECTED"] - end - - if CommDKP:GetTable(CommDKP_Profiles, true, teamIndex)[sender] == nil then - CommDKP:GetTable(CommDKP_Profiles, true, teamIndex)[sender] = CommDKP:GetDefaultEntity(); - end - - CommDKP:GetTable(CommDKP_Profiles, true, teamIndex)[sender].role = curSelection.role; - CommDKP:GetTable(CommDKP_DKPTable, true, teamIndex)[search[1][1]].role = curSelection.role; - end - end + CommDKPRolesReceived(_objReceived, sender); return; - elseif prefix == "CommDKPBuild" and sender ~= UnitName("player") then - - local LastVerCheck = time() - core.LastVerCheck; - - if LastVerCheck > 900 then -- limits the Out of Date message from firing more than every 15 minutes - if tonumber(_objReceived.Data) > core.BuildNumber then - core.LastVerCheck = time(); - CommDKP:Print(L["OUTOFDATEANNOUNCE"]) - end - end - - if tonumber(_objReceived.Data) < core.BuildNumber then -- returns build number if receiving party has a newer version - CommDKP.Sync:SendData("CommDKPBuild", tostring(core.BuildNumber)) - end + elseif prefix == "CommDKPBuild" then + CommDKPBuildReceived(_objReceived, sender); return; - end --- -- OFFICER LEVEL DATA --- if CommDKP:ValidateSender(sender) then -- validates sender as an officer. fail-safe to prevent addon alterations to manipulate DKP table + if (prefix == "CommDKPBCastMsg") and sender ~= UnitName("player") then - CommDKP:Print(_objReceived.Data) + CommDKP:Print(_objReceived.Data); + return; elseif prefix == "CommDKPPreBroad" then - if sender ~= UnitName("player") then - if _objReceived.Data == "CommDKPAllTabs" then - print("[CommunityDKP] COMMS: Full broadcast started by "..sender.." for team "..CommDKP:GetTeamName(_objReceived.CurrentTeam)); - elseif _objReceived.Data == "CommDKPMerge" then - print("[CommunityDKP] COMMS: 2-week merge broadcast started by "..sender.." for team "..CommDKP:GetTeamName(_objReceived.CurrentTeam)); - end - else - if _objReceived.Data == "CommDKPAllTabs" then - print("[CommunityDKP] COMMS: You started Full Broadcast for team "..CommDKP:GetTeamName(_objReceived.CurrentTeam)); - elseif _objReceived.Data == "CommDKPMerge" then - print("[CommunityDKP] COMMS: You started 2-week broadcast for team "..CommDKP:GetTeamName(_objReceived.CurrentTeam)); - end - end - elseif (prefix == "CommDKPCommand") then - local command, arg1, arg2, arg3, arg4 = strsplit("#", _objReceived.Data); - if sender ~= UnitName("player") then - if command == "StartTimer" then - CommDKP:StartTimer(arg1, arg2) - elseif command == "StartBidTimer" then - CommDKP:StartBidTimer(arg1, arg2, arg3) - core.BiddingInProgress = true; - if strfind(arg1, "{") then - CommDKP:Print("Bid timer extended by "..tonumber(strsub(arg1, strfind(arg1, "{")+1)).." seconds.") - end - elseif command == "StopBidTimer" then - if CommDKP.BidTimer then - CommDKP.BidTimer:SetScript("OnUpdate", nil) - CommDKP.BidTimer:Hide() - core.BiddingInProgress = false; - end - if core.BidInterface and #core.BidInterface.LootTableButtons > 0 then - for i=1, #core.BidInterface.LootTableButtons do - ActionButton_HideOverlayGlow(core.BidInterface.LootTableButtons[i]) - end - end - C_Timer.After(2, function() - if core.BidInterface and core.BidInterface:IsShown() and not core.BiddingInProgress then - core.BidInterface:Hide() - end - end) - elseif command == "BidInfo" then - if not core.BidInterface then - core.BidInterface = core.BidInterface or CommDKP:BidInterface_Create() -- initiates bid window if it hasn't been created - end - if core.DB.defaults.AutoOpenBid and not core.BidInterface:IsShown() then -- toggles bid window if option is set to - CommDKP:BidInterface_Toggle() - end - - CommDKP:CurrItem_Set(arg1, arg2, arg3, arg4) -- populates bid window - end - end - elseif prefix == "CommDKPRaidTime" and sender ~= UnitName("player") and core.IsOfficer and CommDKP.ConfigTab2 then - - local command, args = strsplit(",", _objReceived.Data); - if command == "start" then - CommDKP:SetCurrentTeam(_objReceived.CurrentTeam); -- on start change the currentTeam - local arg1, arg2, arg3, arg4, arg5, arg6 = strsplit(" ", args, 6) - - if arg1 == "true" then arg1 = true else arg1 = false end - if arg4 == "true" then arg4 = true else arg4 = false end - if arg5 == "true" then arg5 = true else arg5 = false end - if arg6 == "true" then arg6 = true else arg6 = false end - - if arg2 ~= nil then - CommDKP.ConfigTab2.RaidTimerContainer.interval:SetNumber(tonumber(arg2)); - core.DB.modes.increment = tonumber(arg2); - end - if arg3 ~= nil then - CommDKP.ConfigTab2.RaidTimerContainer.bonusvalue:SetNumber(tonumber(arg3)); - core.DB.DKPBonus.IntervalBonus = tonumber(arg3); - end - if arg4 ~= nil then - CommDKP.ConfigTab2.RaidTimerContainer.StartBonus:SetChecked(arg4); - core.DB.DKPBonus.GiveRaidStart = arg4; - end - if arg5 ~= nil then - CommDKP.ConfigTab2.RaidTimerContainer.EndRaidBonus:SetChecked(arg5); - core.DB.DKPBonus.GiveRaidEnd = arg5; - end - if arg6 ~= nil then - CommDKP.ConfigTab2.RaidTimerContainer.StandbyInclude:SetChecked(arg6); - core.DB.DKPBonus.IncStandby = arg6; - end - - CommDKP:StartRaidTimer(arg1) - elseif command == "stop" then - CommDKP:StopRaidTimer() - elseif strfind(command, "sync", 1) then - local _, syncTimer, syncSecondCount, syncMinuteCount, syncAward = strsplit(" ", command, 5) - CommDKP:StartRaidTimer(nil, syncTimer, syncSecondCount, syncMinuteCount, syncAward) - CommDKP:SetCurrentTeam(_objReceived.CurrentTeam); - core.RaidInProgress = true - end - elseif prefix == "CommDKPRaidTime" and sender ~= UnitName("player") and not core.IsOfficer and not CommDKP.ConfigTab2 then -- non officer receiving StartRaidTime - CommDKP:SetCurrentTeam(_objReceived.CurrentTeam); -- only change currentTeam to raid leads + CommDKPPreBroadReceived(_objReceived, sender); + return; + elseif prefix == "CommDKPCommand" then + CommDKPCommandReceived(_objReceived, sender); + return; + elseif prefix == "CommDKPRaidTime" then + CommDKPRaidTimeReceived(_objReceived, sender); + return; end if (sender ~= UnitName("player")) then - if prefix == "CommDKPLootDist" or prefix == "CommDKPDKPDist" or prefix == "CommDKPDelLoot" or prefix == "CommDKPDelSync" or prefix == "CommDKPMinBid" or prefix == "CDKPWhitelist" - or prefix == "CommDKPDKPModes" or prefix == "CommDKPStand" or prefix == "CommDKPZSumBank" or prefix == "CommDKPBossLoot" or prefix == "CommDKPDecay" or prefix == "CommDKPDelUsers" or - prefix == "CommDKPAllTabs" or prefix == "CommDKPBidShare" or prefix == "CommDKPMerge" or prefix == "CommDKPSetPrice" or prefix == "CommDKPMaxBid" or prefix == "CommDKPAddUsers" then - - if prefix == "CommDKPAllTabs" then -- receives full table broadcast - --print("[CommunityDKP] COMMS: Full Broadcast Receive Started for team "..CommDKP:GetTeamName(_objReceived.CurrentTeam)); - - FullBroadcastReceived(_objReceived); - return - elseif prefix == "CommDKPMerge" then - for i=1, #_objReceived.Data.DKP do - local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPHistory, true, _objReceived.CurrentTeam), _objReceived.Data.DKP[i].index, "index") - - if not search and ((CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam).DKPMeta and CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam).DKPMeta < _objReceived.Data.DKP[i].date) or (not CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam).DKPMeta)) then -- prevents adding entry if this entry has already been archived - local players = {strsplit(",", strsub(_objReceived.Data.DKP[i].players, 1, -2))} - local dkp - - if strfind(_objReceived.Data.DKP[i].dkp, "%-%d*%.?%d+%%") then - dkp = {strsplit(",", _objReceived.Data.DKP[i].dkp)} - end - - if _objReceived.Data.DKP[i].deletes then -- adds deletedby field to entry if the received table is a delete entry - local search_del = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPHistory, true, _objReceived.CurrentTeam), _objReceived.Data.DKP[i].deletes, "index") - - if search_del then - CommDKP:GetTable(CommDKP_DKPHistory, true, _objReceived.CurrentTeam)[search_del[1][1]].deletedby = _objReceived.Data.DKP[i].index - end - end - - if not _objReceived.Data.DKP[i].deletedby then - local search_del = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPHistory, true, _objReceived.CurrentTeam), _objReceived.Data.DKP[i].index, "deletes") - - if search_del then - _objReceived.Data.DKP[i].deletedby = CommDKP:GetTable(CommDKP_DKPHistory, true, _objReceived.CurrentTeam)[search_del[1][1]].index - end - end - - table.insert(CommDKP:GetTable(CommDKP_DKPHistory, true, _objReceived.CurrentTeam), _objReceived.Data.DKP[i]) - - for j=1, #players do - if players[j] then - local findEntry = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam), players[j], "player") - - if strfind(_objReceived.Data.DKP[i].dkp, "%-%d*%.?%d+%%") then -- handles decay entries - if findEntry then - CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[findEntry[1][1]].dkp = CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[findEntry[1][1]].dkp + tonumber(dkp[j]) - else - if not CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[j]] or (CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[j]] and CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[j]].deleted ~= true) then - CommDKP_Profile_Create(players[j], tonumber(dkp[j]), nil, nil, _objReceived.CurrentTeam) - end - end - else - if findEntry then - CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[findEntry[1][1]].dkp = CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[findEntry[1][1]].dkp + tonumber(_objReceived.Data.DKP[i].dkp) - if (tonumber(_objReceived.Data.DKP[i].dkp) > 0 and not _objReceived.Data.DKP[i].deletes) or (tonumber(_objReceived.Data.DKP[i].dkp) < 0 and _objReceived.Data.DKP[i].deletes) then -- adjust lifetime if it's a DKP gain or deleting a DKP gain - CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[findEntry[1][1]].lifetime_gained = CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[findEntry[1][1]].lifetime_gained + _objReceived.Data.DKP[i].dkp -- NOT if it's a DKP penalty or deleteing a DKP penalty - end - else - if not CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[j]] or (CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[j]] and CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[j]].deleted ~= true) then - local class - - if (tonumber(_objReceived.Data.DKP[i].dkp) > 0 and not _objReceived.Data.DKP[i].deletes) or (tonumber(_objReceived.Data.DKP[i].dkp) < 0 and _objReceived.Data.DKP[i].deletes) then - CommDKP_Profile_Create(players[j], tonumber(_objReceived.Data.DKP[i].dkp), tonumber(_objReceived.Data.DKP[i].dkp), nil, _objReceived.CurrentTeam) - else - CommDKP_Profile_Create(players[j], tonumber(_objReceived.Data.DKP[i].dkp), nil, nil, _objReceived.CurrentTeam) - end - end - end - end - end - end - end - end - - if CommDKP.ConfigTab6 and CommDKP.ConfigTab6.history and CommDKP.ConfigTab6:IsShown() then - CommDKP:DKPHistory_Update(true) - end - - for i=1, #_objReceived.Data.Loot do - local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_Loot, true, _objReceived.CurrentTeam), _objReceived.Data.Loot[i].index, "index") - - if not search and ((CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam).LootMeta and CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam).LootMeta < _objReceived.Data.Loot[i].date) or (not CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam).LootMeta)) then -- prevents adding entry if this entry has already been archived - if _objReceived.Data.Loot[i].deletes then - local search_del = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_Loot, true, _objReceived.CurrentTeam), _objReceived.Data.Loot[i].deletes, "index") - - if search_del and not CommDKP:GetTable(CommDKP_Loot, true, _objReceived.CurrentTeam)[search_del[1][1]].deletedby then - CommDKP:GetTable(CommDKP_Loot, true, _objReceived.CurrentTeam)[search_del[1][1]].deletedby = _objReceived.Data.Loot[i].index - end - end - - if not _objReceived.Data.Loot[i].deletedby then - local search_del = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_Loot, true, _objReceived.CurrentTeam), _objReceived.Data.Loot[i].index, "deletes") - - if search_del then - _objReceived.Data.Loot[i].deletedby = CommDKP:GetTable(CommDKP_Loot, true, _objReceived.CurrentTeam)[search_del[1][1]].index - end - end - - table.insert(CommDKP:GetTable(CommDKP_Loot, true, _objReceived.CurrentTeam), _objReceived.Data.Loot[i]) - - local findEntry = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam), _objReceived.Data.Loot[i].player, "player") - - if findEntry then - CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[findEntry[1][1]].dkp = CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[findEntry[1][1]].dkp + _objReceived.Data.Loot[i].cost - CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[findEntry[1][1]].lifetime_spent = CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[findEntry[1][1]].lifetime_spent + _objReceived.Data.Loot[i].cost - else - if not CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data.Loot[i].player] or (CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data.Loot[i].player] and CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data.Loot[i].player].deleted ~= true) then - CommDKP_Profile_Create(_objReceived.Data.Loot[i].player, _objReceived.Data.Loot[i].cost, 0, _objReceived.Data.Loot[i].cost, _objReceived.CurrentTeam) - end - end - end - end - - for i=1, #_objReceived.Data.Profiles do - - local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam), _objReceived.Data.Profiles[i].player, "player") - - if search then - if CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search[1][1]].class == "NONE" then - CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search[1][1]].class = _objReceived.Data.Profiles[i].class - end - else - tinsert(CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam),_objReceived.Data.Profiles[i]) - end - end - - CommDKP:LootHistory_Reset() - CommDKP:LootHistory_Update(L["NOFILTER"]) - CommDKP:FilterDKPTable(core.currentSort, "reset") - CommDKP:StatusVerify_Update() - return - elseif prefix == "CommDKPLootDist" then - local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam), _objReceived.Data.player, "player") - if search then - local DKPTable = CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search[1][1]] - DKPTable.dkp = DKPTable.dkp + _objReceived.Data.cost - DKPTable.lifetime_spent = DKPTable.lifetime_spent + _objReceived.Data.cost - else - if not CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data.player] or (CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data.player] and CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data.player].deleted ~= true) then - CommDKP_Profile_Create(_objReceived.Data.player, _objReceived.Data.cost, 0, _objReceived.Data.cost, _objReceived.CurrentTeam); - end - end - tinsert(CommDKP:GetTable(CommDKP_Loot, true, _objReceived.CurrentTeam), 1, _objReceived.Data) - - CommDKP:LootHistory_Reset() - CommDKP:LootHistory_Update(L["NOFILTER"]) - CommDKP:FilterDKPTable(core.currentSort, "reset") - elseif prefix == "CommDKPDKPDist" then - local players = {strsplit(",", strsub(_objReceived.Data.players, 1, -2))} - local dkp = _objReceived.Data.dkp - - tinsert(CommDKP:GetTable(CommDKP_DKPHistory, true, _objReceived.CurrentTeam), 1, _objReceived.Data) - - for i=1, #players do - local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam), players[i], "player") - - if search then - CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search[1][1]].dkp = CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search[1][1]].dkp + tonumber(dkp) - if tonumber(dkp) > 0 then - CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search[1][1]].lifetime_gained = CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search[1][1]].lifetime_gained + tonumber(dkp) - end - else - if not CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[i]] or (CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[i]] and CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[i]].deleted ~= true) then - CommDKP_Profile_Create(players[i], tonumber(dkp), tonumber(dkp), nil, _objReceived.CurrentTeam); -- creates temp profile for data and requests additional data from online officers (hidden until data received) - end - end - end - - if CommDKP.ConfigTab6 and CommDKP.ConfigTab6.history and CommDKP.ConfigTab6:IsShown() then - CommDKP:DKPHistory_Update(true) - end - CommDKP:FilterDKPTable(core.currentSort, "reset") - elseif prefix == "CommDKPDecay" then - local players = {strsplit(",", strsub(_objReceived.Data.players, 1, -2))} - local dkp = {strsplit(",", _objReceived.Data.dkp)} - - tinsert(CommDKP:GetTable(CommDKP_DKPHistory, true, _objReceived.CurrentTeam), 1, _objReceived.Data) - - for i=1, #players do - local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam), players[i], "player") - - if search then - CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search[1][1]].dkp = CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search[1][1]].dkp + tonumber(dkp[i]) - else - if not CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[i]] or (CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[i]] and CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[i]].deleted ~= true) then - CommDKP_Profile_Create(players[i], tonumber(dkp[i]), nil, nil, _objReceived.CurrentTeam); -- creates temp profile for data and requests additional data from online officers (hidden until data received) - end - end - end - - if CommDKP.ConfigTab6 and CommDKP.ConfigTab6.history and CommDKP.ConfigTab6:IsShown() then - CommDKP:DKPHistory_Update(true) - end - CommDKP:FilterDKPTable(core.currentSort, "reset") - elseif prefix == "CommDKPAddUsers" and UnitName("player") ~= sender then - CommDKP:AddEntitiesToDKPTable(_objReceived.Data, _objReceived.TargetTeam); - elseif prefix == "CommDKPDelUsers" and UnitName("player") ~= sender then - local numPlayers = 0 - local removedUsers = "" - - for i=1, #_objReceived.Data do - local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam), _objReceived.Data[i].player, "player") - - if search and _objReceived.Data[i].deleted and _objReceived.Data[i].deleted ~= "Recovered" then - if _objReceived.Data[i].edited == nil then - _objReceived.Data[i].edited = time(); - end - - if (CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data[i].player] and _objReceived.Data[i].deleted) or (CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data[i].player] and CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data[i].player].edited < _objReceived.Data[i].edited) or (not CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data[i].player]) then - --delete user, archive data - if not CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data[i].player] then -- creates/adds to archive entry for user - CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data[i].player] = { dkp=0, lifetime_spent=0, lifetime_gained=0, deleted=_objReceived.Data[i].deleted, edited=_objReceived.Data[i].edited } - else - CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data[i].player].deleted = _objReceived.Data[i].deleted - CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data[i].player].edited = _objReceived.Data[i].edited - end - - c = CommDKP:GetCColors(CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search[1][1]].class) - if i==1 then - removedUsers = "|c"..c.hex..CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search[1][1]].player.."|r" - else - removedUsers = removedUsers..", |c"..c.hex..CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search[1][1]].player.."|r" - end - numPlayers = numPlayers + 1 - - tremove(CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam), search[1][1]) - CommDKP:GetTable(CommDKP_Profiles, true, _objReceived.CurrentTeam)[_objReceived.Data[i].player] = nil; - - local search2 = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_Standby, true, _objReceived.CurrentTeam), _objReceived.Data[i].player, "player"); - - if search2 then - table.remove(CommDKP:GetTable(CommDKP_Standby,true, _objReceived.CurrentTeam), search2[1][1]) - end - end - elseif not search and _objReceived.Data[i].deleted == "Recovered" then - if CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data[i].player] and (CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data[i].player].edited == nil or CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data[i].player].edited < _objReceived.Data[i].edited) then - CommDKP_Profile_Create(_objReceived.Data[i].player, nil, nil, nil, _objReceived.CurrentTeam); -- User was recovered, create/request profile as needed - CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data[i].player].deleted = "Recovered" - CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data[i].player].edited = _objReceived.Data[i].edited - end - end - end - if numPlayers > 0 then - CommDKP:FilterDKPTable(core.currentSort, "reset") - CommDKP:Print("["..CommDKP:GetTeamName(_objReceived.CurrentTeam).."] ".."Removed "..numPlayers.." player(s): "..removedUsers) - end - return - elseif prefix == "CommDKPDelLoot" then - local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_Loot, true, _objReceived.CurrentTeam), _objReceived.Data.deletes, "index") - - if search then - CommDKP:GetTable(CommDKP_Loot, true, _objReceived.CurrentTeam)[search[1][1]].deletedby = _objReceived.Data.index - end - - local search_player = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam), _objReceived.Data.player, "player") - - if search_player then - CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search_player[1][1]].dkp = CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search_player[1][1]].dkp + _objReceived.Data.cost -- refund previous looter - CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search_player[1][1]].lifetime_spent = CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search_player[1][1]].lifetime_spent + _objReceived.Data.cost -- remove from lifetime_spent - else - if not CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data.player] or (CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data.player] and CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[_objReceived.Data.player].deleted ~= true) then - CommDKP_Profile_Create(_objReceived.Data.player, _objReceived.Data.cost, 0, _objReceived.Data.cost, _objReceived.CurrentTeam); -- creates temp profile for data and requests additional data from online officers (hidden until data received) - end - end - - table.insert(CommDKP:GetTable(CommDKP_Loot, true, _objReceived.CurrentTeam), 1, _objReceived.Data) - CommDKP:SortLootTable() - CommDKP:LootHistory_Reset() - CommDKP:LootHistory_Update(L["NOFILTER"]); - CommDKP:FilterDKPTable(core.currentSort, "reset") - elseif prefix == "CommDKPDelSync" then - local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPHistory, true, _objReceived.CurrentTeam), _objReceived.Data.deletes, "index") - local players = {strsplit(",", strsub(_objReceived.Data.players, 1, -2))} -- cuts off last "," from string to avoid creating an empty value - local dkp, mod; - - if strfind(_objReceived.Data.dkp, "%-%d*%.?%d+%%") then -- determines if it's a mass decay - dkp = {strsplit(",", _objReceived.Data.dkp)} - mod = "perc"; - else - dkp = _objReceived.Data.dkp - mod = "whole" - end - - for i=1, #players do - if mod == "perc" then - local search2 = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam), players[i], "player") - - if search2 then - CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search2[1][1]].dkp = CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search2[1][1]].dkp + tonumber(dkp[i]) - else - if not CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[i]] or (CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[i]] and CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[i]].deleted ~= true) then - CommDKP_Profile_Create(players[i], tonumber(dkp[i]), nil, nil, _objReceived.CurrentTeam); -- creates temp profile for data and requests additional data from online officers (hidden until data received) - end - end - else - local search2 = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam), players[i], "player") - - if search2 then - CommDKP:GetTable(CommDKP_DKPTable, true)[search2[1][1]].dkp = CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search2[1][1]].dkp + tonumber(dkp) - - if tonumber(dkp) < 0 then - CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search2[1][1]].lifetime_gained = CommDKP:GetTable(CommDKP_DKPTable, true, _objReceived.CurrentTeam)[search2[1][1]].lifetime_gained + tonumber(dkp) - end - else - if not CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[i]] or (CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[i]] and CommDKP:GetTable(CommDKP_Archive, true, _objReceived.CurrentTeam)[players[i]].deleted ~= true) then - local gained; - if tonumber(dkp) < 0 then gained = tonumber(dkp) else gained = 0 end - - CommDKP_Profile_Create(players[i], tonumber(dkp), gained, nil, _objReceived.CurrentTeam); -- creates temp profile for data and requests additional data from online officers (hidden until data received) - end - end - end - end - - if search then - CommDKP:GetTable(CommDKP_DKPHistory, true, _objReceived.CurrentTeam)[search[1][1]].deletedby = _objReceived.Data.index; -- adds deletedby field if the entry exists - end - - table.insert(CommDKP:GetTable(CommDKP_DKPHistory, true, _objReceived.CurrentTeam), 1, _objReceived.Data) - - if CommDKP.ConfigTab6 and CommDKP.ConfigTab6.history then - CommDKP:DKPHistory_Update(true) - end - CommDKP:DKPTable_Update() - elseif prefix == "CommDKPMinBid" then - if core.IsOfficer then - core.DB.MinBidBySlot = _objReceived.Data[1] - - for i=1, #_objReceived.Data[2] do - local bidInfo = _objReceived.Data[2][i] - local bidTeam = bidInfo[1] - local bidItems = bidInfo[2] - if bidItems ~= nil then - for j=1, #bidItems do - local search = CommDKP:GetTable(CommDKP_MinBids, true, bidTeam)[bidItems[j].itemID]; - if search then - CommDKP:GetTable(CommDKP_MinBids, true, bidTeam)[bidItems[j].itemID].minbid = bidItems[j].minbid - if bidItems[j]["link"] ~= nil then - CommDKP:GetTable(CommDKP_MinBids, true, bidTeam)[bidItems[j].itemID].link = bidItems[j].link - end - if bidItems[j]["icon"] ~= nil then - CommDKP:GetTable(CommDKP_MinBids, true, bidTeam)[bidItems[j].itemID].icon = bidItems[j].icon - end - else - CommDKP:GetTable(CommDKP_MinBids, true, bidTeam)[bidItems[j].itemID] = bidItems[j]; - end - end - end - end - end - elseif prefix == "CommDKPMaxBid" then - if core.IsOfficer then - - core.DB.MaxBidBySlot = _objReceived.Data[1]; - _objMaxBidValues = _objReceived.Data[1]; - - for i=1, #_objReceived.Data[2] do - local bidInfo = _objReceived.Data[2][i] - local bidTeam = bidInfo[1] - local bidItems = bidInfo[2] or {} - - for j=1, #bidItems do - local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_MaxBids, true, bidTeam), bidItems[j].item) - if search then - CommDKP:GetTable(CommDKP_MaxBids, true, bidTeam)[search[1][1]].maxbid = bidItems[j].maxbid - else - table.insert(CommDKP:GetTable(CommDKP_MaxBids, true, bidTeam), bidItems[j]) - end - end - end - end - elseif prefix == "CDKPWhitelist" and CommDKP:GetGuildRankIndex(UnitName("player")) > 1 then -- only applies if not GM - CommDKP:SetTable(CommDKP_Whitelist, false, _objReceived.Data, _objReceived.CurrentTeam); - elseif prefix == "CommDKPStand" then - CommDKP:SetTable(CommDKP_Standby, true, _objReceived.Data, _objReceived.CurrentTeam); -- issues/153 - elseif prefix == "CommDKPSetPrice" then - _objSetPrice = _objReceived.Data; - local _, _, Color, Ltype, itemID, Enchant, Gem1, Gem2, Gem3, Gem4, Suffix, Unique, LinkLvl, Name = string.find(_objSetPrice.link,"|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*):?(%d*):?(%-?%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?") - - local search = CommDKP:GetTable(CommDKP_MinBids, true, _objReceived.CurrentTeam)[itemID]; - - if not search then - CommDKP:GetTable(CommDKP_MinBids, true, _objReceived.CurrentTeam)[itemID] = _objSetPrice; - elseif search then - CommDKP:GetTable(CommDKP_MinBids, true, _objReceived.CurrentTeam)[itemID] = _objSetPrice; - end - - core.PriceTable = CommDKP:FormatPriceTable(); - CommDKP:PriceTable_Update(0); - - elseif prefix == "CommDKPZSumBank" then - if core.IsOfficer then - core.DB.modes.ZeroSumBank = _objReceived.Data; - if core.ZeroSumBank then - if _objReceived.Data.balance == 0 then - core.ZeroSumBank.LootFrame.LootList:SetText("") - end - CommDKP:ZeroSumBank_Update() - end - end - elseif prefix == "CommDKPDKPModes" then - if (core.DB.modes.mode ~= _objReceived.Data[1].mode) or (core.DB.modes.MaxBehavior ~= _objReceived.Data[1].MaxBehavior) then - CommDKP:Print(L["RECOMMENDRELOAD"]) - end - core.DB.modes = _objReceived.Data[1] - core.DB.DKPBonus = _objReceived.Data[2] - core.DB.raiders = _objReceived.Data[3] - elseif prefix == "CommDKPBidShare" then - if core.BidInterface then - CommDKP:Bids_Set(_objReceived.Data) - end - return - elseif prefix == "CommDKPBossLoot" then - local lootList = {}; - core.DB.bossargs.LastKilledBoss = _objReceived.Data.boss; - - for i=1, #_objReceived.Data do - local item = Item:CreateFromItemLink(_objReceived.Data[i]); - item:ContinueOnItemLoad(function() - local icon = item:GetItemIcon() - table.insert(lootList, {icon=icon, link=item:GetItemLink()}) - end); - end - - CommDKP:LootTable_Set(lootList) - end - - end + if prefix == "CommDKPAllTabs" then -- receives full table broadcast + FullBroadcastReceived(_objReceived); + return; + elseif prefix == "CommDKPMerge" then + TableMergeReceived(_objReceived); + return; + elseif prefix == "CommDKPLootDist" then + CommDKPLootDistReceived(_objReceived); + return; + elseif prefix == "CommDKPDKPDist" then + CommDKPDKPDistReceived(_objReceived); + return; + elseif prefix == "CommDKPDecay" then + CommDKPDKPDecayReceived(_objReceived); + return; + elseif prefix == "CommDKPAddUsers" then + CommDKPAddUsersReceived(_objReceived); + return; + elseif prefix == "CommDKPDelUsers" then + CommDKPDelUsersReceived(_objReceived); + return; + elseif prefix == "CommDKPDelLoot" then + CommDKPDelLootReceived(_objReceived); + return; + elseif prefix == "CommDKPDelSync" then + CommDKPDelSyncReceived(_objReceived); + return; + elseif prefix == "CommDKPMinBid" then + CommDKPMinBidReceived(_objReceived); + return; + elseif prefix == "CommDKPMaxBid" then + CommDKPMaxbidReceived(_objReceived); + return; + elseif prefix == "CDKPWhitelist" then + CommDKPWhiteListReceived(_objReceived); + return; + elseif prefix == "CommDKPStand" then + CommDKPStandByReceived(_objReceived); + return; + elseif prefix == "CommDKPSetPrice" then + CommDKPSetPriceReceived(_objReceived); + return; + elseif prefix == "CommDKPZSumBank" then + CommDKPZSumBankReceived(_objReceived); + return; + elseif prefix == "CommDKPDKPModes" then + CommDKPDKPModesReceived(_objReceived); + return; + elseif prefix == "CommDKPBidShare" then + CommDKPBidShareReceived(_objReceived); + return; + elseif prefix == "CommDKPBossLoot" then + CommDKPBossLootReceived(_objReceived); + end end end - else + else -- success == false CommDKP:Print("OnCommReceived ERROR: "..prefix) -- error reporting if string doesn't get deserialized correctly end end @@ -919,62 +288,61 @@ function CommDKP.Sync:SendData(prefix, data, target, targetTeam) CommDKPBidderSend(prefix, _compressedObj, "RAID"); return; end - end - - -- officers - if IsInGuild() and core.IsOfficer then - - if prefix == "CommDKPCommand" then - CommDKPCommandSend(prefix, _compressedObj, "RAID"); - return; - end - - if prefix == "CommDKPRaidTime" then - CommDKPRaidTimeSend(prefix, _compressedObj, "RAID"); - return; - end - - if prefix == "CommDKPBCastMsg" then - CommDKPCastMsgSend(prefix, _compressedObj, "RAID"); - return; - end - - if prefix == "CommDKPZSumBank" then - CommDKPZSumBankSend(prefix, _compressedObj, "RAID"); - return; - end - - if prefix == "CommDKPBossLoot" then - CommDKPBossLootSend(prefix, _compressedObj, "RAID"); - return; - end - - if prefix == "CommDKPBidShare" then - CommDKPBidShareSend(prefix, _compressedObj, "RAID"); - return; - end - - if prefix == "CommDKPPreBroad" then - CommDKPPreBroadSend(prefix, _compressedObj, target); - return; - end - if prefix == "CommDKPAllTabs" then - FullBroadcastSend(prefix, _compressedObj, target); - return; + if core.IsOfficer then + if prefix == "CommDKPCommand" then + CommDKPCommandSend(prefix, _compressedObj, "RAID"); + return; + end + + if prefix == "CommDKPRaidTime" then + CommDKPRaidTimeSend(prefix, _compressedObj, "RAID"); + return; + end + + if prefix == "CommDKPBCastMsg" then + CommDKPCastMsgSend(prefix, _compressedObj, "RAID"); + return; + end + + if prefix == "CommDKPZSumBank" then + CommDKPZSumBankSend(prefix, _compressedObj, "RAID"); + return; + end + + if prefix == "CommDKPBossLoot" then + CommDKPBossLootSend(prefix, _compressedObj, "RAID"); + return; + end + + if prefix == "CommDKPBidShare" then + CommDKPBidShareSend(prefix, _compressedObj, "RAID"); + return; + end + + if prefix == "CommDKPPreBroad" then + CommDKPPreBroadSend(prefix, _compressedObj, target); + return; + end + + if prefix == "CommDKPAllTabs" then + FullBroadcastSend(prefix, _compressedObj, target); + return; + end + + if prefix == "CommDKPMerge" then + TableMergeSend(prefix, _compressedObj, target); + return; + end + + -- what is being sent here? + if target then + CommDKP.Sync:SendCommMessage(prefix, _compressedObj, "WHISPER", target) + else + CommDKP.Sync:SendCommMessage(prefix, _compressedObj, "GUILD") + end end - if prefix == "CommDKPMerge" then - TableMergeSend(prefix, _compressedObj, target); - return; - end - - -- what is being sent here? - if target then - CommDKP.Sync:SendCommMessage(prefix, _compressedObj, "WHISPER", target) - else - CommDKP.Sync:SendCommMessage(prefix, _compressedObj, "GUILD") - end end end @@ -1018,6 +386,7 @@ end ---------- -- FULL BROADCAST HANDLERS ---------- + function FullBroadcastSend(prefix, commObject, channel) local _channel = channel or "GUILD"; local _prefix = prefix or "CommDKPAllTabs"; @@ -1147,6 +516,7 @@ end ---------- -- 2-WEEK MERGE HANDLERS ---------- + function TableMergeSend(prefix, commObject, channel) local _channel = channel or "GUILD"; local _prefix = prefix or "CommDKPMerge"; @@ -1161,48 +531,274 @@ function TableMergeSend(prefix, commObject, channel) end ----------- --- CommDKPQuery message HANDLERS ----------- -function CommDKPQuerySend(prefix, commObject, channel) - local _channel = channel or "GUILD"; - local _prefix = prefix or "CommDKPQuery"; - CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); -end - - -function CommDKPQueryReceived(commObject) +function TableMergeReceived(commObject, channel, sender) + for i=1, #commObject.Data.DKP do + local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPHistory, true, commObject.CurrentTeam), commObject.Data.DKP[i].index, "index") -end + if not search and ((CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam).DKPMeta and CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam).DKPMeta < commObject.Data.DKP[i].date) or (not CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam).DKPMeta)) then -- prevents adding entry if this entry has already been archived + local players = {strsplit(",", strsub(commObject.Data.DKP[i].players, 1, -2))} + local dkp + if strfind(commObject.Data.DKP[i].dkp, "%-%d*%.?%d+%%") then + dkp = {strsplit(",", commObject.Data.DKP[i].dkp)} + end ----------- --- CommDKPBuild message HANDLERS ----------- + if commObject.Data.DKP[i].deletes then -- adds deletedby field to entry if the received table is a delete entry + local search_del = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPHistory, true, commObject.CurrentTeam), commObject.Data.DKP[i].deletes, "index") + if search_del then + CommDKP:GetTable(CommDKP_DKPHistory, true, commObject.CurrentTeam)[search_del[1][1]].deletedby = commObject.Data.DKP[i].index + end + end + + if not commObject.Data.DKP[i].deletedby then + local search_del = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPHistory, true, commObject.CurrentTeam), commObject.Data.DKP[i].index, "deletes") ----------- --- CommDKPTalents message HANDLERS ----------- + if search_del then + commObject.Data.DKP[i].deletedby = CommDKP:GetTable(CommDKP_DKPHistory, true, commObject.CurrentTeam)[search_del[1][1]].index + end + end -function CommDKPTalentsSend(prefix, commObject, channel) - local _channel = channel or "GUILD"; - local _prefix = prefix or "CommDKPTalents"; - CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); -end + table.insert(CommDKP:GetTable(CommDKP_DKPHistory, true, commObject.CurrentTeam), commObject.Data.DKP[i]) + for j=1, #players do + if players[j] then + local findEntry = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam), players[j], "player") ----------- --- CommDKPRoles message HANDLERS ----------- + if strfind(commObject.Data.DKP[i].dkp, "%-%d*%.?%d+%%") then -- handles decay entries + if findEntry then + CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[findEntry[1][1]].dkp = CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[findEntry[1][1]].dkp + tonumber(dkp[j]) + else + if not CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[j]] or (CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[j]] and CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[j]].deleted ~= true) then + CommDKP_Profile_Create(players[j], tonumber(dkp[j]), nil, nil, commObject.CurrentTeam) + end + end + else + if findEntry then + CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[findEntry[1][1]].dkp = CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[findEntry[1][1]].dkp + tonumber(commObject.Data.DKP[i].dkp) + if (tonumber(commObject.Data.DKP[i].dkp) > 0 and not commObject.Data.DKP[i].deletes) or (tonumber(commObject.Data.DKP[i].dkp) < 0 and commObject.Data.DKP[i].deletes) then -- adjust lifetime if it's a DKP gain or deleting a DKP gain + CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[findEntry[1][1]].lifetime_gained = CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[findEntry[1][1]].lifetime_gained + commObject.Data.DKP[i].dkp -- NOT if it's a DKP penalty or deleteing a DKP penalty + end + else + if not CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[j]] or (CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[j]] and CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[j]].deleted ~= true) then + local class -function CommDKPRolesSend(prefix, commObject, channel) + if (tonumber(commObject.Data.DKP[i].dkp) > 0 and not commObject.Data.DKP[i].deletes) or (tonumber(commObject.Data.DKP[i].dkp) < 0 and commObject.Data.DKP[i].deletes) then + CommDKP_Profile_Create(players[j], tonumber(commObject.Data.DKP[i].dkp), tonumber(commObject.Data.DKP[i].dkp), nil, commObject.CurrentTeam) + else + CommDKP_Profile_Create(players[j], tonumber(commObject.Data.DKP[i].dkp), nil, nil, commObject.CurrentTeam) + end + end + end + end + end + end + end + end + + if CommDKP.ConfigTab6 and CommDKP.ConfigTab6.history and CommDKP.ConfigTab6:IsShown() then + CommDKP:DKPHistory_Update(true) + end + + for i=1, #commObject.Data.Loot do + local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_Loot, true, commObject.CurrentTeam), commObject.Data.Loot[i].index, "index") + + if not search and ((CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam).LootMeta and CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam).LootMeta < commObject.Data.Loot[i].date) or (not CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam).LootMeta)) then -- prevents adding entry if this entry has already been archived + if commObject.Data.Loot[i].deletes then + local search_del = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_Loot, true, commObject.CurrentTeam), commObject.Data.Loot[i].deletes, "index") + + if search_del and not CommDKP:GetTable(CommDKP_Loot, true, commObject.CurrentTeam)[search_del[1][1]].deletedby then + CommDKP:GetTable(CommDKP_Loot, true, commObject.CurrentTeam)[search_del[1][1]].deletedby = commObject.Data.Loot[i].index + end + end + + if not commObject.Data.Loot[i].deletedby then + local search_del = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_Loot, true, commObject.CurrentTeam), commObject.Data.Loot[i].index, "deletes") + + if search_del then + commObject.Data.Loot[i].deletedby = CommDKP:GetTable(CommDKP_Loot, true, commObject.CurrentTeam)[search_del[1][1]].index + end + end + + table.insert(CommDKP:GetTable(CommDKP_Loot, true, commObject.CurrentTeam), commObject.Data.Loot[i]) + + local findEntry = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam), commObject.Data.Loot[i].player, "player") + + if findEntry then + CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[findEntry[1][1]].dkp = CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[findEntry[1][1]].dkp + commObject.Data.Loot[i].cost + CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[findEntry[1][1]].lifetime_spent = CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[findEntry[1][1]].lifetime_spent + commObject.Data.Loot[i].cost + else + if not CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data.Loot[i].player] or (CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data.Loot[i].player] and CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data.Loot[i].player].deleted ~= true) then + CommDKP_Profile_Create(commObject.Data.Loot[i].player, commObject.Data.Loot[i].cost, 0, commObject.Data.Loot[i].cost, commObject.CurrentTeam) + end + end + end + end + + for i=1, #commObject.Data.Profiles do + + local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam), commObject.Data.Profiles[i].player, "player") + + if search then + if CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search[1][1]].class == "NONE" then + CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search[1][1]].class = commObject.Data.Profiles[i].class + end + else + tinsert(CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam),commObject.Data.Profiles[i]) + end + end + + CommDKP:LootHistory_Reset() + CommDKP:LootHistory_Update(L["NOFILTER"]) + CommDKP:FilterDKPTable(core.currentSort, "reset") + CommDKP:StatusVerify_Update() + return +end + + +---------- +-- CommDKPQuery message HANDLERS +---------- + +function CommDKPQuerySend(prefix, commObject, channel) + local _channel = channel or "GUILD"; + local _prefix = prefix or "CommDKPQuery"; + CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); +end + +---------- +-- CommDKPBuild message HANDLERS +---------- + +function CommDKPBuildReceived(commObject, sender) + if sender ~= UnitName("player") then + local LastVerCheck = time() - core.LastVerCheck; + + if LastVerCheck > 900 then -- limits the Out of Date message from firing more than every 15 minutes + if tonumber(_objReceived.Data) > core.BuildNumber then + core.LastVerCheck = time(); + CommDKP:Print(L["OUTOFDATEANNOUNCE"]) + end + end + + if tonumber(_objReceived.Data) < core.BuildNumber then -- returns build number if receiving party has a newer version + CommDKP.Sync:SendData("CommDKPBuild", tostring(core.BuildNumber)) + end + return; + end +end + +---------- +-- CommDKPTalents message HANDLERS +---------- + +function CommDKPTalentsSend(prefix, commObject, channel) + local _channel = channel or "GUILD"; + local _prefix = prefix or "CommDKPTalents"; + CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); +end + + +function CommDKPTalentsReceived(commObject, sender) + for teamIndex,team in pairs(commObject.Teams) do + local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, teamIndex), sender, "player") + + if search then + local curSelection = CommDKP:GetTable(CommDKP_DKPTable, true, teamIndex)[search[1][1]] + curSelection.spec = commObject.Data; + + if CommDKP:GetTable(CommDKP_Profiles, true, teamIndex)[sender] == nil then + CommDKP:GetTable(CommDKP_Profiles, true, teamIndex)[sender] = CommDKP:GetDefaultEntity(); + end + + CommDKP:GetTable(CommDKP_Profiles, true, teamIndex)[sender].spec = commObject.Data; + end + + end + + return +end + +---------- +-- CommDKPRoles message HANDLERS +---------- + +function CommDKPRolesSend(prefix, commObject, channel) local _channel = channel or "GUILD"; local _prefix = prefix or "CommDKPRoles"; CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); end +function CommDKPRolesReceived(commObject, sender) + for teamIndex,team in pairs(commObject.Teams) do + local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, teamIndex), sender, "player") + local curClass = "None"; + + if search then + local curSelection = CommDKP:GetTable(CommDKP_DKPTable, true, teamIndex)[search[1][1]] + curClass = CommDKP:GetTable(CommDKP_DKPTable, true, teamIndex)[search[1][1]].class + + if curClass == "WARRIOR" then + local a,b,c = strsplit("/", commObject.Data) + if strfind(commObject.Data, "Protection") or (tonumber(c) and tonumber(strsub(c, 1, -2)) > 15) then + curSelection.role = L["TANK"] + else + curSelection.role = L["MELEEDPS"] + end + elseif curClass == "PALADIN" then + if strfind(commObject.Data, "Protection") then + curSelection.role = L["TANK"] + elseif strfind(commObject.Data, "Holy") then + curSelection.role = L["HEALER"] + else + curSelection.role = L["MELEEDPS"] + end + elseif curClass == "HUNTER" then + curSelection.role = L["RANGEDPS"] + elseif curClass == "ROGUE" then + curSelection.role = L["MELEEDPS"] + elseif curClass == "PRIEST" then + if strfind(commObject.Data, "Shadow") then + curSelection.role = L["CASTERDPS"] + else + curSelection.role = L["HEALER"] + end + elseif curClass == "SHAMAN" then + if strfind(commObject.Data, "Restoration") then + curSelection.role = L["HEALER"] + elseif strfind(commObject.Data, "Elemental") then + curSelection.role = L["CASTERDPS"] + else + curSelection.role = L["MELEEDPS"] + end + elseif curClass == "MAGE" then + curSelection.role = L["CASTERDPS"] + elseif curClass == "WARLOCK" then + curSelection.role = L["CASTERDPS"] + elseif curClass == "DRUID" then + if strfind(commObject.Data, "Feral") then + curSelection.role = L["TANK"] + elseif strfind(commObject.Data, "Balance") then + curSelection.role = L["CASTERDPS"] + else + curSelection.role = L["HEALER"] + end + else + curSelection.role = L["NOROLEDETECTED"] + end + + if CommDKP:GetTable(CommDKP_Profiles, true, teamIndex)[sender] == nil then + CommDKP:GetTable(CommDKP_Profiles, true, teamIndex)[sender] = CommDKP:GetDefaultEntity(); + end + + CommDKP:GetTable(CommDKP_Profiles, true, teamIndex)[sender].role = curSelection.role; + CommDKP:GetTable(CommDKP_DKPTable, true, teamIndex)[search[1][1]].role = curSelection.role; + end + end + return; +end + ---------- -- CDKProfileSend message HANDLERS ---------- @@ -1214,6 +810,17 @@ function CommDKPProfileSend(prefix, commObject, channel) end +function CDKProfileSendReceived(commObject, sender) + local profile = commObject.Data; + CommDKP:GetTable(CommDKP_Profiles, true, commObject.CurrentTeam)[profile.player] = profile; + + --Legacy Version Tracking + local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true), profile.player, "player") + if search then + CommDKP:GetTable(CommDKP_DKPTable, true)[search[1][1]].version = profile.version; + end +end + ---------- -- CommDKPBidder message HANDLERS ---------- @@ -1225,6 +832,20 @@ function CommDKPBidderSend(prefix, commObject, channel) end +function CommDKPBidderReceived(commObject, sender) + if core.BidInProgress and core.IsOfficer then + if commObject.Data == "pass" then + -- CommDKP:Print(sender.." has passed.") --TODO: Let's do something different here at some point. + return; + else + CommDKP_CHAT_MSG_WHISPER(commObject.Data, sender); + return; + end + else + return; + end +end + ---------- -- CommDKPCommand message HANDLERS ---------- @@ -1236,6 +857,47 @@ function CommDKPCommandSend(prefix, commObject, channel) end +function CommDKPCommandReceived(commObject, sender) + local command, arg1, arg2, arg3, arg4 = strsplit("#", commObject.Data); + if sender ~= UnitName("player") then + if command == "StartTimer" then + CommDKP:StartTimer(arg1, arg2) + elseif command == "StartBidTimer" then + CommDKP:StartBidTimer(arg1, arg2, arg3) + core.BiddingInProgress = true; + if strfind(arg1, "{") then + CommDKP:Print("Bid timer extended by "..tonumber(strsub(arg1, strfind(arg1, "{")+1)).." seconds.") + end + elseif command == "StopBidTimer" then + if CommDKP.BidTimer then + CommDKP.BidTimer:SetScript("OnUpdate", nil) + CommDKP.BidTimer:Hide() + core.BiddingInProgress = false; + end + if core.BidInterface and #core.BidInterface.LootTableButtons > 0 then + for i=1, #core.BidInterface.LootTableButtons do + ActionButton_HideOverlayGlow(core.BidInterface.LootTableButtons[i]) + end + end + C_Timer.After(2, function() + if core.BidInterface and core.BidInterface:IsShown() and not core.BiddingInProgress then + core.BidInterface:Hide() + end + end) + elseif command == "BidInfo" then + if not core.BidInterface then + core.BidInterface = core.BidInterface or CommDKP:BidInterface_Create() -- initiates bid window if it hasn't been created + end + if core.DB.defaults.AutoOpenBid and not core.BidInterface:IsShown() then -- toggles bid window if option is set to + CommDKP:BidInterface_Toggle() + end + + CommDKP:CurrItem_Set(arg1, arg2, arg3, arg4) -- populates bid window + end + end +end + + ---------- -- CommDKPRaidTime message HANDLERS ---------- @@ -1247,6 +909,55 @@ function CommDKPRaidTimeSend(prefix, commObject, channel) end +function CommDKPRaidTimeReceived(commObject, sender) + local command, args = strsplit(",", commObject.Data); + + if sender ~= UnitName("player") and core.IsOfficer and CommDKP.ConfigTab2 then + if command == "start" then + CommDKP:SetCurrentTeam(commObject.CurrentTeam); -- on start change the currentTeam + local arg1, arg2, arg3, arg4, arg5, arg6 = strsplit(" ", args, 6) + + if arg1 == "true" then arg1 = true else arg1 = false end + if arg4 == "true" then arg4 = true else arg4 = false end + if arg5 == "true" then arg5 = true else arg5 = false end + if arg6 == "true" then arg6 = true else arg6 = false end + + if arg2 ~= nil then + CommDKP.ConfigTab2.RaidTimerContainer.interval:SetNumber(tonumber(arg2)); + core.DB.modes.increment = tonumber(arg2); + end + if arg3 ~= nil then + CommDKP.ConfigTab2.RaidTimerContainer.bonusvalue:SetNumber(tonumber(arg3)); + core.DB.DKPBonus.IntervalBonus = tonumber(arg3); + end + if arg4 ~= nil then + CommDKP.ConfigTab2.RaidTimerContainer.StartBonus:SetChecked(arg4); + core.DB.DKPBonus.GiveRaidStart = arg4; + end + if arg5 ~= nil then + CommDKP.ConfigTab2.RaidTimerContainer.EndRaidBonus:SetChecked(arg5); + core.DB.DKPBonus.GiveRaidEnd = arg5; + end + if arg6 ~= nil then + CommDKP.ConfigTab2.RaidTimerContainer.StandbyInclude:SetChecked(arg6); + core.DB.DKPBonus.IncStandby = arg6; + end + + CommDKP:StartRaidTimer(arg1) + elseif command == "stop" then + CommDKP:StopRaidTimer() + elseif strfind(command, "sync", 1) then + local _, syncTimer, syncSecondCount, syncMinuteCount, syncAward = strsplit(" ", command, 5) + CommDKP:StartRaidTimer(nil, syncTimer, syncSecondCount, syncMinuteCount, syncAward) + CommDKP:SetCurrentTeam(_objReceived.CurrentTeam); + core.RaidInProgress = true + end + elseif sender ~= UnitName("player") and not core.IsOfficer and not CommDKP.ConfigTab2 then + CommDKP:SetCurrentTeam(_objReceived.CurrentTeam); + end + +end + ---------- -- CommDKPBCastMsg message HANDLERS ---------- @@ -1269,6 +980,18 @@ function CommDKPZSumBankSend(prefix, commObject, channel) end +function CommDKPZSumBankReceived(commObject) + if core.IsOfficer then + core.DB.modes.ZeroSumBank = commObject.Data; + if core.ZeroSumBank then + if commObject.Data.balance == 0 then + core.ZeroSumBank.LootFrame.LootList:SetText("") + end + CommDKP:ZeroSumBank_Update() + end + end +end + ---------- -- CommDKPBossLoot message HANDLERS ---------- @@ -1280,6 +1003,21 @@ function CommDKPBossLootSend(prefix, commObject, channel) end +function CommDKPBossLootReceived(commObject) + + local lootList = {}; + core.DB.bossargs.LastKilledBoss = commObject.Data.boss; + + for i=1, #commObject.Data do + local item = Item:CreateFromItemLink(commObject.Data[i]); + item:ContinueOnItemLoad(function() + local icon = item:GetItemIcon() + table.insert(lootList, {icon=icon, link=item:GetItemLink()}) + end); + end + CommDKP:LootTable_Set(lootList) +end + ---------- -- CommDKPBidShare message HANDLERS ---------- @@ -1290,6 +1028,13 @@ function CommDKPBidShareSend(prefix, commObject, channel) CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); end +function CommDKPBidShareReceived(commObject) + if core.BidInterface then + CommDKP:Bids_Set(commObject.Data) + end + return +end + ---------- -- CommDKPPreBroad message HANDLERS ---------- @@ -1300,9 +1045,455 @@ function CommDKPPreBroadSend(prefix, commObject, channel) CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); end + +function CommDKPPreBroadReceived(commObject, sender) + + if sender ~= UnitName("player") then + if commObject.Data == "CommDKPAllTabs" then + print("[CommunityDKP] COMMS: You started Full Broadcast for team "..CommDKP:GetTeamName(commObject.CurrentTeam)); + elseif commObject.Data == "CommDKPMerge" then + print("[CommunityDKP] COMMS: You started 2-week broadcast for team "..CommDKP:GetTeamName(commObject.CurrentTeam)); + end + else + if commObject.Data == "CommDKPAllTabs" then + print("[CommunityDKP] COMMS: Full broadcast started by "..sender.." for team "..CommDKP:GetTeamName(commObject.CurrentTeam)); + elseif commObject.Data == "CommDKPMerge" then + print("[CommunityDKP] COMMS: 2-week merge broadcast started by "..sender.." for team "..CommDKP:GetTeamName(commObject.CurrentTeam)); + end + end +end + ---------- --- TODO message HANDLERS +-- CommDKPLootDist message HANDLERS +---------- + +function CommDKPLootDistReceived(commObject) + + local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam), commObject.Data.player, "player") + if search then + local DKPTable = CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search[1][1]] + DKPTable.dkp = DKPTable.dkp + commObject.Data.cost + DKPTable.lifetime_spent = DKPTable.lifetime_spent + commObject.Data.cost + else + if not CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data.player] or + ( + CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data.player] and + CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data.player].deleted ~= true + ) then + CommDKP_Profile_Create(commObject.Data.player, commObject.Data.cost, 0, commObject.Data.cost, commObject.CurrentTeam); + end + end + tinsert(CommDKP:GetTable(CommDKP_Loot, true, commObject.CurrentTeam), 1, commObject.Data) + + CommDKP:LootHistory_Reset() + CommDKP:LootHistory_Update(L["NOFILTER"]) + CommDKP:FilterDKPTable(core.currentSort, "reset") + +end + + ---------- +-- CommDKPDKPDist message HANDLERS +---------- + +function CommDKPDKPDistReceived(commObject) + + local players = {strsplit(",", strsub(commObject.Data.players, 1, -2))} + local dkp = commObject.Data.dkp + + tinsert(CommDKP:GetTable(CommDKP_DKPHistory, true, commObject.CurrentTeam), 1, commObject.Data) + + for i=1, #players do + local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam), players[i], "player") + + if search then + CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search[1][1]].dkp = CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search[1][1]].dkp + tonumber(dkp) + if tonumber(dkp) > 0 then + CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search[1][1]].lifetime_gained = CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search[1][1]].lifetime_gained + tonumber(dkp) + end + else + if not CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[i]] or + ( + CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[i]] and + CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[i]].deleted ~= true + ) then + CommDKP_Profile_Create(players[i], tonumber(dkp), tonumber(dkp), nil, commObject.CurrentTeam); -- creates temp profile for data and requests additional data from online officers (hidden until data received) + end + end + end + + if CommDKP.ConfigTab6 and CommDKP.ConfigTab6.history and CommDKP.ConfigTab6:IsShown() then + CommDKP:DKPHistory_Update(true) + end + CommDKP:FilterDKPTable(core.currentSort, "reset") +end + +---------- +-- CommDKPDecay message HANDLERS +---------- + +function CommDKPDKPDecayReceived(commObject) + + local players = {strsplit(",", strsub(commObject.Data.players, 1, -2))} + local dkp = {strsplit(",", commObject.Data.dkp)} + + tinsert(CommDKP:GetTable(CommDKP_DKPHistory, true, commObject.CurrentTeam), 1, commObject.Data) + + for i=1, #players do + local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam), players[i], "player") + + if search then + CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search[1][1]].dkp = CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search[1][1]].dkp + tonumber(dkp[i]) + else + if not CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[i]] or (CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[i]] and CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[i]].deleted ~= true) then + CommDKP_Profile_Create(players[i], tonumber(dkp[i]), nil, nil, commObject.CurrentTeam); -- creates temp profile for data and requests additional data from online officers (hidden until data received) + end + end + end + + if CommDKP.ConfigTab6 and CommDKP.ConfigTab6.history and CommDKP.ConfigTab6:IsShown() then + CommDKP:DKPHistory_Update(true) + end + CommDKP:FilterDKPTable(core.currentSort, "reset") +end + +---------- +-- CommDKPAddUsers message HANDLERS +---------- + +function CommDKPAddUsersReceived(commObject) + if UnitName("player") ~= sender then + CommDKP:AddEntitiesToDKPTable(commObject.Data, commObject.TargetTeam); + end + return; +end + +---------- +-- CommDKPDelUsers message HANDLERS +---------- + +function CommDKPDelUsersReceived(commObject) + local numPlayers = 0 + local removedUsers = "" + + if UnitName("player") ~= sender then + for i=1, #commObject.Data do + local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam), commObject.Data[i].player, "player") + + if search and commObject.Data[i].deleted and commObject.Data[i].deleted ~= "Recovered" then + if commObject.Data[i].edited == nil then + commObject.Data[i].edited = time(); + end + + if (CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data[i].player] and commObject.Data[i].deleted) or (CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data[i].player] and CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data[i].player].edited < commObject.Data[i].edited) or (not CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data[i].player]) then + --delete user, archive data + if not CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data[i].player] then -- creates/adds to archive entry for user + CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data[i].player] = { dkp=0, lifetime_spent=0, lifetime_gained=0, deleted=commObject.Data[i].deleted, edited=commObject.Data[i].edited } + else + CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data[i].player].deleted = commObject.Data[i].deleted + CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data[i].player].edited = commObject.Data[i].edited + end + + c = CommDKP:GetCColors(CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search[1][1]].class) + if i==1 then + removedUsers = "|c"..c.hex..CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search[1][1]].player.."|r" + else + removedUsers = removedUsers..", |c"..c.hex..CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search[1][1]].player.."|r" + end + numPlayers = numPlayers + 1 + + tremove(CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam), search[1][1]) + CommDKP:GetTable(CommDKP_Profiles, true, commObject.CurrentTeam)[commObject.Data[i].player] = nil; + + local search2 = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_Standby, true, commObject.CurrentTeam), commObject.Data[i].player, "player"); + + if search2 then + table.remove(CommDKP:GetTable(CommDKP_Standby,true, commObject.CurrentTeam), search2[1][1]) + end + end + elseif not search and commObject.Data[i].deleted == "Recovered" then + if CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data[i].player] and (CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data[i].player].edited == nil or CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data[i].player].edited < commObject.Data[i].edited) then + CommDKP_Profile_Create(commObject.Data[i].player, nil, nil, nil, commObject.CurrentTeam); -- User was recovered, create/request profile as needed + CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data[i].player].deleted = "Recovered" + CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data[i].player].edited = commObject.Data[i].edited + end + end + end + if numPlayers > 0 then + CommDKP:FilterDKPTable(core.currentSort, "reset") + CommDKP:Print("["..CommDKP:GetTeamName(commObject.CurrentTeam).."] ".."Removed "..numPlayers.." player(s): "..removedUsers) + end + end + return +end + +---------- +-- CommDKPDelLoot message HANDLERS +---------- + +function CommDKPDelLootReceived(commObject) + local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_Loot, true, commObject.CurrentTeam), commObject.Data.deletes, "index") + + if search then + CommDKP:GetTable(CommDKP_Loot, true, commObject.CurrentTeam)[search[1][1]].deletedby = commObject.Data.index + end + + local search_player = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam), commObject.Data.player, "player") + + if search_player then + CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search_player[1][1]].dkp = CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search_player[1][1]].dkp + commObject.Data.cost -- refund previous looter + CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search_player[1][1]].lifetime_spent = CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search_player[1][1]].lifetime_spent + commObject.Data.cost -- remove from lifetime_spent + else + if not CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data.player] or (CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data.player] and CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[commObject.Data.player].deleted ~= true) then + CommDKP_Profile_Create(commObject.Data.player, commObject.Data.cost, 0, commObject.Data.cost, commObject.CurrentTeam); -- creates temp profile for data and requests additional data from online officers (hidden until data received) + end + end + + table.insert(CommDKP:GetTable(CommDKP_Loot, true, commObject.CurrentTeam), 1, commObject.Data) + CommDKP:SortLootTable() + CommDKP:LootHistory_Reset() + CommDKP:LootHistory_Update(L["NOFILTER"]); + CommDKP:FilterDKPTable(core.currentSort, "reset") +end + +---------- +-- CommDKPDelSync message HANDLERS +---------- + +function CommDKPDelSyncReceived(commObject) + local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPHistory, true, commObject.CurrentTeam), commObject.Data.deletes, "index") + local players = {strsplit(",", strsub(commObject.Data.players, 1, -2))} -- cuts off last "," from string to avoid creating an empty value + local dkp, mod; + + if strfind(commObject.Data.dkp, "%-%d*%.?%d+%%") then -- determines if it's a mass decay + dkp = {strsplit(",", commObject.Data.dkp)} + mod = "perc"; + else + dkp = commObject.Data.dkp + mod = "whole" + end + + for i=1, #players do + if mod == "perc" then + local search2 = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam), players[i], "player") + + if search2 then + CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search2[1][1]].dkp = CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search2[1][1]].dkp + tonumber(dkp[i]) + else + if not CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[i]] or (CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[i]] and CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[i]].deleted ~= true) then + CommDKP_Profile_Create(players[i], tonumber(dkp[i]), nil, nil, commObject.CurrentTeam); -- creates temp profile for data and requests additional data from online officers (hidden until data received) + end + end + else + local search2 = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam), players[i], "player") + + if search2 then + CommDKP:GetTable(CommDKP_DKPTable, true)[search2[1][1]].dkp = CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search2[1][1]].dkp + tonumber(dkp) + + if tonumber(dkp) < 0 then + CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search2[1][1]].lifetime_gained = CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam)[search2[1][1]].lifetime_gained + tonumber(dkp) + end + else + if not CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[i]] or (CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[i]] and CommDKP:GetTable(CommDKP_Archive, true, commObject.CurrentTeam)[players[i]].deleted ~= true) then + local gained; + if tonumber(dkp) < 0 then gained = tonumber(dkp) else gained = 0 end + + CommDKP_Profile_Create(players[i], tonumber(dkp), gained, nil, commObject.CurrentTeam); -- creates temp profile for data and requests additional data from online officers (hidden until data received) + end + end + end + end + + if search then + CommDKP:GetTable(CommDKP_DKPHistory, true, commObject.CurrentTeam)[search[1][1]].deletedby = commObject.Data.index; -- adds deletedby field if the entry exists + end + + table.insert(CommDKP:GetTable(CommDKP_DKPHistory, true, commObject.CurrentTeam), 1, commObject.Data) + + if CommDKP.ConfigTab6 and CommDKP.ConfigTab6.history then + CommDKP:DKPHistory_Update(true) + end + CommDKP:DKPTable_Update() +end + +---------- +-- CommDKPMinBid message HANDLERS +---------- + +function CommDKPMinBidReceived(commObject) + if core.IsOfficer then + core.DB.MinBidBySlot = commObject.Data[1] + + for i=1, #commObject.Data[2] do + local bidInfo = commObject.Data[2][i] + local bidTeam = bidInfo[1] + local bidItems = bidInfo[2] + if bidItems ~= nil then + for j=1, #bidItems do + local search = CommDKP:GetTable(CommDKP_MinBids, true, bidTeam)[bidItems[j].itemID]; + if search then + CommDKP:GetTable(CommDKP_MinBids, true, bidTeam)[bidItems[j].itemID].minbid = bidItems[j].minbid + if bidItems[j]["link"] ~= nil then + CommDKP:GetTable(CommDKP_MinBids, true, bidTeam)[bidItems[j].itemID].link = bidItems[j].link + end + if bidItems[j]["icon"] ~= nil then + CommDKP:GetTable(CommDKP_MinBids, true, bidTeam)[bidItems[j].itemID].icon = bidItems[j].icon + end + else + CommDKP:GetTable(CommDKP_MinBids, true, bidTeam)[bidItems[j].itemID] = bidItems[j]; + end + end + end + end + end +end + +---------- +-- CommDKPMaxBid message HANDLERS +---------- + +function CommDKPMaxbidReceived(commObject) + if core.IsOfficer then + + core.DB.MaxBidBySlot = commObject.Data[1]; + _objMaxBidValues = commObject.Data[1]; + + for i=1, #commObject.Data[2] do + local bidInfo = commObject.Data[2][i] + local bidTeam = bidInfo[1] + local bidItems = bidInfo[2] or {} + + for j=1, #bidItems do + local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_MaxBids, true, bidTeam), bidItems[j].item) + if search then + CommDKP:GetTable(CommDKP_MaxBids, true, bidTeam)[search[1][1]].maxbid = bidItems[j].maxbid + else + table.insert(CommDKP:GetTable(CommDKP_MaxBids, true, bidTeam), bidItems[j]) + end + end + end + end +end + +---------- +-- CDKPWhitelist message HANDLERS +---------- + +function CommDKPWhiteListReceived(commObject) + if CommDKP:GetGuildRankIndex(UnitName("player")) > 1 then -- only applies if not GM + CommDKP:SetTable(CommDKP_Whitelist, false, commObject.Data, commObject.CurrentTeam); + end +end + +---------- +-- CommDKPStand message HANDLERS +---------- + +function CommDKPStandByReceived(commObject) + CommDKP:SetTable(CommDKP_Standby, true, commObject.Data, commObject.CurrentTeam); -- issues/153 +end + +---------- +-- CommDKPSetPrice message HANDLERS +---------- + +function CommDKPSetPriceReceived(commObject) + + local _objSetPrice = _objReceived.Data; + local _, _, Color, Ltype, itemID, Enchant, Gem1, Gem2, Gem3, Gem4, Suffix, Unique, LinkLvl, Name = string.find(_objSetPrice.link,"|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*):?(%d*):?(%-?%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?") + + local search = CommDKP:GetTable(CommDKP_MinBids, true, _objReceived.CurrentTeam)[itemID]; + + if not search then + CommDKP:GetTable(CommDKP_MinBids, true, _objReceived.CurrentTeam)[itemID] = _objSetPrice; + elseif search then + CommDKP:GetTable(CommDKP_MinBids, true, _objReceived.CurrentTeam)[itemID] = _objSetPrice; + end + + core.PriceTable = CommDKP:FormatPriceTable(); + CommDKP:PriceTable_Update(0); + +end + +---------- +-- CommDKPDKPModes message HANDLERS +---------- + +function CommDKPDKPModesReceived(commObject) + if (core.DB.modes.mode ~= commObject.Data[1].mode) or (core.DB.modes.MaxBehavior ~= commObject.Data[1].MaxBehavior) then + CommDKP:Print(L["RECOMMENDRELOAD"]) + end + core.DB.modes = commObject.Data[1] + core.DB.DKPBonus = commObject.Data[2] + core.DB.raiders = commObject.Data[3] +end + +---------- +-- CommDKPSeed message HANDLERS +---------- + +function CommDKPSeedReceived(commObject, sender) + + --[[ + Data = { + ["0"] = { + ["Loot"] = "name-date", + ["DKPHistory"] = "name-date" + }, + ["1"] = { + ["Loot"] = "start", + ["DKPHistory"] = "start" + } + } + --]] + + if sender ~= UnitName("player") then + for tableIndex,v in pairs(commObject.Data) do + if(type(v) == "table") then + for property,value in pairs(v) do + if value ~= "start" then + + local off1,date1 = strsplit("-", value); + + if CommDKP:ValidateSender(off1) then + if property == "Loot" then + + local searchLoot = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_Loot, true, tostring(tableIndex)), value, "index") + + if not searchLoot then + CommDKP:GetTable(CommDKP_Loot, true, tostring(tableIndex)).seed = value + end + + elseif property == "DKPHistory" then + local searchDKPHistory = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPHistory, true, tostring(tableIndex)), value, "index") + + if not searchDKPHistory then + CommDKP:GetTable(CommDKP_DKPHistory, true, tostring(tableIndex)).seed = value + end + end + end + end + end + end + end + end +end + +---------- +-- CommDKPTeams message HANDLERS +---------- + +function CommDKPTeamsReceived(commObject, sender) + CommDKP:GetTable(CommDKP_DB, false)["teams"] = commObject.Teams +end + +---------- +-- CommDKPCurTeam message HANDLERS +---------- + +function CommDKPCurTeamReceived(commObject, sender) + CommDKP:SetCurrentTeam(commObject.CurrentTeam) -- this also refreshes all the tables/views/graphs +end ---------- -- TODO message HANDLERS From 7e866f4f76fc68bf7d281ebd5fd2aee101097d7f Mon Sep 17 00:00:00 2001 From: Taidtuskecyh Date: Sat, 2 Jan 2021 21:40:33 +0100 Subject: [PATCH 3/5] version-release etc --- Core.lua | 6 +++--- Localization/Localization.cn.lua | 14 +++++++------- Localization/Localization.de.lua | 14 +++++++------- Localization/Localization.en.lua | 20 ++++++++++---------- Localization/Localization.es.lua | 14 +++++++------- Localization/Localization.fr.lua | 16 ++++++++-------- Localization/Localization.kr.lua | 14 +++++++------- Localization/Localization.ru.lua | 14 +++++++------- Localization/Localization.se.lua | 14 +++++++------- Localization/Localization.tw.lua | 14 +++++++------- Modules/comm.lua | 14 +++++++++----- 11 files changed, 79 insertions(+), 75 deletions(-) diff --git a/Core.lua b/Core.lua index a82e71f0..0a6fe240 100644 --- a/Core.lua +++ b/Core.lua @@ -100,9 +100,9 @@ core.EncounterList = { -- Event IDs must be in the exact same order as core } core.CommDKPUI = {} -- global storing entire Configuration UI to hide/show UI -core.MonVersion = "v3.2.3"; -core.BuildNumber = 30203; -core.ReleaseNumber = 60 +core.MonVersion = "v3.2.4"; +core.BuildNumber = 30204; +core.ReleaseNumber = 61 core.defaultTable = "__default"; core.SemVer = core.MonVersion.."-r"..tostring(core.ReleaseNumber); core.UpgradeSchema = false; diff --git a/Localization/Localization.cn.lua b/Localization/Localization.cn.lua index 7161968d..76378f4d 100644 --- a/Localization/Localization.cn.lua +++ b/Localization/Localization.cn.lua @@ -820,15 +820,15 @@ if GetLocale() == "zhCN" then MIGRATIONCOMPLETED = "Migration complete.|n|nPlease disable MonolithDKP and /reload the UI.", --TODO TRANSLATE: --TODO TRANSLATE: - CHANGELOG1 = "CommunityDKP - v3.2.3", - CHANGELOG2 = " - Upgraded and Refactored the MinBids Table", - CHANGELOG3 = " - Fixed a Minbid Save Issue on Disenchant that was removing the Minbid price", - CHANGELOG4 = " - Implemented PriceList API Support (contribution by styxhope)", - CHANGELOG5 = "", + CHANGELOG1 = "CommunityDKP - v3.2.4-r61", + CHANGELOG2 = " - Fixed standby list sharing comm (issue 153 on github)", + CHANGELOG3 = " - Decay value in main table 'quick history view' is now a number rather than percentage (contribution by Peleccotur)", + CHANGELOG4 = " - Optimized the generation of the 'quick history view' in the main table on mouseover", + CHANGELOG5 = " - did some clean up of comm.lua, should be more readable now (I hope)", CHANGELOG6 = "", - CHANGELOG7 = "", + CHANGELOG7 = "Taidtuskecyh @ Gehennas", CHANGELOG8 = "CommunityDKP Discord: https://discord.gg/dXXK4vH", CHANGELOG9 = "", - CHANGELOG10 = "", + CHANGELOG10 = "" } end diff --git a/Localization/Localization.de.lua b/Localization/Localization.de.lua index f124d083..7efcd63f 100644 --- a/Localization/Localization.de.lua +++ b/Localization/Localization.de.lua @@ -814,15 +814,15 @@ if GetLocale() == "deDE" then MIGRATIONCOMPLETED = "Migration abgeschlossen.|n|nBitte deaktivieren Sie MonolithDKP und laden Sie das UI neu. (/reload)", --TODO TRANSLATE: - CHANGELOG1 = "CommunityDKP - v3.2.3", - CHANGELOG2 = " - Upgraded and Refactored the MinBids Table", - CHANGELOG3 = " - Fixed a Minbid Save Issue on Disenchant that was removing the Minbid price", - CHANGELOG4 = " - Implemented PriceList API Support (contribution by styxhope)", - CHANGELOG5 = "", + CHANGELOG1 = "CommunityDKP - v3.2.4-r61", + CHANGELOG2 = " - Fixed standby list sharing comm (issue 153 on github)", + CHANGELOG3 = " - Decay value in main table 'quick history view' is now a number rather than percentage (contribution by Peleccotur)", + CHANGELOG4 = " - Optimized the generation of the 'quick history view' in the main table on mouseover", + CHANGELOG5 = " - did some clean up of comm.lua, should be more readable now (I hope)", CHANGELOG6 = "", - CHANGELOG7 = "", + CHANGELOG7 = "Taidtuskecyh @ Gehennas", CHANGELOG8 = "CommunityDKP Discord: https://discord.gg/dXXK4vH", CHANGELOG9 = "", - CHANGELOG10 = "", + CHANGELOG10 = "" } end diff --git a/Localization/Localization.en.lua b/Localization/Localization.en.lua index b15c10ea..8935b22d 100644 --- a/Localization/Localization.en.lua +++ b/Localization/Localization.en.lua @@ -795,14 +795,14 @@ core.L = { MIGRATIONCANCELED = "Migration canceled.|n|nPlease disable MonolithDKP and /reload the UI if you want to continue with CommunityDKP without using your current tables and settings.", MIGRATIONCOMPLETED = "Migration complete.|n|nPlease disable MonolithDKP and /reload the UI.", - CHANGELOG1 = "CommunityDKP - v3.2.3", - CHANGELOG2 = " - Upgraded and Refactored the MinBids Table", - CHANGELOG3 = " - Fixed a Minbid Save Issue on Disenchant that was removing the Minbid price", - CHANGELOG4 = " - Implemented PriceList API Support (contribution by styxhope)", - CHANGELOG5 = "", - CHANGELOG6 = "", - CHANGELOG7 = "", - CHANGELOG8 = "CommunityDKP Discord: https://discord.gg/dXXK4vH", - CHANGELOG9 = "", - CHANGELOG10 = "", + CHANGELOG1 = "CommunityDKP - v3.2.4-r61", + CHANGELOG2 = " - Fixed standby list sharing comm (issue 153 on github)", + CHANGELOG3 = " - Decay value in main table 'quick history view' is now a number rather than percentage (contribution by Peleccotur)", + CHANGELOG4 = " - Optimized the generation of the 'quick history view' in the main table on mouseover", + CHANGELOG5 = " - did some clean up of comm.lua, should be more readable now (I hope)", + CHANGELOG6 = "", + CHANGELOG7 = "Taidtuskecyh @ Gehennas", + CHANGELOG8 = "CommunityDKP Discord: https://discord.gg/dXXK4vH", + CHANGELOG9 = "", + CHANGELOG10 = "" } diff --git a/Localization/Localization.es.lua b/Localization/Localization.es.lua index 6b37059b..e1f4f506 100644 --- a/Localization/Localization.es.lua +++ b/Localization/Localization.es.lua @@ -818,15 +818,15 @@ if GetLocale() == "esES" or GetLocale() == "esMX" then MIGRATIONCOMPLETED = "Migration complete.|n|nPlease disable MonolithDKP and /reload the UI.", --TODO TRANSLATE: --TODO TRANSLATE: - CHANGELOG1 = "CommunityDKP - v3.2.3", - CHANGELOG2 = " - Upgraded and Refactored the MinBids Table", - CHANGELOG3 = " - Fixed a Minbid Save Issue on Disenchant that was removing the Minbid price", - CHANGELOG4 = " - Implemented PriceList API Support (contribution by styxhope)", - CHANGELOG5 = "", + CHANGELOG1 = "CommunityDKP - v3.2.4-r61", + CHANGELOG2 = " - Fixed standby list sharing comm (issue 153 on github)", + CHANGELOG3 = " - Decay value in main table 'quick history view' is now a number rather than percentage (contribution by Peleccotur)", + CHANGELOG4 = " - Optimized the generation of the 'quick history view' in the main table on mouseover", + CHANGELOG5 = " - did some clean up of comm.lua, should be more readable now (I hope)", CHANGELOG6 = "", - CHANGELOG7 = "", + CHANGELOG7 = "Taidtuskecyh @ Gehennas", CHANGELOG8 = "CommunityDKP Discord: https://discord.gg/dXXK4vH", CHANGELOG9 = "", - CHANGELOG10 = "", + CHANGELOG10 = "" } end diff --git a/Localization/Localization.fr.lua b/Localization/Localization.fr.lua index 01a52270..85f073c6 100644 --- a/Localization/Localization.fr.lua +++ b/Localization/Localization.fr.lua @@ -874,15 +874,15 @@ if GetLocale() == "frFR" then --TODO TRANSLATE: --TODO TRANSLATE: - CHANGELOG1 = "CommunityDKP - v3.2.3", - CHANGELOG2 = " - Upgraded and Refactored the MinBids Table", - CHANGELOG3 = " - Fixed a Minbid Save Issue on Disenchant that was removing the Minbid price", - CHANGELOG4 = " - Implemented PriceList API Support (contribution by styxhope)", - CHANGELOG5 = "", + CHANGELOG1 = "CommunityDKP - v3.2.4-r61", + CHANGELOG2 = " - Fixed standby list sharing comm (issue 153 on github)", + CHANGELOG3 = " - Decay value in main table 'quick history view' is now a number rather than percentage (contribution by Peleccotur)", + CHANGELOG4 = " - Optimized the generation of the 'quick history view' in the main table on mouseover", + CHANGELOG5 = " - did some clean up of comm.lua, should be more readable now (I hope)", CHANGELOG6 = "", - CHANGELOG7 = "", - CHANGELOG8 = "Discord de CommunityDKP: https://discord.gg/dXXK4vH", + CHANGELOG7 = "Taidtuskecyh @ Gehennas", + CHANGELOG8 = "CommunityDKP Discord: https://discord.gg/dXXK4vH", CHANGELOG9 = "", - CHANGELOG10 = "", + CHANGELOG10 = "" } end diff --git a/Localization/Localization.kr.lua b/Localization/Localization.kr.lua index 6dc3d1dc..c96fd5d2 100644 --- a/Localization/Localization.kr.lua +++ b/Localization/Localization.kr.lua @@ -818,15 +818,15 @@ if GetLocale() == "koKR" then MIGRATIONCOMPLETED = "Migration complete.|n|nPlease disable MonolithDKP and /reload the UI.", --TODO TRANSLATE: --TODO TRANSLATE: - CHANGELOG1 = "CommunityDKP - v3.2.3", - CHANGELOG2 = " - Upgraded and Refactored the MinBids Table", - CHANGELOG3 = " - Fixed a Minbid Save Issue on Disenchant that was removing the Minbid price", - CHANGELOG4 = " - Implemented PriceList API Support (contribution by styxhope)", - CHANGELOG5 = "", + CHANGELOG1 = "CommunityDKP - v3.2.4-r61", + CHANGELOG2 = " - Fixed standby list sharing comm (issue 153 on github)", + CHANGELOG3 = " - Decay value in main table 'quick history view' is now a number rather than percentage (contribution by Peleccotur)", + CHANGELOG4 = " - Optimized the generation of the 'quick history view' in the main table on mouseover", + CHANGELOG5 = " - did some clean up of comm.lua, should be more readable now (I hope)", CHANGELOG6 = "", - CHANGELOG7 = "", + CHANGELOG7 = "Taidtuskecyh @ Gehennas", CHANGELOG8 = "CommunityDKP Discord: https://discord.gg/dXXK4vH", CHANGELOG9 = "", - CHANGELOG10 = "", + CHANGELOG10 = "" } end diff --git a/Localization/Localization.ru.lua b/Localization/Localization.ru.lua index 53ceed94..8fc2ad81 100644 --- a/Localization/Localization.ru.lua +++ b/Localization/Localization.ru.lua @@ -815,15 +815,15 @@ if GetLocale() == "ruRU" then MIGRATIONCOMPLETED = "Миграция завершена.|n|nПожалуйста отключите MonolithDKP и перезагрузите интерфейс.", --TODO TRANSLATE: - CHANGELOG1 = "CommunityDKP - v3.2.3", - CHANGELOG2 = " - Upgraded and Refactored the MinBids Table", - CHANGELOG3 = " - Fixed a Minbid Save Issue on Disenchant that was removing the Minbid price", - CHANGELOG4 = " - Implemented PriceList API Support (contribution by styxhope)", - CHANGELOG5 = "", + CHANGELOG1 = "CommunityDKP - v3.2.4-r61", + CHANGELOG2 = " - Fixed standby list sharing comm (issue 153 on github)", + CHANGELOG3 = " - Decay value in main table 'quick history view' is now a number rather than percentage (contribution by Peleccotur)", + CHANGELOG4 = " - Optimized the generation of the 'quick history view' in the main table on mouseover", + CHANGELOG5 = " - did some clean up of comm.lua, should be more readable now (I hope)", CHANGELOG6 = "", - CHANGELOG7 = "", + CHANGELOG7 = "Taidtuskecyh @ Gehennas", CHANGELOG8 = "CommunityDKP Discord: https://discord.gg/dXXK4vH", CHANGELOG9 = "", - CHANGELOG10 = "", + CHANGELOG10 = "" } end diff --git a/Localization/Localization.se.lua b/Localization/Localization.se.lua index 33052c20..14a7e72b 100644 --- a/Localization/Localization.se.lua +++ b/Localization/Localization.se.lua @@ -793,14 +793,14 @@ core.L = { MIGRATIONCOMPLETED = "Migration complete.|n|nPlease disable MonolithDKP and /reload the UI.", --TODO TRANSLATE: - CHANGELOG1 = "CommunityDKP - v3.2.3", - CHANGELOG2 = " - Upgraded and Refactored the MinBids Table", - CHANGELOG3 = " - Fixed a Minbid Save Issue on Disenchant that was removing the Minbid price", - CHANGELOG4 = " - Implemented PriceList API Support (contribution by styxhope)", - CHANGELOG5 = "", + CHANGELOG1 = "CommunityDKP - v3.2.4-r61", + CHANGELOG2 = " - Fixed standby list sharing comm (issue 153 on github)", + CHANGELOG3 = " - Decay value in main table 'quick history view' is now a number rather than percentage (contribution by Peleccotur)", + CHANGELOG4 = " - Optimized the generation of the 'quick history view' in the main table on mouseover", + CHANGELOG5 = " - did some clean up of comm.lua, should be more readable now (I hope)", CHANGELOG6 = "", - CHANGELOG7 = "", + CHANGELOG7 = "Taidtuskecyh @ Gehennas", CHANGELOG8 = "CommunityDKP Discord: https://discord.gg/dXXK4vH", CHANGELOG9 = "", - CHANGELOG10 = "", + CHANGELOG10 = "" } diff --git a/Localization/Localization.tw.lua b/Localization/Localization.tw.lua index b0031ce8..ce6b1d25 100644 --- a/Localization/Localization.tw.lua +++ b/Localization/Localization.tw.lua @@ -820,15 +820,15 @@ if GetLocale() == "zhTW" then MIGRATIONCOMPLETED = "Migration complete.|n|nPlease disable MonolithDKP and /reload the UI.", --TODO TRANSLATE: --TODO TRANSLATE: - CHANGELOG1 = "CommunityDKP - v3.2.3", - CHANGELOG2 = " - Upgraded and Refactored the MinBids Table", - CHANGELOG3 = " - Fixed a Minbid Save Issue on Disenchant that was removing the Minbid price", - CHANGELOG4 = " - Implemented PriceList API Support (contribution by styxhope)", - CHANGELOG5 = "", + CHANGELOG1 = "CommunityDKP - v3.2.4-r61", + CHANGELOG2 = " - Fixed standby list sharing comm (issue 153 on github)", + CHANGELOG3 = " - Decay value in main table 'quick history view' is now a number rather than percentage (contribution by Peleccotur)", + CHANGELOG4 = " - Optimized the generation of the 'quick history view' in the main table on mouseover", + CHANGELOG5 = " - did some clean up of comm.lua, should be more readable now (I hope)", CHANGELOG6 = "", - CHANGELOG7 = "", + CHANGELOG7 = "Taidtuskecyh @ Gehennas", CHANGELOG8 = "CommunityDKP Discord: https://discord.gg/dXXK4vH", CHANGELOG9 = "", - CHANGELOG10 = "", + CHANGELOG10 = "" } end diff --git a/Modules/comm.lua b/Modules/comm.lua index 06b6a7bc..84451d9d 100644 --- a/Modules/comm.lua +++ b/Modules/comm.lua @@ -101,6 +101,7 @@ function CommDKP.Sync:OnCommReceived(prefix, message, distribution, sender) if decompressed == nil then -- this checks if message was previously encoded and compressed, only case we allow this is CommDKPBuild CommDKP:Print("Unknown comm Received with prefix "..prefix.." from "..sender); + return; end -- decompresed is not null meaning data is coming from 2.3.0 or CommunityDKP @@ -246,11 +247,6 @@ function CommDKP.Sync:SendData(prefix, data, target, targetTeam) Prefix = prefix }; - if prefix == "CommDKPBuild" then - CommDKP.Sync:SendCommMessage(prefix, data, "GUILD"); - return; - end - -- everything else but CommDKPBuild is getting compressed _objToSend.Data = data; -- if we send table everytime we have to serialize / deserialize anyway @@ -287,6 +283,9 @@ function CommDKP.Sync:SendData(prefix, data, target, targetTeam) elseif prefix == "CommDKPBidder" then -- bid submissions. Keep to raid. CommDKPBidderSend(prefix, _compressedObj, "RAID"); return; + elseif prefix == "CommDKPBuild" then + CommDKP.Sync:SendCommMessage(prefix, _compressedObj, "GUILD"); + return; end if core.IsOfficer then @@ -670,6 +669,11 @@ end -- CommDKPBuild message HANDLERS ---------- +function CommDKPBuildReceived(commObject, sender) + CommDKP.Sync:SendCommMessage(prefix, commObject, "GUILD"); + return; +end + function CommDKPBuildReceived(commObject, sender) if sender ~= UnitName("player") then local LastVerCheck = time() - core.LastVerCheck; From 14ef9077861731d73e3458bcf97f2f2c9aaf38f0 Mon Sep 17 00:00:00 2001 From: Taidtuskecyh Date: Sat, 2 Jan 2021 21:54:17 +0100 Subject: [PATCH 4/5] commDKPBuild fix for older versions is back... --- Modules/comm.lua | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/Modules/comm.lua b/Modules/comm.lua index 84451d9d..33b2426c 100644 --- a/Modules/comm.lua +++ b/Modules/comm.lua @@ -99,8 +99,28 @@ function CommDKP.Sync:OnCommReceived(prefix, message, distribution, sender) local decoded = LibDeflate:DecodeForWoWAddonChannel(message); local decompressed = LibDeflate:DecompressDeflate(decoded); - if decompressed == nil then -- this checks if message was previously encoded and compressed, only case we allow this is CommDKPBuild - CommDKP:Print("Unknown comm Received with prefix "..prefix.." from "..sender); + + if decompressed == nil then -- this checks if message was previously encoded and compressed + -- < 3.2.4-r61 CommDKPBuild msg handler + if prefix == "CommDKPBuild" and sender ~= UnitName("player") then + local LastVerCheck = time() - core.LastVerCheck; + + if LastVerCheck > 900 then -- limits the Out of Date message from firing more than every 15 minutes + if tonumber(message) > core.BuildNumber then + core.LastVerCheck = time(); + CommDKP:Print(L["OUTOFDATEANNOUNCE"]) + end + end + + if tonumber(message) < core.BuildNumber then -- returns build number if receiving party has a newer version + CommDKP.Sync:SendData("CommDKPBuild", tostring(core.BuildNumber)) + end + return; + elseif prefix == "CommDKPBuild" and sender == UnitName("player") then + return; + else + CommDKP:Print("Unknown comm Received with prefix "..prefix.." from "..sender); + end return; end From 96b273aba401ee5ca1a5b3b2acc5ab7fa3b6b53a Mon Sep 17 00:00:00 2001 From: Taidtuskecyh Date: Sun, 3 Jan 2021 11:06:54 +0100 Subject: [PATCH 5/5] function names clean up --- Modules/comm.lua | 180 ++++++++++++++++++++++++----------------------- 1 file changed, 91 insertions(+), 89 deletions(-) diff --git a/Modules/comm.lua b/Modules/comm.lua index 33b2426c..d2fb946c 100644 --- a/Modules/comm.lua +++ b/Modules/comm.lua @@ -142,28 +142,28 @@ function CommDKP.Sync:OnCommReceived(prefix, message, distribution, sender) ------------------------------ return; elseif prefix == "CommDKPSeed" then - CommDKPSeedReceived(_objReceived, sender); + CommDKP:SeedReceived(_objReceived, sender); return; elseif prefix == "CommDKPBidder" then - CommDKPBidderReceived(_objReceived, sender); + CommDKP:BidderReceived(_objReceived, sender); return; elseif prefix == "CommDKPTeams" then - CommDKPTeamsReceived(_objReceived, sender); + CommDKP:TeamsReceived(_objReceived, sender); return; elseif prefix == "CDKProfileSend" then - CDKProfileSendReceived(_objReceived, sender); + CommDKP:ProfileReceived(_objReceived, sender); return; elseif prefix == "CommDKPCurTeam" then - CommDKPCurTeamReceived(_objReceived, sender); + CommDKP:CurTeamReceived(_objReceived, sender); return; elseif prefix == "CommDKPTalents" then - CommDKPTalentsReceived(_objReceived, sender); + CommDKP:TalentsReceived(_objReceived, sender); return; elseif prefix == "CommDKPRoles" then - CommDKPRolesReceived(_objReceived, sender); + CommDKP:RolesReceived(_objReceived, sender); return; elseif prefix == "CommDKPBuild" then - CommDKPBuildReceived(_objReceived, sender); + CommDKP:BuildReceived(_objReceived, sender); return; end @@ -176,70 +176,70 @@ function CommDKP.Sync:OnCommReceived(prefix, message, distribution, sender) CommDKP:Print(_objReceived.Data); return; elseif prefix == "CommDKPPreBroad" then - CommDKPPreBroadReceived(_objReceived, sender); + CommDKP:PreBroadReceived(_objReceived, sender); return; elseif prefix == "CommDKPCommand" then - CommDKPCommandReceived(_objReceived, sender); + CommDKP:CommandReceived(_objReceived, sender); return; elseif prefix == "CommDKPRaidTime" then - CommDKPRaidTimeReceived(_objReceived, sender); + CommDKP:RaidTimeReceived(_objReceived, sender); return; end if (sender ~= UnitName("player")) then if prefix == "CommDKPAllTabs" then -- receives full table broadcast - FullBroadcastReceived(_objReceived); + CommDKP:AllTabsReceived(_objReceived); return; elseif prefix == "CommDKPMerge" then - TableMergeReceived(_objReceived); + CommDKP:MergeReceived(_objReceived); return; elseif prefix == "CommDKPLootDist" then - CommDKPLootDistReceived(_objReceived); + CommDKP:LootDistReceived(_objReceived); return; elseif prefix == "CommDKPDKPDist" then - CommDKPDKPDistReceived(_objReceived); + CommDKP:DKPDistReceived(_objReceived); return; elseif prefix == "CommDKPDecay" then - CommDKPDKPDecayReceived(_objReceived); + CommDKP:DKPDecayReceived(_objReceived); return; elseif prefix == "CommDKPAddUsers" then - CommDKPAddUsersReceived(_objReceived); + CommDKP:AddUsersReceived(_objReceived); return; elseif prefix == "CommDKPDelUsers" then - CommDKPDelUsersReceived(_objReceived); + CommDKP:DelUsersReceived(_objReceived); return; elseif prefix == "CommDKPDelLoot" then - CommDKPDelLootReceived(_objReceived); + CommDKP:DelLootReceived(_objReceived); return; elseif prefix == "CommDKPDelSync" then - CommDKPDelSyncReceived(_objReceived); + CommDKP:DelSyncReceived(_objReceived); return; elseif prefix == "CommDKPMinBid" then - CommDKPMinBidReceived(_objReceived); + CommDKP:MinBidReceived(_objReceived); return; elseif prefix == "CommDKPMaxBid" then - CommDKPMaxbidReceived(_objReceived); + CommDKP:MaxbidReceived(_objReceived); return; elseif prefix == "CDKPWhitelist" then - CommDKPWhiteListReceived(_objReceived); + CommDKP:WhiteListReceived(_objReceived); return; elseif prefix == "CommDKPStand" then - CommDKPStandByReceived(_objReceived); + CommDKP:StandByReceived(_objReceived); return; elseif prefix == "CommDKPSetPrice" then - CommDKPSetPriceReceived(_objReceived); + CommDKP:SetPriceReceived(_objReceived); return; elseif prefix == "CommDKPZSumBank" then - CommDKPZSumBankReceived(_objReceived); + CommDKP:ZSumBankReceived(_objReceived); return; elseif prefix == "CommDKPDKPModes" then - CommDKPDKPModesReceived(_objReceived); + CommDKP:DKPModesReceived(_objReceived); return; elseif prefix == "CommDKPBidShare" then - CommDKPBidShareReceived(_objReceived); + CommDKP:BidShareReceived(_objReceived); return; elseif prefix == "CommDKPBossLoot" then - CommDKPBossLootReceived(_objReceived); + CommDKP:BossLootReceived(_objReceived); end end end @@ -289,68 +289,68 @@ function CommDKP.Sync:SendData(prefix, data, target, targetTeam) if IsInGuild() then if prefix == "CommDKPQuery" then - CommDKPQuerySend(prefix, _compressedObj, "GUILD"); + CommDKP:QuerySend(prefix, _compressedObj, "GUILD"); return; elseif prefix == "CommDKPTalents" then - CommDKPTalentsSend(prefix, _compressedObj, "GUILD"); + CommDKP:TalentsSend(prefix, _compressedObj, "GUILD"); return; elseif prefix == "CommDKPRoles" then - CommDKPRolesSend(prefix, _compressedObj, "GUILD"); + CommDKP:RolesSend(prefix, _compressedObj, "GUILD"); return; elseif prefix == "CDKProfileSend" then - CommDKPProfileSend(prefix, _compressedObj, "GUILD"); + CommDKP:ProfileSend(prefix, _compressedObj, "GUILD"); return; elseif prefix == "CommDKPBidder" then -- bid submissions. Keep to raid. - CommDKPBidderSend(prefix, _compressedObj, "RAID"); + CommDKP:BidderSend(prefix, _compressedObj, "RAID"); return; elseif prefix == "CommDKPBuild" then - CommDKP.Sync:SendCommMessage(prefix, _compressedObj, "GUILD"); + CommDKP:BuildSend(prefix, _compressedObj, "GUILD"); return; end if core.IsOfficer then if prefix == "CommDKPCommand" then - CommDKPCommandSend(prefix, _compressedObj, "RAID"); + CommDKP:CommandSend(prefix, _compressedObj, "RAID"); return; end if prefix == "CommDKPRaidTime" then - CommDKPRaidTimeSend(prefix, _compressedObj, "RAID"); + CommDKP:RaidTimeSend(prefix, _compressedObj, "RAID"); return; end if prefix == "CommDKPBCastMsg" then - CommDKPCastMsgSend(prefix, _compressedObj, "RAID"); + CommDKP:CastMsgSend(prefix, _compressedObj, "RAID"); return; end if prefix == "CommDKPZSumBank" then - CommDKPZSumBankSend(prefix, _compressedObj, "RAID"); + CommDKP:ZSumBankSend(prefix, _compressedObj, "RAID"); return; end if prefix == "CommDKPBossLoot" then - CommDKPBossLootSend(prefix, _compressedObj, "RAID"); + CommDKP:BossLootSend(prefix, _compressedObj, "RAID"); return; end if prefix == "CommDKPBidShare" then - CommDKPBidShareSend(prefix, _compressedObj, "RAID"); + CommDKP:BidShareSend(prefix, _compressedObj, "RAID"); return; end if prefix == "CommDKPPreBroad" then - CommDKPPreBroadSend(prefix, _compressedObj, target); + CommDKP:PreBroadSend(prefix, _compressedObj, target); return; end if prefix == "CommDKPAllTabs" then - FullBroadcastSend(prefix, _compressedObj, target); + CommDKP:AllTabsSend(prefix, _compressedObj, target); return; end if prefix == "CommDKPMerge" then - TableMergeSend(prefix, _compressedObj, target); + CommDKP:MergeSend(prefix, _compressedObj, target); return; end @@ -406,7 +406,7 @@ end -- FULL BROADCAST HANDLERS ---------- -function FullBroadcastSend(prefix, commObject, channel) +function CommDKP:AllTabsSend(prefix, commObject, channel) local _channel = channel or "GUILD"; local _prefix = prefix or "CommDKPAllTabs"; @@ -420,7 +420,7 @@ function FullBroadcastSend(prefix, commObject, channel) end -function FullBroadcastReceived(commObject) +function CommDKP:AllTabsReceived(commObject) --[[ commObject = { Teams = {}, @@ -536,7 +536,7 @@ end -- 2-WEEK MERGE HANDLERS ---------- -function TableMergeSend(prefix, commObject, channel) +function CommDKP:MergeSend(prefix, commObject, channel) local _channel = channel or "GUILD"; local _prefix = prefix or "CommDKPMerge"; @@ -550,7 +550,7 @@ function TableMergeSend(prefix, commObject, channel) end -function TableMergeReceived(commObject, channel, sender) +function CommDKP:MergeReceived(commObject, channel, sender) for i=1, #commObject.Data.DKP do local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPHistory, true, commObject.CurrentTeam), commObject.Data.DKP[i].index, "index") @@ -679,7 +679,7 @@ end -- CommDKPQuery message HANDLERS ---------- -function CommDKPQuerySend(prefix, commObject, channel) +function CommDKP:QuerySend(prefix, commObject, channel) local _channel = channel or "GUILD"; local _prefix = prefix or "CommDKPQuery"; CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); @@ -689,12 +689,14 @@ end -- CommDKPBuild message HANDLERS ---------- -function CommDKPBuildReceived(commObject, sender) - CommDKP.Sync:SendCommMessage(prefix, commObject, "GUILD"); +function CommDKP:BuildSend(prefix, commObject, channel) + local _channel = channel or "GUILD"; + local _prefix = prefix or "CommDKPQuery"; + CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); return; end -function CommDKPBuildReceived(commObject, sender) +function CommDKP:BuildReceived(commObject, sender) if sender ~= UnitName("player") then local LastVerCheck = time() - core.LastVerCheck; @@ -716,14 +718,14 @@ end -- CommDKPTalents message HANDLERS ---------- -function CommDKPTalentsSend(prefix, commObject, channel) +function CommDKP:TalentsSend(prefix, commObject, channel) local _channel = channel or "GUILD"; local _prefix = prefix or "CommDKPTalents"; CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); end -function CommDKPTalentsReceived(commObject, sender) +function CommDKP:TalentsReceived(commObject, sender) for teamIndex,team in pairs(commObject.Teams) do local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, teamIndex), sender, "player") @@ -747,14 +749,14 @@ end -- CommDKPRoles message HANDLERS ---------- -function CommDKPRolesSend(prefix, commObject, channel) +function CommDKP:RolesSend(prefix, commObject, channel) local _channel = channel or "GUILD"; local _prefix = prefix or "CommDKPRoles"; CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); end -function CommDKPRolesReceived(commObject, sender) +function CommDKP:RolesReceived(commObject, sender) for teamIndex,team in pairs(commObject.Teams) do local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, teamIndex), sender, "player") local curClass = "None"; @@ -827,14 +829,14 @@ end -- CDKProfileSend message HANDLERS ---------- -function CommDKPProfileSend(prefix, commObject, channel) +function CommDKP:ProfileSend(prefix, commObject, channel) local _channel = channel or "GUILD"; local _prefix = prefix or "CDKProfileSend"; CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); end -function CDKProfileSendReceived(commObject, sender) +function CommDKP:ProfileReceived(commObject, sender) local profile = commObject.Data; CommDKP:GetTable(CommDKP_Profiles, true, commObject.CurrentTeam)[profile.player] = profile; @@ -849,14 +851,14 @@ end -- CommDKPBidder message HANDLERS ---------- -function CommDKPBidderSend(prefix, commObject, channel) +function CommDKP:BidderSend(prefix, commObject, channel) local _channel = channel or "RAID"; local _prefix = prefix or "CommDKPBidder"; CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); end -function CommDKPBidderReceived(commObject, sender) +function CommDKP:BidderReceived(commObject, sender) if core.BidInProgress and core.IsOfficer then if commObject.Data == "pass" then -- CommDKP:Print(sender.." has passed.") --TODO: Let's do something different here at some point. @@ -874,14 +876,14 @@ end -- CommDKPCommand message HANDLERS ---------- -function CommDKPCommandSend(prefix, commObject, channel) +function CommDKP:CommandSend(prefix, commObject, channel) local _channel = channel or "RAID"; local _prefix = prefix or "CommDKPCommand"; CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); end -function CommDKPCommandReceived(commObject, sender) +function CommDKP:CommandReceived(commObject, sender) local command, arg1, arg2, arg3, arg4 = strsplit("#", commObject.Data); if sender ~= UnitName("player") then if command == "StartTimer" then @@ -926,14 +928,14 @@ end -- CommDKPRaidTime message HANDLERS ---------- -function CommDKPRaidTimeSend(prefix, commObject, channel) +function CommDKP:RaidTimeSend(prefix, commObject, channel) local _channel = channel or "RAID"; local _prefix = prefix or "CommDKPRaidTime"; CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); end -function CommDKPRaidTimeReceived(commObject, sender) +function CommDKP:RaidTimeReceived(commObject, sender) local command, args = strsplit(",", commObject.Data); if sender ~= UnitName("player") and core.IsOfficer and CommDKP.ConfigTab2 then @@ -986,7 +988,7 @@ end -- CommDKPBCastMsg message HANDLERS ---------- -function CommDKPCastMsgSend(prefix, commObject, channel) +function CommDKP:CastMsgSend(prefix, commObject, channel) local _channel = channel or "RAID"; local _prefix = prefix or "CommDKPBCastMsg"; CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); @@ -997,14 +999,14 @@ end -- CommDKPZSumBank message HANDLERS ---------- -function CommDKPZSumBankSend(prefix, commObject, channel) +function CommDKP:ZSumBankSend(prefix, commObject, channel) local _channel = channel or "RAID"; local _prefix = prefix or "CommDKPZSumBank"; CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); end -function CommDKPZSumBankReceived(commObject) +function CommDKP:ZSumBankReceived(commObject) if core.IsOfficer then core.DB.modes.ZeroSumBank = commObject.Data; if core.ZeroSumBank then @@ -1020,14 +1022,14 @@ end -- CommDKPBossLoot message HANDLERS ---------- -function CommDKPBossLootSend(prefix, commObject, channel) +function CommDKP:BossLootSend(prefix, commObject, channel) local _channel = channel or "RAID"; local _prefix = prefix or "CommDKPBossLoot"; CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); end -function CommDKPBossLootReceived(commObject) +function CommDKP:BossLootReceived(commObject) local lootList = {}; core.DB.bossargs.LastKilledBoss = commObject.Data.boss; @@ -1046,13 +1048,13 @@ end -- CommDKPBidShare message HANDLERS ---------- -function CommDKPBidShareSend(prefix, commObject, channel) +function CommDKP:BidShareSend(prefix, commObject, channel) local _channel = channel or "RAID"; local _prefix = prefix or "CommDKPBidShare"; CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); end -function CommDKPBidShareReceived(commObject) +function CommDKP:BidShareReceived(commObject) if core.BidInterface then CommDKP:Bids_Set(commObject.Data) end @@ -1063,14 +1065,14 @@ end -- CommDKPPreBroad message HANDLERS ---------- -function CommDKPPreBroadSend(prefix, commObject, channel) +function CommDKP:PreBroadSend(prefix, commObject, channel) local _channel = channel or "GUILD"; local _prefix = prefix or "CommDKPPreBroad"; CommDKP.Sync:SendCommMessage(_prefix, commObject, _channel); end -function CommDKPPreBroadReceived(commObject, sender) +function CommDKP:PreBroadReceived(commObject, sender) if sender ~= UnitName("player") then if commObject.Data == "CommDKPAllTabs" then @@ -1091,7 +1093,7 @@ end -- CommDKPLootDist message HANDLERS ---------- -function CommDKPLootDistReceived(commObject) +function CommDKP:LootDistReceived(commObject) local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPTable, true, commObject.CurrentTeam), commObject.Data.player, "player") if search then @@ -1120,7 +1122,7 @@ end -- CommDKPDKPDist message HANDLERS ---------- -function CommDKPDKPDistReceived(commObject) +function CommDKP:DKPDistReceived(commObject) local players = {strsplit(",", strsub(commObject.Data.players, 1, -2))} local dkp = commObject.Data.dkp @@ -1156,7 +1158,7 @@ end -- CommDKPDecay message HANDLERS ---------- -function CommDKPDKPDecayReceived(commObject) +function CommDKP:DKPDecayReceived(commObject) local players = {strsplit(",", strsub(commObject.Data.players, 1, -2))} local dkp = {strsplit(",", commObject.Data.dkp)} @@ -1185,7 +1187,7 @@ end -- CommDKPAddUsers message HANDLERS ---------- -function CommDKPAddUsersReceived(commObject) +function CommDKP:AddUsersReceived(commObject) if UnitName("player") ~= sender then CommDKP:AddEntitiesToDKPTable(commObject.Data, commObject.TargetTeam); end @@ -1196,7 +1198,7 @@ end -- CommDKPDelUsers message HANDLERS ---------- -function CommDKPDelUsersReceived(commObject) +function CommDKP:DelUsersReceived(commObject) local numPlayers = 0 local removedUsers = "" @@ -1255,7 +1257,7 @@ end -- CommDKPDelLoot message HANDLERS ---------- -function CommDKPDelLootReceived(commObject) +function CommDKP:DelLootReceived(commObject) local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_Loot, true, commObject.CurrentTeam), commObject.Data.deletes, "index") if search then @@ -1284,7 +1286,7 @@ end -- CommDKPDelSync message HANDLERS ---------- -function CommDKPDelSyncReceived(commObject) +function CommDKP:DelSyncReceived(commObject) local search = CommDKP:Table_Search(CommDKP:GetTable(CommDKP_DKPHistory, true, commObject.CurrentTeam), commObject.Data.deletes, "index") local players = {strsplit(",", strsub(commObject.Data.players, 1, -2))} -- cuts off last "," from string to avoid creating an empty value local dkp, mod; @@ -1344,7 +1346,7 @@ end -- CommDKPMinBid message HANDLERS ---------- -function CommDKPMinBidReceived(commObject) +function CommDKP:MinBidReceived(commObject) if core.IsOfficer then core.DB.MinBidBySlot = commObject.Data[1] @@ -1376,7 +1378,7 @@ end -- CommDKPMaxBid message HANDLERS ---------- -function CommDKPMaxbidReceived(commObject) +function CommDKP:MaxbidReceived(commObject) if core.IsOfficer then core.DB.MaxBidBySlot = commObject.Data[1]; @@ -1403,7 +1405,7 @@ end -- CDKPWhitelist message HANDLERS ---------- -function CommDKPWhiteListReceived(commObject) +function CommDKP:WhiteListReceived(commObject) if CommDKP:GetGuildRankIndex(UnitName("player")) > 1 then -- only applies if not GM CommDKP:SetTable(CommDKP_Whitelist, false, commObject.Data, commObject.CurrentTeam); end @@ -1413,7 +1415,7 @@ end -- CommDKPStand message HANDLERS ---------- -function CommDKPStandByReceived(commObject) +function CommDKP:StandByReceived(commObject) CommDKP:SetTable(CommDKP_Standby, true, commObject.Data, commObject.CurrentTeam); -- issues/153 end @@ -1421,7 +1423,7 @@ end -- CommDKPSetPrice message HANDLERS ---------- -function CommDKPSetPriceReceived(commObject) +function CommDKP:SetPriceReceived(commObject) local _objSetPrice = _objReceived.Data; local _, _, Color, Ltype, itemID, Enchant, Gem1, Gem2, Gem3, Gem4, Suffix, Unique, LinkLvl, Name = string.find(_objSetPrice.link,"|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*):?(%d*):?(%-?%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?") @@ -1443,7 +1445,7 @@ end -- CommDKPDKPModes message HANDLERS ---------- -function CommDKPDKPModesReceived(commObject) +function CommDKP:DKPModesReceived(commObject) if (core.DB.modes.mode ~= commObject.Data[1].mode) or (core.DB.modes.MaxBehavior ~= commObject.Data[1].MaxBehavior) then CommDKP:Print(L["RECOMMENDRELOAD"]) end @@ -1456,7 +1458,7 @@ end -- CommDKPSeed message HANDLERS ---------- -function CommDKPSeedReceived(commObject, sender) +function CommDKP:SeedReceived(commObject, sender) --[[ Data = { @@ -1507,7 +1509,7 @@ end -- CommDKPTeams message HANDLERS ---------- -function CommDKPTeamsReceived(commObject, sender) +function CommDKP:TeamsReceived(commObject, sender) CommDKP:GetTable(CommDKP_DB, false)["teams"] = commObject.Teams end @@ -1515,7 +1517,7 @@ end -- CommDKPCurTeam message HANDLERS ---------- -function CommDKPCurTeamReceived(commObject, sender) +function CommDKP:CurTeamReceived(commObject, sender) CommDKP:SetCurrentTeam(commObject.CurrentTeam) -- this also refreshes all the tables/views/graphs end