vanilla-wow-addons – Rev 1
?pathlinks?
function GB_Bar_OnEvent(event)
if (not GB_INITIALIZED) then return; end
local hidden = GB_Settings[GB_INDEX][this.index].hide;
if (not hidden) then
hidden = GB_Settings[GB_INDEX][this.index].mouseover;
end
if (event == "PARTY_MEMBERS_CHANGED") then
local numParty = GetNumPartyMembers();
if (this.index == "lowesthealth") then
if (numParty > 0) then
this.noshow = false;
if (not hidden) then this:Show(); end
else
this.noshow = true;
this:Hide();
end
elseif (not hidden) then
local partyBar, petBar;
for i=1,4 do
partyBar = getglobal(GB_Get_UnitBar("party"..i));
petBar = getglobal(GB_Get_UnitBar("partypet"..i));
partyBar.noshow = true;
petBar.noshow = true;
partyBar:Hide();
petBar:Hide();
end
if (GB_Settings[GB_INDEX].hideInRaid and GetNumRaidMembers() > 0) then
return;
end
for i=1,numParty do
partyBar = getglobal(GB_Get_UnitBar("party"..i));
partyBar.noshow = false;
partyBar:Show();
if (UnitName("partypet"..i) and UnitExists("partypet"..i) and (not GB_Settings[GB_INDEX].partypet.hide)) then
petBar = getglobal(GB_Get_UnitBar("partypet"..i));
petBar.noshow = false;
petBar:Show();
end
end
end
elseif (event == "PLAYER_TARGET_CHANGED") then
this.noshow = true;
if (UnitName("target")) then
if (UnitCanAttack("player", "target")) then
if (this.index == "hostiletarget" and UnitHealth("target") > 0) then
this.noshow = false
end
else
if (UnitIsPlayer("target") and UnitFactionGroup("target") ~= UnitFactionGroup("player")) then
if (this.index == "hostiletarget" and UnitHealth("target") > 0) then
this.noshow = false;
end
else
if (this.index == "friendlytarget") then
this.noshow = false;
end
end
end
end
if (this.noshow) then
this:Hide();
else
if (not hidden) then this:Show(); end
end
elseif (event == "RAID_ROSTER_UPDATE") then
this.noshow = true;
if (UnitExists(this.unit) and GB_RAID_MEMBERS[UnitName(this.unit)]) then
this.noshow = false;
end
if (this.noshow) then
this:Hide();
else
if (not hidden) then this:Show(); end
end
elseif (event == "UNIT_PET") then
if (GB_Settings[GB_INDEX].hideInRaid and GetNumRaidMembers() > 0) then
hidden = true;
end
this.noshow = true;
if (UnitExists(this.unit)) then
this.noshow = false;
end
if (this.noshow) then
this:Hide();
else
if (not hidden) then this:Show(); end
end
end
end
function GB_Bar_OnUpdate()
if (this.index == "friendlytarget" and GB_INITIALIZED) then
if (UnitCanAttack("player", "target")) then
this.noshow = true;
this:Hide();
if (not GB_Settings[GB_INDEX]["hostiletarget"].hide) then
GB_HostileTargetBar.noshow = false;
GB_HostileTargetBar:Show();
end
end
end
if (this.timer) then
this.timer = this.timer - arg1;
if (this.timer < 0) then
this.timer = nil;
this:Hide();
end
end
end
function GB_Bars_Raise()
for index in GB_UNITS_ARRAY do
for _, unitBar in GB_UNITS_ARRAY[index].frames do
getglobal(unitBar):Raise();
end
end
end
function GB_Initialize_AllBars()
for index in GB_UNITS_ARRAY do
if (index ~= "lowesthealth") then
for _, unitBar in GB_UNITS_ARRAY[index].frames do
GB_Update_Auras(getglobal(unitBar).unit);
end
end
for i=1, GB_UNITS_ARRAY[index].buttons do
GB_ActionButton_Initialize(index, i);
end
GB_Set_Appearance(index);
end
end
function GB_Labels_Hide()
for unit, value in GB_UNITS_ARRAY do
for index in value.frames do
getglobal(value.frames[index].."_Label"):Hide();
end
end
end
function GB_Labels_Show()
for unit, value in GB_UNITS_ARRAY do
for index in value.frames do
getglobal(value.frames[index].."_Label"):Show();
end
end
end
function GB_Set_Appearance(bar)
local settings = GB_Get(bar);
for _, unitBar in GB_UNITS_ARRAY[bar].frames do
getglobal(unitBar):SetAlpha(settings.alpha);
if (settings.hide or getglobal(unitBar).noshow or settings.mouseover) then
getglobal(unitBar):Hide();
elseif (GB_Settings[GB_INDEX].hideInRaid and GetNumRaidMembers() > 0 and string.find(bar, "party")) then
getglobal(unitBar):Hide();
else
getglobal(unitBar):Show();
end
if (settings.attach and bar ~= "lowesthealth") then
getglobal(unitBar):ClearAllPoints();
if (unitBar == "GB_PetBar0") then
local unitFrame = GB_UNITFRAMES.pet.frames[1];
getglobal(unitBar):SetPoint(settings.attachPoint, unitFrame, settings.attachTo, settings.xoffset, settings.yoffset);
elseif (bar == "raid") then
if (CT_RAMember1) then
local unitFrame = "CT_RAMember"..getglobal(unitBar):GetID();
getglobal(unitBar):SetPoint(settings.attachPoint, unitFrame, settings.attachTo, settings.xoffset, settings.yoffset);
elseif (beyondRaidGroup1) then
GB_SHUFFLE_RAID = true;
local found;
for i=1, 8 do
for j = 1, 5 do
local raidframe = "beyondRaidGroup"..i.."Member"..j;
if (getglobal(raidframe).unitID == "raid"..getglobal(unitBar):GetID()) then
found = true;
getglobal(raidframe):RegisterForClicks("LeftButtonUp", "RightButtonUp", "MiddleButtonUp", "Button4Up", "Button5Up");
getglobal(unitBar):SetPoint(settings.attachPoint, raidframe, settings.attachTo, settings.xoffset, settings.yoffset);
break;
end
end
end
if (not found) then
getglobal(unitBar):SetPoint(settings.attachPoint, "beyondRaidGroup1Member1", settings.attachTo, settings.xoffset, settings.yoffset);
end
elseif (MRConfigPanel) then
GB_SHUFFLE_RAID = true;
local found;
for i=1, 100 do
local raidframe = "MRF"..i;
if (getglobal(raidframe).unit == "raid"..getglobal(unitBar):GetID()) then
found = true;
getglobal(raidframe):RegisterForClicks("LeftButtonUp", "RightButtonUp", "MiddleButtonUp", "Button4Up", "Button5Up");
getglobal(unitBar):SetPoint(settings.attachPoint, raidframe, settings.attachTo, settings.xoffset, settings.yoffset);
break;
end
end
if (not found) then
getglobal(unitBar):SetPoint(settings.attachPoint, "MRF1", settings.attachTo, settings.xoffset, settings.yoffset);
end
else
GB_SHUFFLE_RAID = true;
if (RaidPullout1Button1) then
local found;
for i = 1, 12 do
for j = 1, 15 do
local raidframe = "RaidPullout"..i.."Button"..j;
if (getglobal(raidframe).unit == "raid"..getglobal(unitBar):GetID()) then
found = true;
getglobal(unitBar):SetPoint(settings.attachPoint, raidframe, settings.attachTo, settings.xoffset, settings.yoffset);
break;
end
end
end
if (not found) then
getglobal(unitBar):SetPoint(settings.attachPoint, "RaidPullout1Button1", settings.attachTo, settings.xoffset, settings.yoffset);
end
end
end
else
local id = getglobal(unitBar):GetID();
if (id == 0) then id = 1; end
local bar2 = bar;
if (string.find(bar, "target")) then bar2 = "target"; end
local unitFrame = GB_UNITFRAMES[bar2].frames[id];
getglobal(unitBar):SetPoint(settings.attachPoint, unitFrame, settings.attachTo, settings.xoffset, settings.yoffset);
end
end
local button, cooldown, modelscale, textscale;
for i=1, GB_UNITS_ARRAY[bar].buttons do
button = getglobal(unitBar.."_Button_"..i);
cooldown = getglobal(button:GetName().."_Cooldown");
if (GB_Settings[GB_INDEX].modifybyUIscale) then
modelscale = settings.buttonSize / 36 * UIParent:GetScale();
else
modelscale = settings.buttonSize / 36;
end
textscale = settings.buttonSize / 36;
getglobal(button:GetName().."TextFrame").textscale = textscale;
getglobal(button:GetName().."TextFrame"):SetScale(textscale);
button:SetHeight(settings.buttonSize);
button:SetWidth(settings.buttonSize);
cooldown:SetScale(modelscale);
cooldown.scale = modelscale;
end
if (GB_Options:IsVisible()) then
getglobal(unitBar):Show();
end
GB_Set_Layout(bar, unitBar, 1);
end
end
function GB_Set_Layout(bar, unitBar, override)
if (not GB_INITIALIZED) then return; end
local rows = GB_Settings[GB_INDEX][bar].rows;
local buttonSize = GB_Settings[GB_INDEX][bar].buttonSize;
local spacing = GB_Settings[GB_INDEX][bar].spacing;
local frameheight = rows * buttonSize;
local framewidth;
if (not override) then
if (rows == 1 and (not GB_Settings[GB_INDEX][bar].collapse)) then
framewidth = GB_UNITS_ARRAY[bar].buttons * buttonSize;
getglobal(unitBar):SetHeight(frameheight);
getglobal(unitBar):SetWidth(framewidth);
return;
end
end
local count = 0;
local row = 0;
local visiblecount = 0;
local highest = 0;
local prevrowstart = nil;
local newrow = math.ceil(GB_UNITS_ARRAY[bar].buttons / rows);
local resetrow = math.mod(GB_UNITS_ARRAY[bar].buttons, rows);
local lastbutton = unitBar;
for i=1, GB_UNITS_ARRAY[bar].buttons do
local button = getglobal(unitBar.."_Button_"..i);
button:ClearAllPoints();
if (count == newrow) then
local attachto = unitBar.."_Button_"..(i - count);
button:SetPoint("TOP", attachto, "BOTTOM", 0, -spacing);
if (button:IsVisible() or (not GB_Settings[GB_INDEX][bar].collapse)) then
lastbutton = button:GetName();
else
prevrowstart = attachto;
end
count = 0;
row = row + 1;
if (visiblecount > highest) then
highest = visiblecount;
end
visiblecount = 0;
if (button:IsVisible()) then
visiblecount = 1;
end
if (row == resetrow) then
newrow = newrow - 1;
end
else
if (lastbutton == unitBar) then
button:SetPoint("TOPLEFT", lastbutton, "TOPLEFT", 0, 0);
elseif (prevrowstart) then
button:SetPoint("TOP", prevrowstart, "BOTTOM", 0, -spacing);
if (button:IsVisible()) then
lastbutton = button:GetName();
prevrowstart = nil;
end
else
button:SetPoint("LEFT", lastbutton, "RIGHT", spacing, 0);
end
if (button:IsVisible() or (not GB_Settings[GB_INDEX][bar].collapse)) then
visiblecount = visiblecount + 1;
lastbutton = button:GetName();
end
end
count = count + 1;
end
if (highest == 0) then highest = visiblecount; end
framewidth = highest * buttonSize;
getglobal(unitBar):SetHeight(frameheight);
getglobal(unitBar):SetWidth(framewidth);
end
Generated by GNU Enscript 1.6.5.90.