local _,ns = ...; local config = CreateFrame("Frame"); ns.config = config; local currentcolor; local function changedCallback(restore) local newR, newG, newB, newA; if restore then newR, newG, newB, newA = unpack(restore); else newA, newR, newG, newB = OpacitySliderFrame:GetValue(), ColorPickerFrame:GetColorRGB(); end r, g, b, a = newR, newG, newB, newA; currentcolor.colorSwatch:SetVertexColor(r,g,b,a); ns.colors[currentcolor.id] = {r,g,b,a}; config:ChangeColors(); end function config:ChangeColors() ns.frame.texture:SetTexture(unpack(ns.colors[1])); ns.frame.healtext:SetTextColor(unpack(ns.colors[2])); ns.frame.countdown:SetTextColor(unpack(ns.colors[4])); ns.frame.healtext2:SetTextColor(unpack(ns.colors[3])); end function config:ConfigColor_OnClick() currentcolor = self; local r,g,b,a = unpack(ns.colors[self.id]); ColorPickerFrame:SetColorRGB(r,g,b,a); ColorPickerFrame.hasOpacity, ColorPickerFrame.opacity = (a ~= nil), a; ColorPickerFrame.previousValues = {r,g,b,a}; ColorPickerFrame.func, ColorPickerFrame.opacityFunc, ColorPickerFrame.cancelFunc = changedCallback, changedCallback, changedCallback; ColorPickerFrame:Hide(); ColorPickerFrame:Show(); end function config:ChangeState() ns.debugmode = self:GetChecked() BloodShieldHelper_S.debugmode = ns.debugmode; end function config:Init() ns.colors = BloodShieldHelper_S.colors; config.name = "Blood Shield Helper"; local ConfigColor1 = CreateFrame( "Button", nil, config ); config.ConfigColor1 = ConfigColor1; config.ConfigColor1.id = 1; ConfigColor1:SetHeight(40); ConfigColor1:SetWidth(40); ConfigColor1:SetScript("OnClick", config.ConfigColor_OnClick) ConfigColor1:SetPoint( "TOPLEFT", 16, -16 ); ConfigColor1.colorSwatch = ConfigColor1:CreateTexture(nil, "OVERLAY") ConfigColor1.colorSwatch:SetWidth(19) ConfigColor1.colorSwatch:SetHeight(19) ConfigColor1.colorSwatch:SetTexture("Interface\\ChatFrame\\ChatFrameColorSwatch") ConfigColor1.colorSwatch:SetPoint("LEFT") ConfigColor1.colorSwatch:SetVertexColor(unpack(ns.colors[1])); ConfigColor1.texture = ConfigColor1:CreateTexture(nil, "BACKGROUND") ConfigColor1.texture:SetWidth(16) ConfigColor1.texture:SetHeight(16) ConfigColor1.texture:SetTexture(1, 1, 1) ConfigColor1.texture:SetPoint("CENTER", ConfigColor1.colorSwatch) ConfigColor1.texture:Show() ConfigColor1.label = ConfigColor1:CreateFontString( nil, "ARTWORK", "GameFontHighlightSmall" ); ConfigColor1.label:SetText( " |c00dfb802 Background color" ); ConfigColor1.label:SetPoint( "LEFT" , ConfigColor1,15,0); ConfigColor1.label:Show(); local ConfigColor2 = CreateFrame( "Button", nil, config ); config.ConfigColor2 = ConfigColor2; config.ConfigColor2.id = 2; ConfigColor2:SetHeight(40); ConfigColor2:SetWidth(40); ConfigColor2:SetScript("OnClick", config.ConfigColor_OnClick) ConfigColor2:SetPoint( "BOTTOMLEFT", ConfigColor1, 0, -25 ); ConfigColor2.colorSwatch = ConfigColor2:CreateTexture(nil, "OVERLAY") ConfigColor2.colorSwatch:SetWidth(19) ConfigColor2.colorSwatch:SetHeight(19) ConfigColor2.colorSwatch:SetTexture("Interface\\ChatFrame\\ChatFrameColorSwatch") ConfigColor2.colorSwatch:SetPoint("LEFT") ConfigColor2.colorSwatch:SetVertexColor(unpack(ns.colors[2])); ConfigColor2.texture = ConfigColor2:CreateTexture(nil, "BACKGROUND") ConfigColor2.texture:SetWidth(16) ConfigColor2.texture:SetHeight(16) ConfigColor2.texture:SetTexture(1, 1, 1) ConfigColor2.texture:SetPoint("CENTER", ConfigColor2.colorSwatch) ConfigColor2.texture:Show() ConfigColor2.label = ConfigColor2:CreateFontString( nil, "ARTWORK", "GameFontHighlightSmall" ); ConfigColor2.label:SetPoint( "LEFT" , ConfigColor2,15,0); ConfigColor2.label:SetText( " |c00dfb802 Color if minium Blood Shield size" ); ConfigColor2.label:Show(); local ConfigColor3 = CreateFrame( "Button", nil, config ); config.ConfigColor3 = ConfigColor3; config.ConfigColor3.id = 3; ConfigColor3:SetHeight(40); ConfigColor3:SetWidth(40); ConfigColor3:SetScript("OnClick", config.ConfigColor_OnClick) ConfigColor3:SetPoint( "BOTTOMLEFT", ConfigColor2, 0, -25 ); ConfigColor3.colorSwatch = ConfigColor3:CreateTexture(nil, "OVERLAY") ConfigColor3.colorSwatch:SetWidth(19) ConfigColor3.colorSwatch:SetHeight(19) ConfigColor3.colorSwatch:SetTexture("Interface\\ChatFrame\\ChatFrameColorSwatch") ConfigColor3.colorSwatch:SetPoint("LEFT") ConfigColor3.colorSwatch:SetVertexColor(unpack(ns.colors[3])); ConfigColor3.texture = ConfigColor3:CreateTexture(nil, "BACKGROUND") ConfigColor3.texture:SetWidth(16) ConfigColor3.texture:SetHeight(16) ConfigColor3.texture:SetTexture(1, 1, 1) ConfigColor3.texture:SetPoint("CENTER", ConfigColor3.colorSwatch) ConfigColor3.texture:Show() ConfigColor3.label = ConfigColor3:CreateFontString( nil, "ARTWORK", "GameFontHighlightSmall" ); ConfigColor3.label:SetPoint( "LEFT" , ConfigColor3,15,0); ConfigColor3.label:SetText( " |c00dfb802 Color if greater than minimum Blood Shield size" ); ConfigColor3.label:Show(); local ConfigColor4 = CreateFrame( "Button", nil, config ); config.ConfigColor4 = ConfigColor4; config.ConfigColor4.id = 4; ConfigColor4:SetHeight(40); ConfigColor4:SetWidth(40); ConfigColor4:SetScript("OnClick", config.ConfigColor_OnClick) ConfigColor4:SetPoint( "BOTTOMLEFT", ConfigColor3, 0, -25 ); ConfigColor4.colorSwatch = ConfigColor4:CreateTexture(nil, "OVERLAY") ConfigColor4.colorSwatch:SetWidth(19) ConfigColor4.colorSwatch:SetHeight(19) ConfigColor4.colorSwatch:SetTexture("Interface\\ChatFrame\\ChatFrameColorSwatch") ConfigColor4.colorSwatch:SetPoint("LEFT") ConfigColor4.colorSwatch:SetVertexColor(unpack(ns.colors[4])); --print(unpack(ns.colors[4])); ConfigColor4.texture = ConfigColor4:CreateTexture(nil, "BACKGROUND") ConfigColor4.texture:SetWidth(16) ConfigColor4.texture:SetHeight(16) ConfigColor4.texture:SetTexture(1, 1, 1) ConfigColor4.texture:SetPoint("CENTER", ConfigColor4.colorSwatch) ConfigColor4.texture:Show() ConfigColor4.label = ConfigColor4:CreateFontString( nil, "ARTWORK", "GameFontHighlightSmall" ); ConfigColor4.label:SetPoint( "LEFT" , ConfigColor4,15,0); ConfigColor4.label:SetText( " |c00dfb802 Timer color" ); ConfigColor4.label:Show(); local DebugMode = CreateFrame( "CheckButton", nil, config, "InterfaceOptionsCheckButtonTemplate" ); config.DebugMode = DebugMode; DebugMode.id = "DebugMode"; DebugMode:SetPoint( "TOPLEFT", ConfigColor4,"BOTTOMLEFT" ,0, -16 ); DebugMode:SetScript("onClick",config.ChangeState); DebugMode.Text:SetText( "Debug mode (printing out the real Blood Shield size after using Death Strike)" ); if(BloodShieldHelper_S.debugmode) then DebugMode:SetChecked(1); ns.debugmode = 1; end InterfaceOptions_AddCategory(config); end