diff --git a/Libs/DF/externals.lua b/Libs/DF/externals.lua new file mode 100644 index 00000000..4d419f35 --- /dev/null +++ b/Libs/DF/externals.lua @@ -0,0 +1,116 @@ +local detailsFramework = _G ["DetailsFramework"] +if (not detailsFramework) then + return +end + +local IS_WOW_PROJECT_MAINLINE = WOW_PROJECT_ID == WOW_PROJECT_MAINLINE +local IS_WOW_PROJECT_NOT_MAINLINE = WOW_PROJECT_ID ~= WOW_PROJECT_MAINLINE +local IS_WOW_PROJECT_CLASSIC_ERA = WOW_PROJECT_ID == WOW_PROJECT_CLASSIC + +detailsFramework.CastInfo = detailsFramework.CastInfo or {} + +--NOTE: This NEEDs a chance to run, as Plater is depending on this working and LibCC is not bundled neccessarily in other addons. +-- for classic era use LibClassicCasterino: + +--in vanilla wow, other addons might load the framework before an addon with libCasterino loads +--check here if libCasterino is loaded, if is, check if the framework is already using libCasterino, if not, make it use +function detailsFramework:LoadLCC(LibCC) + local fCast = CreateFrame("frame") + + local getCastBar = function(unitId) + local plateFrame = C_NamePlate.GetNamePlateForUnit (unitId) + if (not plateFrame) then + return + end + + local castBar = plateFrame.unitFrame and plateFrame.unitFrame.castBar + if (not castBar) then + return + end + + return castBar + end + + local triggerCastEvent = function(castBar, event, unitId, ...) + if (castBar and castBar.OnEvent) then + return castBar.OnEvent (castBar, event, unitId) + end + end + + local funcCast = function(event, unitId, ...) + local castBar = getCastBar (unitId) + if (castBar) then + return triggerCastEvent (castBar, event, unitId) + end + end + + fCast.UNIT_SPELLCAST_START = function(self, event, unitId, ...) + return triggerCastEvent (getCastBar (unitId), event, unitId) + end + + fCast.UNIT_SPELLCAST_STOP = function(self, event, unitId, ...) + return triggerCastEvent (getCastBar (unitId), event, unitId) + end + + fCast.UNIT_SPELLCAST_DELAYED = function(self, event, unitId, ...) + return triggerCastEvent (getCastBar (unitId), event, unitId) + end + + fCast.UNIT_SPELLCAST_FAILED = function(self, event, unitId, ...) + return triggerCastEvent (getCastBar (unitId), event, unitId) + end + + fCast.UNIT_SPELLCAST_INTERRUPTED = function(self, event, unitId, ...) + return triggerCastEvent (getCastBar (unitId), event, unitId) + end + + fCast.UNIT_SPELLCAST_CHANNEL_START = function(self, event, unitId, ...) + return triggerCastEvent (getCastBar (unitId), event, unitId) + end + + fCast.UNIT_SPELLCAST_CHANNEL_UPDATE = function(self, event, unitId, ...) + return triggerCastEvent (getCastBar (unitId), event, unitId) + end + + fCast.UNIT_SPELLCAST_CHANNEL_STOP = function(self, event, unitId, ...) + return triggerCastEvent (getCastBar (unitId), event, unitId) + end + + LibCC.RegisterCallback(fCast,"UNIT_SPELLCAST_START", funcCast) + LibCC.RegisterCallback(fCast,"UNIT_SPELLCAST_DELAYED", funcCast) -- only for player + LibCC.RegisterCallback(fCast,"UNIT_SPELLCAST_STOP", funcCast) + LibCC.RegisterCallback(fCast,"UNIT_SPELLCAST_FAILED", funcCast) + LibCC.RegisterCallback(fCast,"UNIT_SPELLCAST_INTERRUPTED", funcCast) + LibCC.RegisterCallback(fCast,"UNIT_SPELLCAST_CHANNEL_START", funcCast) + LibCC.RegisterCallback(fCast,"UNIT_SPELLCAST_CHANNEL_UPDATE", funcCast) -- only for player + LibCC.RegisterCallback(fCast,"UNIT_SPELLCAST_CHANNEL_STOP", funcCast) + + detailsFramework.CastInfo.UnitCastingInfo = function(unit) + return LibCC:UnitCastingInfo (unit) + end + + detailsFramework.CastInfo.UnitChannelInfo = function(unit) + return LibCC:UnitChannelInfo (unit) + end +end + +if IS_WOW_PROJECT_CLASSIC_ERA then + local LibCC = LibStub("LibClassicCasterino", true) + if (LibCC and not _G.DetailsFrameworkLCCLoaded) then + detailsFramework:LoadLCC(LibCC) + _G.DetailsFrameworkLCCLoaded = true + + elseif not LibCC then + detailsFramework.CastInfo.UnitCastingInfo = CastingInfo + detailsFramework.CastInfo.UnitChannelInfo = ChannelInfo + end +else -- end classic era + + detailsFramework.CastInfo.UnitCastingInfo = UnitCastingInfo + detailsFramework.CastInfo.UnitChannelInfo = UnitChannelInfo +end + + +if (not DetailsFrameworkCanLoad) then + return +end \ No newline at end of file diff --git a/Libs/DF/fw.lua b/Libs/DF/fw.lua index bf2b5cca..e53d9f46 100644 --- a/Libs/DF/fw.lua +++ b/Libs/DF/fw.lua @@ -1,6 +1,6 @@ -local dversion = 426 +local dversion = 427 local major, minor = "DetailsFramework-1.0", dversion local DF, oldminor = LibStub:NewLibrary(major, minor) @@ -4215,6 +4215,12 @@ function DF:ReskinSlider(slider, heightOffset) --up button local offset = 1 --space between the scrollbox and the scrollar + local backgroundColor_Red = 0.1 + local backgroundColor_Green = 0.1 + local backgroundColor_Blue = 0.1 + local backgroundColor_Alpha = 1 + local backdrop_Alpha = 0.3 + do local normalTexture = slider.ScrollBar.ScrollUpButton.Normal normalTexture:SetTexture([[Interface\Buttons\Arrow-Up-Up]]) @@ -4239,6 +4245,21 @@ function DF:ReskinSlider(slider, heightOffset) disabledTexture:SetPoint("bottomright", slider.ScrollBar.ScrollUpButton, "bottomright", offset, 0) slider.ScrollBar.ScrollUpButton:SetSize(16, 16) + + if (not slider.ScrollBar.ScrollUpButton.BackgroundTexture) then + local backgroundTexture = slider.ScrollBar.ScrollUpButton:CreateTexture(nil, "border") + slider.ScrollBar.ScrollUpButton.BackgroundTexture = backgroundTexture + + backgroundTexture:SetColorTexture(backgroundColor_Red, backgroundColor_Green, backgroundColor_Blue) + backgroundTexture:SetAlpha(backgroundColor_Alpha) + + backgroundTexture:SetPoint("topleft", slider.ScrollBar.ScrollUpButton, "topleft", 1, 0) + backgroundTexture:SetPoint("bottomright", slider.ScrollBar.ScrollUpButton, "bottomright", -1, 0) + end + + DF:Mixin(slider.ScrollBar.ScrollUpButton, BackdropTemplateMixin) + slider.ScrollBar.ScrollUpButton:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1}) + slider.ScrollBar.ScrollUpButton:SetBackdropBorderColor(0, 0, 0, backdrop_Alpha) end --down button @@ -4266,6 +4287,21 @@ function DF:ReskinSlider(slider, heightOffset) disabledTexture:SetPoint("bottomright", slider.ScrollBar.ScrollDownButton, "bottomright", offset, -4) slider.ScrollBar.ScrollDownButton:SetSize(16, 16) + + if (not slider.ScrollBar.ScrollDownButton.BackgroundTexture) then + local backgroundTexture = slider.ScrollBar.ScrollDownButton:CreateTexture(nil, "border") + slider.ScrollBar.ScrollDownButton.BackgroundTexture = backgroundTexture + + backgroundTexture:SetColorTexture(backgroundColor_Red, backgroundColor_Green, backgroundColor_Blue) + backgroundTexture:SetAlpha(backgroundColor_Alpha) + + backgroundTexture:SetPoint("topleft", slider.ScrollBar.ScrollDownButton, "topleft", 1, 0) + backgroundTexture:SetPoint("bottomright", slider.ScrollBar.ScrollDownButton, "bottomright", -1, 0) + end + + DF:Mixin(slider.ScrollBar.ScrollDownButton, BackdropTemplateMixin) + slider.ScrollBar.ScrollDownButton:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1}) + slider.ScrollBar.ScrollDownButton:SetBackdropBorderColor(0, 0, 0, backdrop_Alpha) end --if the parent has a editbox, this is a code editor @@ -4279,7 +4315,21 @@ function DF:ReskinSlider(slider, heightOffset) end slider.ScrollBar.ThumbTexture:SetColorTexture(.5, .5, .5, .3) - slider.ScrollBar.ThumbTexture:SetSize(12, 8) + slider.ScrollBar.ThumbTexture:SetSize(14, 8) + + if (not slider.ScrollBar.SliderTexture) then + local alpha = 1 + local offset = 1 + slider.ScrollBar.SliderTexture = slider.ScrollBar:CreateTexture(nil, "background") + slider.ScrollBar.SliderTexture:SetColorTexture(backgroundColor_Red, backgroundColor_Green, backgroundColor_Blue) + slider.ScrollBar.SliderTexture:SetAlpha(backgroundColor_Alpha) + slider.ScrollBar.SliderTexture:SetPoint("TOPLEFT", slider.ScrollBar, "TOPLEFT", offset, -2) + slider.ScrollBar.SliderTexture:SetPoint("BOTTOMRIGHT", slider.ScrollBar, "BOTTOMRIGHT", -offset, 2) + end + + DF:Mixin(slider.ScrollBar, BackdropTemplateMixin) + slider.ScrollBar:SetBackdrop({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1}) + slider.ScrollBar:SetBackdropBorderColor(0, 0, 0, backdrop_Alpha) end end diff --git a/Libs/DF/load.xml b/Libs/DF/load.xml index fa46ad83..84a6d3ee 100644 --- a/Libs/DF/load.xml +++ b/Libs/DF/load.xml @@ -21,6 +21,7 @@