local RaidFrames = _G['RaidFrames']
RaidFrames.Events = {}

local Events = RaidFrames.Events
local Handler = RaidFrames.Handler

function Events.RegisterEvents()
  EVENT_MANAGER:RegisterForEvent(RaidFrames.name, EVENT_POWER_UPDATE, Events.OnPowerUpdate)
end

function Events.OnPowerUpdate(eventCode, unitTag, powerIndex, powerType, curPower, maxPower, effectivePower)
  local unitFrame = RaidFrames.Handler.unitFrames[unitTag]

  if ZO_Group_IsGroupUnitTag(unitTag) then
    d(unitTag)
  end

  if unitFrame == nil then
    return
  end

  d('curPower: ' .. curPower)

  if IsUnitOnline(unitTag) then
    if IsUnitDead(unitTag) then
      -- Add Dead notification here instead of setting to 0
      if powerType == POWERTYPE_HEALTH then
        Handler.UpdateHealth(unitFrame, curPower, maxPower)
      elseif powerType == POWERTYPE_MAGICKA then
        Handler.UpdateMagicka(unitFrame, curPower, maxPower)
      elseif powerType == POWERTYPE_STAMINA then
        Handler.UpdateStamina(unitFrame, curPower, maxPower)
      end
    else
      -- User is alive, update their bar
      if powerType == POWERTYPE_HEALTH then
        Handler.UpdateHealth(unitFrame, curPower, maxPower)
      elseif powerType == POWERTYPE_MAGICKA then
        Handler.UpdateMagicka(unitFrame, curPower, maxPower)
      elseif powerType == POWERTYPE_STAMINA then
        Handler.UpdateStamina(unitFrame, curPower, maxPower)
      end
    end
  else
    -- Set user offline
  end
end