Go to Page... |
Thread Tools | Display Modes |
03-24-15, 09:40 AM | #1 |
oUF_Mu problem with class power and vehicle UI
Hey
Since the author of oUF_Mu seems not to be active anymore I hope you could help me. Every time I leave a vehicle (for example the mounts of the Argent Tournament) my class power like Holy Power doesn't work correctly. If you download the normal files you'll see that the frame doesn't show up again. That's easily fixed with taking every power in the function "VehicleVisibilityUpdate" but now the frame shows up and if I gain one Holy Power the frame doesn't show me that. With DK runes it works great. I couldn't find any mistake but well, I'm not very good at LUA. All I have found in the code was this: Code:
--=================================-- -- class points bars --=================================-- local function cpPositionCalc(width, count) -- calculate the position of the first point return 1-floor((width+2)*count/2) end local function PostUpdateRune(runes, rune, rid, start, duration, ready) local runetype = GetRuneType(rid) local r, g, b = unpack(oUF.colors.runes[runetype]) if ready then rune:SetStatusBarColor(r, g, b) else rune:SetStatusBarColor(r*.6, g*.6, b*.6) end end local function VehicleVisibilityUpdate(self, event, unit) local element = self.Runes and self.Runes or self.TotemBar or self.ClassIcons or self.CPoints for i = 1, #element do if UnitHasVehicleUI('player') then element[i]:Hide() else element[i]:Show() end end end local function ShadowOrbsVisibilityUpdate(self, event, ...) local orbs = self.ClassIcons for i = 1, 3 do if UnitHasVehicleUI('player') or GetSpecialization() ~= 3 then orbs[i]:Hide() else orbs[i]:Show() end end end local function classPointHelper(self, class, pinfo) local w, h, count = pinfo.size.w, pinfo.size.h, pinfo.count if count < 5 and class ~= 'SHAMAN' then count = 5 end local points = {} for i = 1, count do local point = CreateFrame('StatusBar', nil, self) point:SetSize(w-2, h-2) point:SetStatusBarTexture(cfg.powertex) point.bg = point:CreateTexture(nil, 'BACKGROUND') point.bg:SetAllPoints(point) point.border = mu.createBorder(point) if class == 'DEATHKNIGHT' then local runetype = GetRuneType(i) local r, g, b = unpack(oUF.colors.runes[runetype]) point.bg:SetTexture(r, g, b, 0.75) point.bg.multiplier = .25 elseif class == 'ROGUE' or class == 'DRUID' then point:SetStatusBarColor(unpack(cpcolor[i])) end points[i] = point if i == 1 then point:SetPoint('BOTTOMLEFT', UIParent, 'CENTER', cpPositionCalc(w, pinfo.count), -109) else point:SetPoint('LEFT', points[i-1], 'RIGHT', 4, 0) end end return points end local function ClassIconsPostUpdate(points, cur, max, changed) local r1, b1, g1, r2, b2, g2 if pClass == 'PALADIN' then r1, g1, b1 = 0.82, 0.56, 0.18 r2, g2, b2 = 0.9, 0.78, 0.21 elseif pClass == 'PRIEST' then r1, g1, b1 = 0.48, 0.15, 0.93 r2, g2, b2 = 0.62, 0.32, 0.98 elseif pClass == 'MONK' then r1, g1, b1 = 0.3, 0.85, 0.51 r2, g2, b2 = 0.56, 0.91, 0.78 end for i = 1, max do local point = points[i] local minvalue, maxvalue = points[i]:GetMinMaxValues() if cur == max then point:SetStatusBarColor(r2, g2, b2) point:SetValue(maxvalue) point:Show() elseif i > cur then point:SetValue(minvalue) point:Show() else point:SetStatusBarColor(r1, g1, b1) point:SetValue(maxvalue) point:Show() end end end local function ClassIconsUpdateTexture(element) local r, g, b if pClass == 'PALADIN' then r, g, b = 0.82, 0.56, 0.18 elseif pClass == 'PRIEST' then r, g, b = 0.52, 0.13, 0.93 elseif pClass == 'MONK' then r, g, b = 0.3, 0.85, 0.51 end for i = 1, #element do element[i]:SetMinMaxValues(0,1) element[i]['bg']:SetTexture(r*.25, g*.25, b*.25, .75) end end mu.classPoints = function(self) local pinfo if pClass == 'PALADIN' then pinfo = { count = UnitPowerMax('player', SPELL_POWER_HOLY_POWER), size = { w=26, h=12 }, } elseif pClass == 'PRIEST' then pinfo = { count = 3, size = { w=30, h=12 }, } elseif pClass == 'MONK' then pinfo = { count = UnitPowerMax('player', SPELL_POWER_CHI), size = { w=26, h=12 }, } elseif pClass == 'DRUID' or pClass == 'ROGUE' then pinfo = { count = MAX_COMBO_POINTS, size = { w=26, h=12 }, } elseif pClass == 'DEATHKNIGHT' then pinfo = { count = 6, size = { w=24, h=12 }, } elseif pClass == 'SHAMAN' then pinfo = { count = 4, size = { w=30, h=12}, } end local points = classPointHelper(self, pClass, pinfo) if mu.multicheck(pClass, 'PALADIN', 'PRIEST', 'MONK') then self.ClassIcons = points self.ClassIcons.UpdateTexture = ClassIconsUpdateTexture self.ClassIcons.PostUpdate = ClassIconsPostUpdate self:RegisterEvent('UNIT_ENTERING_VEHICLE', VehicleVisibilityUpdate) self:RegisterEvent('UNIT_EXITED_VEHICLE', VehicleVisibilityUpdate) elseif pClass == 'DRUID' or pClass == 'ROGUE' then self.CPoints = points self:RegisterEvent('UNIT_ENTERING_VEHICLE', VehicleVisibilityUpdate) self:RegisterEvent('UNIT_EXITED_VEHICLE', VehicleVisibilityUpdate) elseif pClass == 'DEATHKNIGHT' then oUF.colors.runes = { {0.75, 0.21, 0.21}, -- blood {0.36, 0.72, 0.22}, -- unholy {0.18, 0.63, 0.79}, -- frost {0.67, 0.15, 0.75}, -- death } self.Runes = points self.Runes.PostUpdateType = PostUpdateRuneType self.Runes.PostUpdateRune = PostUpdateRune self:RegisterEvent('UNIT_ENTERING_VEHICLE', VehicleVisibilityUpdate) self:RegisterEvent('UNIT_EXITED_VEHICLE', VehicleVisibilityUpdate) elseif pClass == 'SHAMAN' then self.TotemBar = points self.TotemBar.Destroy = true self:RegisterEvent('UNIT_ENTERING_VEHICLE', VehicleVisibilityUpdate) self:RegisterEvent('UNIT_EXITED_VEHICLE', VehicleVisibilityUpdate) end if pClass == 'PRIEST' then self:RegisterEvent('PLAYER_ENTERING_WORLD', ShadowOrbsVisibilityUpdate) self:RegisterEvent('PLAYER_TALENT_UPDATE', ShadowOrbsVisibilityUpdate) self:RegisterEvent('ACTIVE_TALENT_GROUP_CHANGED', ShadowOrbsVisibilityUpdate) self:RegisterEvent('UNIT_ENTERING_VEHICLE', ShadowOrbsVisibilityUpdate) self:RegisterEvent('UNIT_EXITED_VEHICLE', ShadowOrbsVisibilityUpdate) end end |
|
03-24-15, 10:07 AM | #2 |
Try this:
For your visibility handler I would revert the "VehicleVisibilityUpdate" function back to the default and add a second one specifically for the other class element types. Like this: Lua Code:
Then in the creation part of the code, simply use the new handler function accordingly: Lua Code:
... hope this helps |
|
03-24-15, 11:13 AM | #3 |
Thanks for your help but with your code the class points just don't show up again after leaving a vehicle.
|
|
03-24-15, 07:08 PM | #4 | |
Well dang.... This may or may not help but I'm going to post it anyway, because it's bugging me. It would probably be better to save the class resource bar's name and use it to accurately grab the element in the handler. I also realized that BOTH the show/hide loop AND the ForceUpdate need to be fired during vehicle events. This is what I came up with.... Lua Code:
and Lua Code:
|
||
03-25-15, 05:48 AM | #5 |
Well, there isn't any change. It works well until I enter a vehicle. After I leave that the frame shows up but isn't working at all :/
|
|
03-31-15, 04:43 PM | #6 |
Why are you trying to do your own vehicle-related visibility checking in the first place? All of the elements you're working with hide themselves in/out of vehicles as appropriate, by default. Just let oUF handle it.
__________________
Retired author of too many addons. Message me if you're interested in taking over one of my addons. Don’t message me about addon bugs or programming questions. |
|
04-01-15, 10:04 AM | #7 | |
I will try the code without the visibility function but I just didn't know about that fact. |
||
WoWInterface » Featured Projects » oUF (Otravi Unit Frames) » oUF_Mu problem with class power and vehicle UI |
«
Previous Thread
|
Next Thread
»
|
Display Modes |
Linear Mode |
Switch to Hybrid Mode |
Switch to Threaded Mode |
|
|