Mercurial > wow > turok
comparison Lost.lua @ 1:766d8a40a1d6
first commit?
| author | Nenue |
|---|---|
| date | Tue, 15 Dec 2015 08:07:21 -0500 |
| parents | |
| children | 9de4a810fda7 |
comparison
equal
deleted
inserted
replaced
| 0:ebbcc148a407 | 1:766d8a40a1d6 |
|---|---|
| 1 -- User: Krakyn | |
| 2 -- Created: 12/14/2015 3:03 PM | |
| 3 local T = LibStub("AceAddon-3.0"):GetAddon("Turok") | |
| 4 local TL = 'Lost' | |
| 5 local print = function(...) _G.print(TL, ...) end | |
| 6 local LSM = LibStub("LibSharedMedia-3.0") | |
| 7 local mod = T:NewModule(TL, "AceTimer-3.0") | |
| 8 local time = _G.ct | |
| 9 local spell_trunc = {} | |
| 10 local inv = T.anchor_inverse | |
| 11 local d = T.direction_coord | |
| 12 local a = T.anchor_direction | |
| 13 | |
| 14 function mod:OnEnable() | |
| 15 self.raidbuffs_active = {} -- active raid buffs | |
| 16 self.raidbuffs_text = {} -- raid buff text | |
| 17 self.raidbuffs_avail = {} -- availability info | |
| 18 self.raidbuffs_display = {} -- buff list ordering info | |
| 19 self.unit_cache = {} -- remember GUIDs we've seen before | |
| 20 | |
| 21 local db = _G.TurokData | |
| 22 db.raidbuff = { | |
| 23 parent = 'UIParent', | |
| 24 anchor = 'BOTTOMRIGHT', anchorTo = 'BOTTOMRIGHT', | |
| 25 posX = -300, posY = 300, | |
| 26 height = 50, width = 150, | |
| 27 icon_size = 25, | |
| 28 label_size = 11, | |
| 29 label_font = 'ArchivoNarrow-Bold', | |
| 30 } | |
| 31 | |
| 32 local rw = CreateFrame('Frame', 'TkRaidWatch', UIParent) | |
| 33 local c = db.raidbuff | |
| 34 self.raid_watcher = rw | |
| 35 rw:SetPoint(c.anchor, c.parent, c.anchorTo, c.posX, c.posY) | |
| 36 rw:SetSize(c.width, c.height) | |
| 37 rw:SetMovable(true) | |
| 38 local bd = rw:CreateTexture() | |
| 39 bd:SetTexture(1,1,1,1) | |
| 40 bd:SetGradient('VERTICAL', 0,0,0,1,1,1) | |
| 41 bd:SetBlendMode('MOD') | |
| 42 bd:SetPoint('TOPLEFT',rw,'TOPLEFT', -2, 2) | |
| 43 bd:SetPoint('BOTTOMRIGHT',rw,'BOTTOMRIGHT', 2, -2) | |
| 44 | |
| 45 for i = 1, 9 do | |
| 46 local icon = rw:CreateTexture('TkRaidWatchButton'..i, 'ARTWORK') | |
| 47 icon:SetSize(c.icon_size,c.icon_size) | |
| 48 icon:SetTexCoord(0.15, 0.85, 0.15, 0.85) | |
| 49 | |
| 50 | |
| 51 self.raidbuffs_active[i] = icon | |
| 52 rw:EnableMouse(true) | |
| 53 rw:SetScript('OnMouseDown', function(self) self:StartMoving() end) | |
| 54 rw:SetScript('OnMouseUp', function(self) self:StopMovingOrSizing() end) | |
| 55 | |
| 56 local text = rw:CreateFontString('TkRaidWatchText'.. i, 'OVERLAY') | |
| 57 text:SetPoint('CENTER', icon, 'CENTER') | |
| 58 text:SetFont(LSM:Fetch('font', c.label_font), c.label_size, 'OUTLINE') | |
| 59 text:SetText(i) | |
| 60 self.raidbuffs_text[i] = text | |
| 61 end | |
| 62 | |
| 63 | |
| 64 db.raidevent = {} | |
| 65 | |
| 66 | |
| 67 self:RegisterEvent('PARTY_MEMBERS_CHANGED') | |
| 68 self:RegisterEvent('PLAYER_SPECIALIZATION_CHANGED') | |
| 69 self:RegisterEvent('ENCOUNTER_START') | |
| 70 self:RegisterEvent('INSPECT_READY') | |
| 71 self:RegisterEvent('UNIT_AURA', 'RaidBuffScan') | |
| 72 | |
| 73 self:RaidBuffScan() | |
| 74 self:RosterScan() | |
| 75 end | |
| 76 function mod:PLAYER_REGEN_ENABLED(e,...) end | |
| 77 function mod:PLAYER_REGEN_DISABLED(e, ...) end | |
| 78 | |
| 79 function mod:INSPECT_READY() | |
| 80 end | |
| 81 function mod:PLAYER_SPECIALIZATION_CHANGED(e,unit) | |
| 82 local specID | |
| 83 print(e, unit) | |
| 84 if unit == 'player' then | |
| 85 specID = GetSpecializationInfo(GetSpecialization()) | |
| 86 else | |
| 87 --NotifyInspect(unit) | |
| 88 specID = GetInspectSpecialization() | |
| 89 end | |
| 90 | |
| 91 print(GetSpecializationInfoByID(specID)) | |
| 92 self:RosterScan() | |
| 93 end | |
| 94 | |
| 95 function mod:PARTY_MEMBERS_CHANGED(e, ...) | |
| 96 end | |
| 97 function mod:ENCOUNTER_START(e,...) | |
| 98 end | |
| 99 | |
| 100 -- Updates available raid/party buffs | |
| 101 function mod:RaidBuffScan(unit) | |
| 102 | |
| 103 -- search for unit data | |
| 104 | |
| 105 local changed = false | |
| 106 local c = T.db.raidbuff | |
| 107 -- update raidbuffs | |
| 108 local k = 1 | |
| 109 for i = 1, NUM_LE_RAID_BUFF_TYPES do | |
| 110 local rb = self.raidbuffs_active[i] | |
| 111 local rt = self.raidbuffs_text[i] | |
| 112 local name, rank, texture, duration, expiration, spellId, slot = GetRaidBuffTrayAuraInfo(i) | |
| 113 if name then | |
| 114 rb:Hide() | |
| 115 rt:Hide() | |
| 116 self.raidbuffs_display[i] = nil | |
| 117 else | |
| 118 rb:Show() | |
| 119 rt:Show() | |
| 120 if self.raidbuffs_avail[i] then | |
| 121 rb:SetTexture(0.5,0.5,0.5,0.1) | |
| 122 rb:SetBlendMode('MOD') | |
| 123 else | |
| 124 rb:SetTexture(1,0.2,0,0.5) | |
| 125 rb:SetBlendMode('ADD') | |
| 126 end | |
| 127 self.raidbuffs_text[i]:SetText(string.sub(_G['RAID_BUFF_'..i],0,2)) | |
| 128 | |
| 129 if not self.raidbuffs_display[i] or self.raidbuffs_display[i] ~= k then | |
| 130 self.raidbuffs_display[i] = k | |
| 131 local axis_a, axis_b = c.icon_size, c.width | |
| 132 local w = axis_a * (k-1) % axis_b | |
| 133 local h = math.floor((k-1) / (axis_b / axis_a)) * axis_a | |
| 134 print(axis_a, axis_b, w, h) | |
| 135 rb:SetPoint('BOTTOMLEFT', TkRaidWatch, 'BOTTOMLEFT', w, h) | |
| 136 end | |
| 137 | |
| 138 k = k + 1 | |
| 139 end | |
| 140 end | |
| 141 end | |
| 142 | |
| 143 function mod:RosterScan() | |
| 144 local lim = 1 | |
| 145 if IsInRaid() then | |
| 146 lim = 40 | |
| 147 elseif IsInGroup() then | |
| 148 lim = 5 | |
| 149 end | |
| 150 | |
| 151 for i = 1, lim do | |
| 152 local name, rank, subgroup, level, class, fileName, zone, online, isDead, role, isML = GetRaidRosterInfo(i) | |
| 153 if name then | |
| 154 if string.find(name,'-') then | |
| 155 name, realm = string.match(name, "(.+)-(.+)") | |
| 156 else | |
| 157 realm = GetRealmName() | |
| 158 end | |
| 159 | |
| 160 print(i, name, class, role) | |
| 161 end | |
| 162 | |
| 163 end | |
| 164 | |
| 165 end |
