# HG changeset patch # User Nenue # Date 1476950891 14400 # Node ID b107b4df7eb6ab5861189461dfba96713753d20c # Parent 27db212af78320095e2e807b54fde44be14212e8 - core:DynamicReanchor - top-down evaluation of clustered frames - core:InternalReanchor(module) - bottom-up evaluation of target and frames anchored to it diff -r 27db212af783 -r b107b4df7eb6 Modules/WorldState.lua --- a/Modules/WorldState.lua Wed Oct 19 16:51:17 2016 -0400 +++ b/Modules/WorldState.lua Thu Oct 20 04:08:11 2016 -0400 @@ -63,8 +63,6 @@ function VeneerWorldStateMixin:OnLoad () self.modules = {self:GetChildren()} print('|cFFFFFF00'..self:GetName()..'|r!') - self:RegisterEvent('ARTIFACT_UPDATE') - self:RegisterEvent('ARTIFACT_XP_UPDATE') self:RegisterEvent('PLAYER_ENTERING_WORLD') self:RegisterEvent('PLAYER_REGEN_ENABLED') self:RegisterEvent('PLAYER_REGEN_DISABLED') @@ -80,13 +78,7 @@ function VeneerWorldStateMixin:OnEvent(event, arg) print(event, arg) - - if event == 'PLAYER_LOGIN' then - if IsLoggedIn() and not self.initialized then - self.initialized = true - self:Setup() - end - elseif event == 'ZONE_CHANGED_NEW_AREA' or event == 'ADDON_LOADED' then + if event == 'ZONE_CHANGED_NEW_AREA' or event == 'ADDON_LOADED' then if OrderHallCommandBar then self:UnregisterEvent('ZONE_CHANGED_NEW_AREA') self:UnregisterEvent('ADDON_LOADED') @@ -101,18 +93,19 @@ end end -function VeneerWorldStateMixin:Update() +function VeneerWorldStateMixin:Update(isBatchUpdate) print('|cFFFFFF00All:Update()|r') - for i, frame in ipairs(self.modules) do + for index, frame in ipairs(self.modules) do if frame.Update then - print(' |cFFFF00FF'.. frame:GetName() .. ':Update()') - frame:Update() + print(' '..index..' |cFFFF00FFUpdate:|r '.. frame:GetName()) + frame:Update(isBatchUpdate) + print(' ', frame:IsVisible(), frame:IsShown()) end end end function VeneerWorldStateMixin:Reanchor(isUpdate) - print('|cFFFFFF00'..self:GetName()..':Reanchor()|r', #self.modules, 'blocks') + print(' |cFF0088FF'..self:GetName()..':Reanchor()|r', #self.modules, 'blocks') self.maxHeight = 0 for i, frame in ipairs(self.modules) do print(' '..frame:GetName()..':',frame:IsShown(), frame:IsVisible(), frame:GetHeight()) @@ -141,12 +134,28 @@ function VeneerOrderHallMixin:Setup() print('|cFFFFFF00'..self:GetName()..':Setup()') - hooksecurefunc(OrderHallCommandBar,'Show', function() - self:Update() - end) - hooksecurefunc(OrderHallCommandBar,'Hide', function() - self:Update() - end) + self:SetParent(OrderHallCommandBar) + self:RegisterEvent("ZONE_CHANGED"); + self:RegisterEvent("ZONE_CHANGED_INDOORS"); + self:RegisterEvent("ZONE_CHANGED_NEW_AREA"); + self:SetShown(true) +end + +function VeneerOrderHallMixin:OnEvent(event, ...) + + print('|cFF00AAFF'..self:GetName()..'|r:'.. event, ...) + self:Update() +end + +function VeneerOrderHallMixin:OnShow() + print('|cFF00AAFF'..self:GetName()..'|r:OnShow()', OrderHallCommandBar:IsShown(), self:IsShown()) + self:Update() + Veneer:InternalReanchor(self) +end + +function VeneerOrderHallMixin:OnHide() + print('|cFF00AAFF'..self:GetName()..'|r:OnHide()', OrderHallCommandBar:IsShown(), self:IsShown()) + Veneer:Reanchor() end function VeneerOrderHallMixin:Update() @@ -156,15 +165,17 @@ return end - print('|cFF0044FF'..self:GetName()..' update') OrderHallCommandBar:ClearAllPoints() - OrderHallCommandBar:SetPoint('TOP', self, 'TOP') + OrderHallCommandBar:SetPoint('TOP', UIParent, 'TOP') OrderHallCommandBar:SetWidth(600) OrderHallCommandBar.Background:SetColorTexture(0,0,0,0.5) OrderHallCommandBar.WorldMapButton:Hide() OrderHallCommandBar:EnableMouse(false) + self:SetSize(OrderHallCommandBar:GetSize()) - self:SetSize(OrderHallCommandBar:GetSize()) + print('|cFF00AAFF'..self:GetName()..'|r:Update()', OrderHallCommandBar:IsVisible(), self:IsShown()) + print(debugstack(6)) + end function VeneerWorldStateCurrencyMixin:OnLoad () @@ -183,7 +194,7 @@ end -function VeneerWorldStateCurrencyMixin:Update() +function VeneerWorldStateCurrencyMixin:Update(isBatchUpdate) print(' Zone:', GetZoneText()) if GetZoneText() == 'Suramar' then @@ -296,7 +307,7 @@ self.ProgressFlash:Play() end -function VeneerWorldStateProgressMixin:Update() +function VeneerWorldStateProgressMixin:Update(isBatchUpdate) local hasNewInfo = false local progressChange = false print(' current mode:', self.mode) @@ -320,7 +331,7 @@ end hasNewInfo = (self.progressAmount ~= xp) progressChange = (hasNewInfo and not self.modeChanged) and ((xp - self.progressAmount) / xpMax) - self.progressOverflow = bonusXP + self.progressOverflow = bonusXP or 0 self.progressAmount = xp self.progressMax = xpMax @@ -329,7 +340,7 @@ if itemID then local nextRankCost = GetCostForPointAtRank(pointsSpent) or 0 - print(' C_AUI:', itemID, name, 'XP:', totalXP, 'Points:', pointsSpent, 'Next:', nextRankCost) + print(' API:', itemID, name, 'XP:', totalXP, 'Points:', pointsSpent, 'Next:', nextRankCost) hasNewInfo = (self.progressAmount ~= totalXP) progressChange = (hasNewInfo and not self.modeChanged) and (((totalXP - self.progressAmount) / nextRankCost)) @@ -348,6 +359,7 @@ self.progressAmount = totalXP self.progressMax = nextRankCost else + self.progressOverflow = 0 self.progressAmount = 0 self.progressMax = 1 self.progressText = '' @@ -371,11 +383,9 @@ end - print(self:IsVisible()) - print(self:GetWidth()) - print(self.ProgressBG:GetWidth()) - print(' Percent:', floor(self.progressPercent*100)/100, 'BarLength:', floor(self:GetWidth()* self.progressPercent), 'NewInfo:', hasNewInfo, 'IsShown:', self:IsShown()) + print(' Percent:', floor(self.progressPercent*100)/100, 'BarLength:', floor(self:GetWidth()* self.progressPercent), 'new:', hasNewInfo, 'shown:', self:IsShown()) + print(' Metrics:', self:IsVisible(), self:GetWidth(), self.ProgressBG:GetWidth()) if progressChange then self:AnimateProgress(progressChange) @@ -390,9 +400,9 @@ self.progressLeft = self.progressMax - self.progressAmount if self.progressOverflow >= self.progressLeft then + self.OverflowBar:SetPoint('TOPRIGHT', self.ProgressBG, 'TOPRIGHT', 0, 0) + else self.OverflowBar:SetPoint('TOPRIGHT', self.ProgressBar, 'TOPRIGHT', (self.progressOverflow / self.progressMax) * self:GetWidth(), 0) - else - self.OverflowBar:SetPoint('TOPRIGHT', self.ProgressBG, 'TOPRIGHT', 0, 0) end else @@ -469,6 +479,7 @@ end function WorldStateBlockMixin:Setup() print('|cFF0088FF'..self:GetName()..':Setup()|r -- nop') + self:Update() end function WorldStateBlockMixin:Reset() print('|cFF0088FF'..self:GetName()..':Reset()') diff -r 27db212af783 -r b107b4df7eb6 Modules/WorldState.xml --- a/Modules/WorldState.xml Wed Oct 19 16:51:17 2016 -0400 +++ b/Modules/WorldState.xml Thu Oct 20 04:08:11 2016 -0400 @@ -3,7 +3,7 @@