View Single Post
02/20/15, 12:35 AM   #47
circonian
AddOn Author - Click to view addons
Join Date: May 2014
Posts: 613
Infmay Nil Error

PTS Error:


It looks like:

ZO_HUDInfamyMeter_Update(..) doesn't get called until the ZO_HUDInfamyMeter is shown.
xml Code:
  1. <TopLevelControl name="ZO_HUDInfamyMeter" hidden="true" >
  2.    <OnInitialized>
  3.       ZO_HUDInfamyMeter_Initialize(self)
  4.    </OnInitialized>
  5.    <OnUpdate>
  6.       ZO_HUDInfamyMeter_Update(time)
  7.    </OnUpdate>
  8. </TopLevelControl>

Which is the only place I see :Update(..) getting called
Lua Code:
  1. function ZO_HUDInfamyMeter_Update(time)
  2.     HUD_INFAMY_METER:Update(time)
  3. end

Which calls :OnInfamyUpdate(..)
Lua Code:
  1. function ZO_HUDInfamyMeter:Update(time)
  2.     if self.nextUpdateTime <= time and not self.hiddenExternalRequest then
  3.         self.nextUpdateTime = time + INFAMY_METER_UPDATE_DELAY_SECONDS
  4.         self:OnInfamyUpdated(UPDATE_TYPE_TICK)
  5.     end
  6. end

and finally self.oldInfamy does not get initialized until the last line of this function:
Lua Code:
  1. function ZO_HUDInfamyMeter:OnInfamyUpdated(updateType)
  2.    ...
  3.     self.oldInfamy = self.infamy
  4. end

So if this event fires before the HUDInfamyMeter gets displayed (by opening some ui panel) then self.oldInfamy is still nil
Lua Code:
  1. -- Register for events
  2.     control:RegisterForEvent(EVENT_JUSTICE_INFAMY_UPDATED, function()
  3.         local infamy = GetInfamy()
  4.         if not self.hiddenExternalRequest and infamy ~= 0 and infamy > self.oldInfamy then self:OnInfamyUpdated(UPDATE_TYPE_EVENT) end
  5.     end)

Last edited by circonian : 02/20/15 at 12:52 AM.
  Reply With Quote