view Lost.lua @ 1:766d8a40a1d6

first commit?
author Nenue
date Tue, 15 Dec 2015 08:07:21 -0500
parents
children 9de4a810fda7
line wrap: on
line source
-- User: Krakyn
-- Created: 12/14/2015 3:03 PM
local T = LibStub("AceAddon-3.0"):GetAddon("Turok")
local TL = 'Lost'
local print = function(...) _G.print(TL, ...) end
local LSM = LibStub("LibSharedMedia-3.0")
local mod = T:NewModule(TL, "AceTimer-3.0")
local time = _G.ct
local spell_trunc = {}
local inv = T.anchor_inverse
local d = T.direction_coord
local a = T.anchor_direction

function mod:OnEnable()
  self.raidbuffs_active = {}        -- active raid buffs
  self.raidbuffs_text = {}   -- raid buff text
  self.raidbuffs_avail = {}  -- availability info
  self.raidbuffs_display = {} -- buff list ordering info
  self.unit_cache = {}        -- remember GUIDs we've seen before

  local db = _G.TurokData
  db.raidbuff = {
    parent = 'UIParent',
    anchor = 'BOTTOMRIGHT', anchorTo = 'BOTTOMRIGHT',
    posX = -300, posY = 300,
    height = 50, width = 150,
    icon_size = 25,
    label_size = 11,
    label_font = 'ArchivoNarrow-Bold',
  }

  local rw = CreateFrame('Frame', 'TkRaidWatch', UIParent)
  local c =  db.raidbuff
  self.raid_watcher = rw
  rw:SetPoint(c.anchor, c.parent, c.anchorTo, c.posX, c.posY)
  rw:SetSize(c.width, c.height)
  rw:SetMovable(true)
  local bd = rw:CreateTexture()
  bd:SetTexture(1,1,1,1)
  bd:SetGradient('VERTICAL', 0,0,0,1,1,1)
  bd:SetBlendMode('MOD')
  bd:SetPoint('TOPLEFT',rw,'TOPLEFT', -2, 2)
  bd:SetPoint('BOTTOMRIGHT',rw,'BOTTOMRIGHT', 2, -2)

  for i = 1, 9 do
    local icon = rw:CreateTexture('TkRaidWatchButton'..i, 'ARTWORK')
    icon:SetSize(c.icon_size,c.icon_size)
    icon:SetTexCoord(0.15, 0.85, 0.15, 0.85)


    self.raidbuffs_active[i] = icon
    rw:EnableMouse(true)
    rw:SetScript('OnMouseDown', function(self) self:StartMoving() end)
    rw:SetScript('OnMouseUp', function(self) self:StopMovingOrSizing() end)

    local text = rw:CreateFontString('TkRaidWatchText'.. i, 'OVERLAY')
    text:SetPoint('CENTER', icon, 'CENTER')
    text:SetFont(LSM:Fetch('font', c.label_font), c.label_size, 'OUTLINE')
    text:SetText(i)
    self.raidbuffs_text[i] = text
  end


  db.raidevent = {}


  self:RegisterEvent('PARTY_MEMBERS_CHANGED')
  self:RegisterEvent('PLAYER_SPECIALIZATION_CHANGED')
  self:RegisterEvent('ENCOUNTER_START')
  self:RegisterEvent('INSPECT_READY')
  self:RegisterEvent('UNIT_AURA', 'RaidBuffScan')

  self:RaidBuffScan()
  self:RosterScan()
end
function mod:PLAYER_REGEN_ENABLED(e,...) end
function mod:PLAYER_REGEN_DISABLED(e, ...) end

function mod:INSPECT_READY()
end
function mod:PLAYER_SPECIALIZATION_CHANGED(e,unit)
  local specID
  print(e, unit)
  if unit == 'player' then
    specID = GetSpecializationInfo(GetSpecialization())
  else
    --NotifyInspect(unit)
    specID = GetInspectSpecialization()
  end

  print(GetSpecializationInfoByID(specID))
  self:RosterScan()
end

function mod:PARTY_MEMBERS_CHANGED(e, ...)
end
function mod:ENCOUNTER_START(e,...)
end

-- Updates available raid/party buffs
function mod:RaidBuffScan(unit)

  -- search for unit data

  local changed = false
  local c = T.db.raidbuff
  -- update raidbuffs
  local k = 1
  for i = 1, NUM_LE_RAID_BUFF_TYPES do
    local rb = self.raidbuffs_active[i]
    local rt = self.raidbuffs_text[i]
    local name, rank, texture, duration, expiration, spellId, slot = GetRaidBuffTrayAuraInfo(i)
    if name then
      rb:Hide()
      rt:Hide()
      self.raidbuffs_display[i] = nil
    else
        rb:Show()
        rt:Show()
        if self.raidbuffs_avail[i] then
          rb:SetTexture(0.5,0.5,0.5,0.1)
          rb:SetBlendMode('MOD')
        else
          rb:SetTexture(1,0.2,0,0.5)
          rb:SetBlendMode('ADD')
        end
        self.raidbuffs_text[i]:SetText(string.sub(_G['RAID_BUFF_'..i],0,2))

        if not self.raidbuffs_display[i] or self.raidbuffs_display[i] ~= k then
          self.raidbuffs_display[i] = k
          local axis_a, axis_b = c.icon_size, c.width
          local w = axis_a * (k-1) % axis_b
          local h = math.floor((k-1) / (axis_b / axis_a)) * axis_a
          print(axis_a, axis_b, w, h)
          rb:SetPoint('BOTTOMLEFT', TkRaidWatch, 'BOTTOMLEFT', w, h)
        end

        k = k + 1
    end
  end
end

function mod:RosterScan()
  local lim = 1
  if IsInRaid() then
    lim = 40
  elseif IsInGroup() then
    lim = 5
  end

  for i = 1, lim do
      local name, rank, subgroup, level, class, fileName, zone, online, isDead, role, isML = GetRaidRosterInfo(i)
      if name then
        if string.find(name,'-') then
          name, realm = string.match(name, "(.+)-(.+)")
        else
          realm = GetRealmName()
        end

        print(i, name, class, role)
      end

  end

end