From 5c50e060b0fb1206d03dc7798c7dcc19a7725591 Mon Sep 17 00:00:00 2001 From: Sattva <74269253+Sattva-108@users.noreply.github.com> Date: Mon, 24 Mar 2025 07:29:37 +0300 Subject: [PATCH 1/5] Trying to fix the vehicle UI breaking PlayerFrame --- Leatrix_Plus.lua | 22 ++++++++++++++++++++++ Leatrix_Plus_Locale.lua | 4 ++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/Leatrix_Plus.lua b/Leatrix_Plus.lua index ca430c5..b5ecd36 100644 --- a/Leatrix_Plus.lua +++ b/Leatrix_Plus.lua @@ -12213,6 +12213,28 @@ end _G.TargetFrame_SetLocked = function() end + -- **Modify PlayerFrame_AnimateOut to be visually static but still trigger updates** + local original_PlayerFrame_AnimateOut = _G.PlayerFrame_AnimateOut + _G.PlayerFrame_AnimateOut = function(self) + print("PlayerFrame_AnimateOut modified to be static by Leatrix Plus") -- Optional debug print + -- Define a static animation position function (always returns current position) + local function StaticAnimPos(self, fraction) + local point, parent, relative, xoff, yoff = PlayerFrame:GetPoint() + return point, parent, relative, xoff, yoff -- Always return current position + end + + -- Create a modified animation table using the original, but with static position + local StaticPlayerFrameAnimTable = { + totalTime = PlayerFrameAnimTable.totalTime, -- Use original duration + updateFunc = PlayerFrameAnimTable.updateFunc, -- Use original update function + getPosFunc = StaticAnimPos, -- Use our STATIC position function + } + + self.inSeat = false; + self.animFinished = false; + self.inSequence = true; + SetUpAnimation(PlayerFrame, StaticPlayerFrameAnimTable, PlayerFrame_AnimFinished, false) -- Use STATIC animation table + end -- Create frame table (used for local traversal) local FrameTable = { DragPlayerFrame = PlayerFrame, DragTargetFrame = TargetFrame } diff --git a/Leatrix_Plus_Locale.lua b/Leatrix_Plus_Locale.lua index a819ed6..6b76556 100644 --- a/Leatrix_Plus_Locale.lua +++ b/Leatrix_Plus_Locale.lua @@ -1962,8 +1962,8 @@ L["Hide the combat log"] = "Скрыть журнал боя" L["Hide the health bar"] = "Скрыть полосу здоровья" L["Hide the tracking button"] = "Скрыть кнопку отслеживания" L["Hide the world map button"] = "Скрыть кнопку мировой карты" -L["Hide the zone text bar"] = "Скрыть текстовую панель с названием зоны" -L["Hide the zoom buttons"] = "Скрыть кнопки масштабирования" +L["Hide the zone text bar"] = "Скрыть название зоны" +L["Hide the zoom buttons"] = "Скрыть кнопки масштаба" L["Hide tooltips for world units during combat"] = "Скрыть подсказки для мировых боссов во время боя" L["Hide zone text"] = "Скрыть название зоны" L["High"] = "Высокая" From 2700cd6a9498ae5e8fb1255c8235386d19299f0c Mon Sep 17 00:00:00 2001 From: Sattva <74269253+Sattva-108@users.noreply.github.com> Date: Mon, 24 Mar 2025 07:45:58 +0300 Subject: [PATCH 2/5] version 2 --- Leatrix_Plus.lua | 53 ++++++++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 20 deletions(-) diff --git a/Leatrix_Plus.lua b/Leatrix_Plus.lua index b5ecd36..bee2a2e 100644 --- a/Leatrix_Plus.lua +++ b/Leatrix_Plus.lua @@ -12213,29 +12213,42 @@ end _G.TargetFrame_SetLocked = function() end - -- **Modify PlayerFrame_AnimateOut to be visually static but still trigger updates** - local original_PlayerFrame_AnimateOut = _G.PlayerFrame_AnimateOut - _G.PlayerFrame_AnimateOut = function(self) - print("PlayerFrame_AnimateOut modified to be static by Leatrix Plus") -- Optional debug print - -- Define a static animation position function (always returns current position) - local function StaticAnimPos(self, fraction) - local point, parent, relative, xoff, yoff = PlayerFrame:GetPoint() - return point, parent, relative, xoff, yoff -- Always return current position + + -- Prevent Blizzard from resetting the PlayerFrame position + _G.PlayerFrame_ResetUserPlacedPosition = function() end + _G.PlayerFrame_SetLocked = function() end + + -- Function to restore the PlayerFrame position + local function RestorePlayerFramePosition() + local vf = PlayerFrame:GetName() + if LeaPlusDB["Frames"] and LeaPlusDB["Frames"][vf] then + local db = LeaPlusDB["Frames"][vf] + if db["Point"] and db["Relative"] and db["XOffset"] and db["YOffset"] then + PlayerFrame:ClearAllPoints() + PlayerFrame:SetPoint(db["Point"], UIParent, db["Relative"], db["XOffset"], db["YOffset"]) + end end - - -- Create a modified animation table using the original, but with static position - local StaticPlayerFrameAnimTable = { - totalTime = PlayerFrameAnimTable.totalTime, -- Use original duration - updateFunc = PlayerFrameAnimTable.updateFunc, -- Use original update function - getPosFunc = StaticAnimPos, -- Use our STATIC position function - } - - self.inSeat = false; - self.animFinished = false; - self.inSequence = true; - SetUpAnimation(PlayerFrame, StaticPlayerFrameAnimTable, PlayerFrame_AnimFinished, false) -- Use STATIC animation table end + -- Event handler function + local function LeaPlus_VehicleFix(self, event, unit) + if event == "PLAYER_ENTERING_WORLD" then + -- Delay 1.5s for entering world + LibCompat.After(1.5, RestorePlayerFramePosition) + elseif unit == "player" then + -- Delay 0.3s for vehicle events + LibCompat.After(0.3, RestorePlayerFramePosition) + end + end + + -- Create a frame to listen for events + local LeaPlusVehicleFrame = CreateFrame("Frame") + LeaPlusVehicleFrame:RegisterEvent("PLAYER_ENTERING_WORLD") + LeaPlusVehicleFrame:RegisterEvent("UNIT_ENTERED_VEHICLE") + LeaPlusVehicleFrame:RegisterEvent("UNIT_EXITED_VEHICLE") + LeaPlusVehicleFrame:SetScript("OnEvent", LeaPlus_VehicleFix) + + -- Create frame table (used for local traversal) local FrameTable = { DragPlayerFrame = PlayerFrame, DragTargetFrame = TargetFrame } From 01e3dfb062235f1f733db18170c0cf58ce78945a Mon Sep 17 00:00:00 2001 From: Sattva <74269253+Sattva-108@users.noreply.github.com> Date: Mon, 24 Mar 2025 08:11:55 +0300 Subject: [PATCH 3/5] v 3 - works??? miracle --- Leatrix_Plus.lua | 95 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 68 insertions(+), 27 deletions(-) diff --git a/Leatrix_Plus.lua b/Leatrix_Plus.lua index bee2a2e..99b13c0 100644 --- a/Leatrix_Plus.lua +++ b/Leatrix_Plus.lua @@ -12214,39 +12214,80 @@ _G.TargetFrame_SetLocked = function() end - -- Prevent Blizzard from resetting the PlayerFrame position - _G.PlayerFrame_ResetUserPlacedPosition = function() end - _G.PlayerFrame_SetLocked = function() end + -- Disable Blizzard animation functions + function PlayerFrame_AnimateOut(self) + -- Instantly update art without animation + PlayerFrame_UpdateArt(self) + end - -- Function to restore the PlayerFrame position - local function RestorePlayerFramePosition() - local vf = PlayerFrame:GetName() - if LeaPlusDB["Frames"] and LeaPlusDB["Frames"][vf] then - local db = LeaPlusDB["Frames"][vf] - if db["Point"] and db["Relative"] and db["XOffset"] and db["YOffset"] then - PlayerFrame:ClearAllPoints() - PlayerFrame:SetPoint(db["Point"], UIParent, db["Relative"], db["XOffset"], db["YOffset"]) - end + function PlayerFrame_AnimFinished(self) + -- No need for animation sequences, update instantly + PlayerFrame_UpdateArt(self) + end + + function PlayerFrame_UpdateArt(self) + if UnitHasVehicleUI("player") then + PlayerFrame_ToVehicleArt(self, UnitVehicleSkin("player")) + else + PlayerFrame_ToPlayerArt(self) end end - -- Event handler function - local function LeaPlus_VehicleFix(self, event, unit) - if event == "PLAYER_ENTERING_WORLD" then - -- Delay 1.5s for entering world - LibCompat.After(1.5, RestorePlayerFramePosition) - elseif unit == "player" then - -- Delay 0.3s for vehicle events - LibCompat.After(0.3, RestorePlayerFramePosition) - end + function PlayerFrame_ToVehicleArt(self, vehicleType) + PlayerFrame.state = "vehicle" + + UnitFrame_SetUnit(self, "vehicle", PlayerFrameHealthBar, PlayerFrameManaBar) + UnitFrame_SetUnit(PetFrame, "player", PetFrameHealthBar, PetFrameManaBar) + PetFrame_Update(PetFrame) + PlayerFrame_Update() + BuffFrame_Update() + ComboFrame_Update() + + PlayerFrameTexture:Hide() + PlayerFrameVehicleTexture:SetTexture( + vehicleType == "Natural" and "Interface\\Vehicles\\UI-Vehicle-Frame-Organic" or "Interface\\Vehicles\\UI-Vehicle-Frame" + ) + PlayerFrameVehicleTexture:Show() + + PlayerFrameHealthBar:SetWidth(100) + PlayerFrameHealthBar:SetPoint("TOPLEFT", 119, -41) + PlayerFrameManaBar:SetWidth(100) + PlayerFrameManaBar:SetPoint("TOPLEFT", 119, -52) + + PlayerName:SetPoint("CENTER", 50, 23) + PlayerLeaderIcon:SetPoint("TOPLEFT", 40, -12) + PlayerMasterIcon:SetPoint("TOPLEFT", 86, 0) + PlayerFrameGroupIndicator:SetPoint("BOTTOMLEFT", PlayerFrame, "TOPLEFT", 97, -13) + PlayerFrameBackground:SetWidth(114) + PlayerLevelText:Hide() + end + + function PlayerFrame_ToPlayerArt(self) + PlayerFrame.state = "player" + + UnitFrame_SetUnit(self, "player", PlayerFrameHealthBar, PlayerFrameManaBar) + UnitFrame_SetUnit(PetFrame, "pet", PetFrameHealthBar, PetFrameManaBar) + PetFrame_Update(PetFrame) + PlayerFrame_Update() + BuffFrame_Update() + ComboFrame_Update() + + PlayerFrameTexture:Show() + PlayerFrameVehicleTexture:Hide() + + PlayerFrameHealthBar:SetWidth(119) + PlayerFrameHealthBar:SetPoint("TOPLEFT", 106, -41) + PlayerFrameManaBar:SetWidth(119) + PlayerFrameManaBar:SetPoint("TOPLEFT", 106, -52) + + PlayerName:SetPoint("CENTER", 50, 19) + PlayerLeaderIcon:SetPoint("TOPLEFT", 40, -12) + PlayerMasterIcon:SetPoint("TOPLEFT", 80, -10) + PlayerFrameGroupIndicator:SetPoint("BOTTOMLEFT", PlayerFrame, "TOPLEFT", 97, -20) + PlayerFrameBackground:SetWidth(119) + PlayerLevelText:Show() end - -- Create a frame to listen for events - local LeaPlusVehicleFrame = CreateFrame("Frame") - LeaPlusVehicleFrame:RegisterEvent("PLAYER_ENTERING_WORLD") - LeaPlusVehicleFrame:RegisterEvent("UNIT_ENTERED_VEHICLE") - LeaPlusVehicleFrame:RegisterEvent("UNIT_EXITED_VEHICLE") - LeaPlusVehicleFrame:SetScript("OnEvent", LeaPlus_VehicleFix) -- Create frame table (used for local traversal) From c2e21b78da252bc870faafa2ba4d6af9829dcaab Mon Sep 17 00:00:00 2001 From: Sattva <74269253+Sattva-108@users.noreply.github.com> Date: Mon, 24 Mar 2025 08:43:19 +0300 Subject: [PATCH 4/5] v4 - works, but taints! --- Leatrix_Plus.lua | 55 ------------------------------------------------ 1 file changed, 55 deletions(-) diff --git a/Leatrix_Plus.lua b/Leatrix_Plus.lua index 99b13c0..c5c7e61 100644 --- a/Leatrix_Plus.lua +++ b/Leatrix_Plus.lua @@ -12233,61 +12233,6 @@ end end - function PlayerFrame_ToVehicleArt(self, vehicleType) - PlayerFrame.state = "vehicle" - - UnitFrame_SetUnit(self, "vehicle", PlayerFrameHealthBar, PlayerFrameManaBar) - UnitFrame_SetUnit(PetFrame, "player", PetFrameHealthBar, PetFrameManaBar) - PetFrame_Update(PetFrame) - PlayerFrame_Update() - BuffFrame_Update() - ComboFrame_Update() - - PlayerFrameTexture:Hide() - PlayerFrameVehicleTexture:SetTexture( - vehicleType == "Natural" and "Interface\\Vehicles\\UI-Vehicle-Frame-Organic" or "Interface\\Vehicles\\UI-Vehicle-Frame" - ) - PlayerFrameVehicleTexture:Show() - - PlayerFrameHealthBar:SetWidth(100) - PlayerFrameHealthBar:SetPoint("TOPLEFT", 119, -41) - PlayerFrameManaBar:SetWidth(100) - PlayerFrameManaBar:SetPoint("TOPLEFT", 119, -52) - - PlayerName:SetPoint("CENTER", 50, 23) - PlayerLeaderIcon:SetPoint("TOPLEFT", 40, -12) - PlayerMasterIcon:SetPoint("TOPLEFT", 86, 0) - PlayerFrameGroupIndicator:SetPoint("BOTTOMLEFT", PlayerFrame, "TOPLEFT", 97, -13) - PlayerFrameBackground:SetWidth(114) - PlayerLevelText:Hide() - end - - function PlayerFrame_ToPlayerArt(self) - PlayerFrame.state = "player" - - UnitFrame_SetUnit(self, "player", PlayerFrameHealthBar, PlayerFrameManaBar) - UnitFrame_SetUnit(PetFrame, "pet", PetFrameHealthBar, PetFrameManaBar) - PetFrame_Update(PetFrame) - PlayerFrame_Update() - BuffFrame_Update() - ComboFrame_Update() - - PlayerFrameTexture:Show() - PlayerFrameVehicleTexture:Hide() - - PlayerFrameHealthBar:SetWidth(119) - PlayerFrameHealthBar:SetPoint("TOPLEFT", 106, -41) - PlayerFrameManaBar:SetWidth(119) - PlayerFrameManaBar:SetPoint("TOPLEFT", 106, -52) - - PlayerName:SetPoint("CENTER", 50, 19) - PlayerLeaderIcon:SetPoint("TOPLEFT", 40, -12) - PlayerMasterIcon:SetPoint("TOPLEFT", 80, -10) - PlayerFrameGroupIndicator:SetPoint("BOTTOMLEFT", PlayerFrame, "TOPLEFT", 97, -20) - PlayerFrameBackground:SetWidth(119) - PlayerLevelText:Show() - end - -- Create frame table (used for local traversal) From 9c1df9de3b6ce36a842a2691807b0b8cbfcdb053 Mon Sep 17 00:00:00 2001 From: Sattva <74269253+Sattva-108@users.noreply.github.com> Date: Mon, 24 Mar 2025 09:29:08 +0300 Subject: [PATCH 5/5] v5 - works, doesnt taint? or only on uwow server? I left some code made by Leatrix, which is not perfect, for combat vehicling. followed this commit by Leatrix: https://github.com/leatrix/leatrix-plus/commit/4178b6fca263de759ab8ecd3a744129cd6abf584 I tested on Warmane, Whitemane, no taint. Taints only on UWOW server. --- Leatrix_Plus.lua | 69 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 50 insertions(+), 19 deletions(-) diff --git a/Leatrix_Plus.lua b/Leatrix_Plus.lua index c5c7e61..66810dd 100644 --- a/Leatrix_Plus.lua +++ b/Leatrix_Plus.lua @@ -12214,25 +12214,6 @@ _G.TargetFrame_SetLocked = function() end - -- Disable Blizzard animation functions - function PlayerFrame_AnimateOut(self) - -- Instantly update art without animation - PlayerFrame_UpdateArt(self) - end - - function PlayerFrame_AnimFinished(self) - -- No need for animation sequences, update instantly - PlayerFrame_UpdateArt(self) - end - - function PlayerFrame_UpdateArt(self) - if UnitHasVehicleUI("player") then - PlayerFrame_ToVehicleArt(self, UnitVehicleSkin("player")) - else - PlayerFrame_ToPlayerArt(self) - end - end - -- Create frame table (used for local traversal) @@ -12601,6 +12582,56 @@ end end end) + --Fix the blizzard bug with animating + -- the PlayerFrame when entering / leavling Vehicle. + -- This versions taints on some server, but is much more perfect. + -- See below this for actual no-taint code. + + -- Disable Blizzard animation functions + function PlayerFrame_AnimateOut(self) + -- Instantly update art without animation + PlayerFrame_UpdateArt(self) + end + + function PlayerFrame_AnimFinished(self) + -- No need for animation sequences, update instantly + PlayerFrame_UpdateArt(self) + end + + function PlayerFrame_UpdateArt(self) + if UnitHasVehicleUI("player") then + PlayerFrame_ToVehicleArt(self, UnitVehicleSkin("player")) + else + PlayerFrame_ToPlayerArt(self) + end + end + + --Fix for the blizzard bug with animating + -- the PlayerFrame when entering / leavling Vehicle. + -- This versions doesn't taint, but is NOT perfect. + -- See above for perfect but tainted code. + + --do + -- local function FixPlayerFrame() + -- PlayerFrame:ClearAllPoints() + -- PlayerFrame:SetPoint(LeaPlusDB["Frames"]["PlayerFrame"]["Point"], UIParent, LeaPlusDB["Frames"]["PlayerFrame"]["Relative"], LeaPlusDB["Frames"]["PlayerFrame"]["XOffset"], LeaPlusDB["Frames"]["PlayerFrame"]["YOffset"]) + -- end + -- + -- local bugFrame = CreateFrame("FRAME") + -- + -- bugFrame:SetScript("OnEvent", function() + -- FixPlayerFrame() + -- bugFrame:UnregisterEvent("PLAYER_REGEN_ENABLED") + -- end) + -- + -- hooksecurefunc("PlayerFrame_SequenceFinished", function() + -- if UnitAffectingCombat("player") then + -- bugFrame:RegisterEvent("PLAYER_REGEN_ENABLED") + -- else + -- FixPlayerFrame() + -- end + -- end) + --end end