From a8e42f10af8c560f1ea7367478a0f1e97b76e77d Mon Sep 17 00:00:00 2001 From: Xruptor Date: Sat, 19 Nov 2011 08:43:55 -0500 Subject: [PATCH] -finished implementing communication update for faction controlled areas. -should technically work if more then one person has the addon installed. --- xanWorldPVPTimers.lua | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/xanWorldPVPTimers.lua b/xanWorldPVPTimers.lua index a99b309..d5fe796 100644 --- a/xanWorldPVPTimers.lua +++ b/xanWorldPVPTimers.lua @@ -315,14 +315,14 @@ function f:PLAYER_ENTERING_WORLD() f:getClaimIcons() end -function f:getClaimIcons() +function f:getClaimIcons(sSwitch) local sendReq = false --get wintergrasp data if self:WGMapControlled() then sendReq = true end --get tol barad data if self:TBMapControlled() then sendReq = true end --send a request only if it's requested - if sendReq then self:requestUpdate() end + if sendReq and not sSwitch then self:requestUpdate() end end function f:TBMapControlled() @@ -442,16 +442,17 @@ end function f:CHAT_MSG_ADDON(event, prefix, message, msgtype, sender) if (prefix == "XWPT") then --don't do an update for ourself LOL - - --print("Got", prefix, message, msgtype, sender) + --print("MSG:", prefix, message, msgtype, sender) + if message == "upt" and sender ~= UnitName("player") then local sentString = "" --generate an update string for i=1, GetNumWorldPVPAreas() do local pvpID, localizedName, isActive, canQueue, startTime, canEnter = GetWorldPVPAreaInfo(i) local tFrm = _G[string.format("xanWorldPVPTimers_%s", localizedName)] - if tFrm then - sentString = sentString..i..","..tFrm.currFaction..";" + --only send faction updates, not in battle, or unknown ;P + if tFrm and tFrm.currFaction > 0 and tFrm.currFaction < 3 then + sentString = sentString..i..tFrm.currFaction end end if string.len(sentString) > 0 then @@ -459,10 +460,35 @@ function f:CHAT_MSG_ADDON(event, prefix, message, msgtype, sender) SendAddonMessage( "XWPT", sentString, "PARTY") end - elseif sender ~= UnitName("player") then - --process message + elseif sender ~= UnitName("player") and string.len(message) > 0 then + --if we only two characters then only one faction update was sent, if it was 4 then both WG and TB + if string.len(message) == 2 then + --update only one faction was sent + f:setFactionStatus(string.sub(message, 1, 1), string.sub(message, 2)) + elseif string.len(message) == 4 then + --both TB and WG were sent + f:setFactionStatus(string.sub(message, 1, 1), string.sub(message, 2, 2)) + f:setFactionStatus(string.sub(message, 3, 3), string.sub(message, 4)) + end end end + +end + +function f:setFactionStatus(frmNum, factionNum) + frmNum = tonumber(frmNum) + factionNum = tonumber(factionNum) + + if frmNum and factionNum then + local pvpID, localizedName, isActive, canQueue, startTime, canEnter = GetWorldPVPAreaInfo(frmNum) + local tFrm = _G[string.format("xanWorldPVPTimers_%s", localizedName)] + --if the faction num doesn't match then force update it + if tFrm and tFrm.currFaction ~= factionNum then + tFrm.currFaction = factionNum + --force an update but don't freaking request another update, otherwise loop from hell + f:getClaimIcons(true) + end + end end --[[------------------------ -- 1.7.9.5