vanilla-wow-addons – Rev 1
?pathlinks?
tinsert(UISpecialFrames, "CT_UnitFramesOptionsFrame"); -- So we can close it with escape
CT_UnitFramesOptions = {
["styles"] = {
[1] = { -- Box
{ 1, 1, 1, 1, 1}, -- Selections
{ 1, 1, 1, 1, 1},
{ 1, 1, 1, 1, 1},
{ 1, 1, 1, 1, 1},
},
[2] = { -- Box
{ 1, 1, 1, 1, 1}, -- Selections
{ 1, 1, 1, 1, 1},
{ 1, 1, 1, 1, 1},
{ 1, 1, 1, 1, 1},
},
[3] = { -- Box
{ 1, 1, 1, 1, 1}, -- Selections
{ 1, 1, 1, 1, 1},
},
[4] = { -- Box
{ 1, 1, 1, 1, 1}, -- Selections
{ 1, 1, 1, 1, 1},
}
},
};
CT_UnitFramesOptions_NumSelections = {
4, 4, 2, 2
};
-- OnLoad handlers
function CT_UnitFramesOptions_Radio_OnLoad()
getglobal(this:GetName() .. "Name"):SetText(CT_UFO_RADIO[this:GetID()]);
end
function CT_UnitFramesOptions_Selection_OnLoad()
if ( CT_UnitFramesOptions_NumSelections[this:GetParent():GetID()] == 2 ) then
getglobal(this:GetName() .. "Name"):SetText(CT_UFO_SELECTION[this:GetID()+(1-mod(this:GetID(), 2))]);
else
getglobal(this:GetName() .. "Name"):SetText(CT_UFO_SELECTION[this:GetID()]);
end
end
function CT_UnitFramesOptions_Box_OnLoad()
getglobal(this:GetName() .. "Name"):SetText(CT_UFO_BOX[this:GetID()]);
if ( this:GetID() == 3 ) then
getglobal(this:GetName() .. "ClassFrameCBName"):SetText(CT_UFO_TARGETCLASS);
end
end
-- OnClick handlers
function CT_UnitFramesOptions_Radio_OnClick()
local radioId, selectionId, boxId = this:GetID(), this:GetParent():GetID(), this:GetParent():GetParent():GetID();
CT_UnitFramesOptions.styles[boxId][selectionId][1] = radioId;
CT_UnitFramesOptions_Radio_Update();
end
-- Function to update the frame
function CT_UnitFramesOptions_Radio_Update()
for box = 1, 4, 1 do
for selection = 1, CT_UnitFramesOptions_NumSelections[box], 1 do
for radio = 1, 4, 1 do
getglobal("CT_UnitFramesOptionsFrameBox" .. box .. "Selection" .. selection .. "Radio" .. radio):Enable();
getglobal("CT_UnitFramesOptionsFrameBox" .. box .. "Selection" .. selection .. "Radio" .. radio .. "Name"):SetTextColor(0.7, 0.7, 0.7, 1.0);
getglobal("CT_UnitFramesOptionsFrameBox" .. box .. "Selection" .. selection .. "Radio" .. radio):SetChecked(false);
local color = CT_UnitFramesOptions.styles[box][selection];
getglobal("CT_UnitFramesOptionsFrameBox" .. box .. "Selection" .. selection .. "ColorSwatchNormalTexture"):SetVertexColor(color[2], color[3], color[4]);
end
end
end
for boxId, box in CT_UnitFramesOptions.styles do
for selectionId, selection in box do
if ( CT_UnitFramesOptions_NumSelections[boxId] > 2 ) then
for radioId = 1, CT_UnitFramesOptions_NumSelections[boxId], 1 do
if ( selection[1] > 1 ) then
local minBound = 1;
if ( selectionId > 2 ) then
minBound = 3;
end
for i = minBound, (minBound+1), 1 do
getglobal("CT_UnitFramesOptionsFrameBox" .. boxId .. "Selection" .. i .. "Radio" .. selection[1]):Disable();
getglobal("CT_UnitFramesOptionsFrameBox" .. boxId .. "Selection" .. i .. "Radio" .. selection[1] .. "Name"):SetTextColor(0.3, 0.3, 0.3, 1.0);
end
end
end
end
getglobal("CT_UnitFramesOptionsFrameBox" .. boxId .. "Selection" .. selectionId .. "Radio" .. selection[1]):SetChecked(true);
getglobal("CT_UnitFramesOptionsFrameBox" .. boxId .. "Selection" .. selectionId .. "Radio" .. selection[1] .. "Name"):SetTextColor(1.0, 1.0, 1.0, 1.0);
end
end
getglobal("CT_UnitFramesOptionsFrameBox3ClassFrameCB"):SetChecked(CT_UnitFramesOptions.displayTargetClass);
getglobal("CT_UnitFramesOptionsFrameBox4DisplayCB"):SetChecked(CT_UnitFramesOptions.shallDisplayAssist);
if ( CT_UnitFramesOptions.displayTargetClass ) then
CT_TargetFrameClassFrame:Show();
else
CT_TargetFrameClassFrame:Hide();
end
-- Call the functions to update player/target/target of target/party
CT_ShowPlayerHealth();
CT_ShowPlayerMana();
CT_ShowTargetHealth();
CT_ShowTargetMana();
CT_ShowAssistHealth();
CT_ShowAssistMana();
CT_PlayerFrame_UpdateSBT();
for i = 1, 5, 1 do
CT_PartyFrame_UpdateMember("party" .. i, 1);
CT_PartyFrame_UpdateMember("party" .. i, nil);
end
end
-- Color swatch functions
function CT_UnitFrameOptions_ColorSwatch_ShowColorPicker(frame)
local selectionId, boxId = this:GetParent():GetID(), this:GetParent():GetParent():GetID();
frame.r = CT_UnitFramesOptions.styles[boxId][selectionId][2];
frame.g = CT_UnitFramesOptions.styles[boxId][selectionId][3];
frame.b = CT_UnitFramesOptions.styles[boxId][selectionId][4];
frame.opacity = CT_UnitFramesOptions.styles[boxId][selectionId][5];
frame.boxId = boxId;
frame.selectionId = selectionId;
frame.opacityFunc = CT_UnitFrameOptions_ColorSwatch_SetOpacity;
frame.swatchFunc = CT_UnitFrameOptions_ColorSwatch_SetColor;
frame.cancelFunc = CT_UnitFrameOptions_ColorSwatch_CancelColor;
frame.hasOpacity = 1;
UIDropDownMenuButton_OpenColorPicker(frame);
end
function CT_UnitFrameOptions_ColorSwatch_SetColor()
local r, g, b = ColorPickerFrame:GetColorRGB();
local boxId, selectionId = CT_UnitFramesOptionsFrame.boxId, CT_UnitFramesOptionsFrame.selectionId;
CT_UnitFramesOptions.styles[boxId][selectionId][2] = r;
CT_UnitFramesOptions.styles[boxId][selectionId][3] = g;
CT_UnitFramesOptions.styles[boxId][selectionId][4] = b;
CT_UnitFramesOptions_Radio_Update();
end
function CT_UnitFrameOptions_ColorSwatch_CancelColor()
local boxId, selectionId = CT_UnitFramesOptionsFrame.boxId, CT_UnitFramesOptionsFrame.selectionId;
CT_UnitFramesOptions.styles[boxId][selectionId][2] = CT_UnitFramesOptionsFrame.r;
CT_UnitFramesOptions.styles[boxId][selectionId][3] = CT_UnitFramesOptionsFrame.g;
CT_UnitFramesOptions.styles[boxId][selectionId][4] = CT_UnitFramesOptionsFrame.b;
CT_UnitFramesOptions.styles[boxId][selectionId][5] = CT_UnitFramesOptionsFrame.opacity;
CT_UnitFramesOptions_Radio_Update();
end
function CT_UnitFrameOptions_ColorSwatch_SetOpacity()
local a = OpacitySliderFrame:GetValue();
local boxId, selectionId = CT_UnitFramesOptionsFrame.boxId, CT_UnitFramesOptionsFrame.selectionId;
CT_UnitFramesOptions.styles[boxId][selectionId][5] = a;
CT_UnitFramesOptions_Radio_Update();
end
-- Checkboxes
function CT_UnitFramesOptions_Box_CB_OnClick()
if ( this:GetParent():GetID() == 3 ) then
CT_UnitFramesOptions.displayTargetClass = this:GetChecked();
else
CT_UnitFramesOptions.shallDisplayAssist = this:GetChecked();
end
CT_UnitFramesOptions_Radio_Update();
end
-- Slash command
SlashCmdList["UNITFRAMESOPTIONS"] = function()
if ( CT_UnitFramesOptionsFrame:IsVisible() ) then
HideUIPanel(CT_UnitFramesOptionsFrame);
else
ShowUIPanel(CT_UnitFramesOptionsFrame);
end
end
SLASH_UNITFRAMESOPTIONS1 = "/unitframes";
SLASH_UNITFRAMESOPTIONS2 = "/uf";
if ( CT_RegisterMod ) then
CT_RegisterMod(CT_UFO_MODNAME, CT_UFO_SUBNAME, 4, "Interface\\Icons\\Spell_Ice_Lament", CT_UFO_TOOLTIP, "switch", "", function() if ( CT_UnitFramesOptionsFrame:IsVisible() ) then HideUIPanel(CT_UnitFramesOptionsFrame) else ShowUIPanel(CT_UnitFramesOptionsFrame) end end);
else
DEFAULT_CHAT_FRAME:AddMessage("<CTMod> CT_UnitFrames loaded. Type |c00FFFFFF/uf|r to show the options dialog.", 1, 1, 0);
end
Generated by GNU Enscript 1.6.5.90.