i changed it up totally think this is what Xrystal was talking about
the frame creation
lua Code:
local function createPartyFrames(i)
-- Main Frame
local frame = CreateFrame("Frame", "GrimUIPartyFrame" .. i, UIParent, "SecureUnitButtonTemplate")
frame.unit = "party" .. i
-- Pedestal Frame
frame.PedestalFrame = CreateFrame("Frame", nil, frame)
-- Health Bar
frame.HealthBorder = CreateFrame("button", nil, frame)
frame.HealthBar = CreateFrame("StatusBar", nil, frame)
frame.HealthNumTxtFrame = CreateFrame("Frame", nil, frame)
-- Mana Bar
frame.ManaBorder = CreateFrame("button", nil, frame)
frame.ManaBar = CreateFrame("StatusBar", nil, frame)
frame.ManaNumTxtFrame = CreateFrame("Frame", nil, frame)
-- Misc Frames
frame.InfoTextFrame = CreateFrame("button", nil, frame)
frame.LetterFrame = CreateFrame("Frame", nil, frame)
frame.LeaderFrame = CreateFrame("Frame", nil, frame)
frame.pvpIconFrame = CreateFrame("Frame", nil, frame)
frame.offDeadGhostTxtFrame = CreateFrame("Frame", nil, frame)
-- Target Bar
frame.targetOfFrame = CreateFrame("Frame", nil, frame)
frame.targetOfClickFrame = CreateFrame("button", nil, frame)
-- texture creation
frame.PedestalFrame.texture = frame.PedestalFrame:CreateTexture()
frame.LeaderFrame.texture = frame.LeaderFrame:CreateTexture()
frame.pvpIconFrame.texture = frame.pvpIconFrame:CreateTexture()
frame.targetOfFrame.texture = frame.targetOfPartyFrame:CreateTexture(nil, "BACKGROUND")
-- font creation
frame.HealthBorder.percentHText = frame.HealthBorder:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall")
frame.ManaBorder.percentMText = frame.ManaBorder:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall")
frame.InfoTextFrame.NameText = frame.InfoTextFrame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall")
frame.LetterFrame.LetterHText = frame.LetterFrame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall")
frame.LetterFrame.LetterMText = frame.LetterFrame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall")
frame.HealthNumTxtFrame.chnumtxt = frame.HealthNumTxtFrame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall")
frame.HealthNumTxtFrame.mhnumtxt = frame.HealthNumTxtFrame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall")
frame.ManaNumTxtFrame.CMNumTxt = frame.ManaNumTxtFrame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall")
frame.ManaNumTxtFrame.MMNumTxt = frame.ManaNumTxtFrame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall")
frame.InfoTextFrame.LvlClassText = frame.InfoTextFrame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall")
frame.offDeadGhostTxtFrame.DeadOfflineTxt = frame.offDeadGhostTxtFrame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall")
frame.targetOfFrame.targetOfText = frame.targetOfFrame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall")
-- event frames
frame.GUIHealthEvents = CreateFrame("Frame", nil, frame)
frame.GUIManaEvents = CreateFrame("Frame", nil, frame)
frame.GUINameTextEvents = CreateFrame("Frame", nil, frame)
frame.GUILvlClassTextEvents = CreateFrame("frame", nil, frame)
frame.GUIPartyLeaderEvent = CreateFrame("Frame", nil, frame)
frame.GUIpvpIconEvent = CreateFrame("Frame", nil, frame)
frame.GUIOffLineDeadEvents = CreateFrame("Frame", nil, frame)
frame.GUItargetOfFrameEvents = CreateFrame("frame", nil, frame)
end
for id = 1, 4 do
createPartyFrame(id)
end
here is the event registration to each frame
lua Code:
local function GUIRegisterPartyEvents(id)
-- Health Events
local frame = _G['GrimUIPartyFrame' .. id]
frame.GUIHealthEvents:RegisterEvent("PLAYER_ENTERING_WORLD")
frame.GUIHealthEvents:RegisterEvent("UNIT_HEALTH")
frame.GUIHealthEvents:RegisterEvent("UNIT_LEVEL")
frame.GUIHealthEvents:RegisterEvent("UNIT_AURA")
frame.GUIHealthEvents:RegisterEvent("UNIT_MAXHEALTH")
frame.GUIHealthEvents:RegisterEvent("PARTY_MEMBERS_CHANGED")
-- Mana Events
frame.GUIManaEvents.RegisterEvents = GrimUI.RegisterEvents
frame.GUIManaEvents:RegisterEvents('PLAYER_ENTERING_WORLD', 'PARTY_MEMBERS_CHANGED', 'UNIT_HEALTH', 'UNIT_LEVEL', 'UNIT_MANA', 'UNIT_AURA','UNIT_DISPLAYPOWER', 'UNIT_ENERGY', 'UNIT_MAXENERGY', 'UNIT_MAXMANA', 'UNIT_MAXRUNICPOWER', 'UNIT_RUNIC_POWER', 'UNIT_RAGE')
frame.GUINameTextEvents:RegisterEvent("PLAYER_ENTERING_WORLD")
frame.GUINameTextEvents:RegisterEvent("PARTY_MEMBERS_CHANGED")
frame.GUINameTextEvents:RegisterEvent("UNIT_NAME_UPDATE")
frame.GUINameTextEvents:RegisterEvent("UNIT_FLAGS")
frame.GUINameTextEvents:RegisterEvent("UNIT_THREAT_LIST_UPDATE")
frame.GUINameTextEvents:RegisterEvent("UNIT_THREAT_SITUATION_UPDATE")
frame.GUINameTextEvents:RegisterEvent("UNIT_COMBAT")
frame.GUILvlClassTextEvents:RegisterEvent("PLAYER_ENTERING_WORLD")
frame.GUILvlClassTextEvents:RegisterEvent("PARTY_MEMBERS_CHANGED")
frame.GUILvlClassTextEvents:RegisterEvent("UNIT_LEVEL")
frame.GUIPartyLeaderEvent:RegisterEvent("PLAYER_ENTERING_WORLD")
frame.GUIPartyLeaderEvent:RegisterEvent("PARTY_LEADER_CHANGED")
frame.GUIPartyLeaderEvent:RegisterEvent("PARTY_MEMBERS_CHANGED")
frame.GUIPartyLeaderEvent:RegisterEvent("ZONE_CHANGED_NEW_AREA")
frame.GUIpvpIconEvent:RegisterEvent("PLAYER_ENTERING_WORLD")
frame.GUIpvpIconEvent:RegisterEvent("UNIT_FACTION")
frame.GUIpvpIconEvent:RegisterEvent("PARTY_MEMBERS_CHANGED")
frame.GUIpvpIconEvent:RegisterEvent("UNIT_DYNAMIC_FLAGS")
frame.GUIOffLineDeadEvents.RegisterEvents = GrimUI.RegisterEvents
frame.GUIOffLineDeadEvents:RegisterEvents('PLAYER_ENTERING_WORLD', 'PARTY_MEMBERS_CHANGED', 'PARTY_MEMBER_DISABLE', 'PARTY_MEMBER_ENABLE', 'UNIT_HEALTH')
frame.GUItargetOfFrameEvents.RegisterEvents = GrimUI.RegisterEvents
frame.GUItargetOfFrameEvents:RegisterEvents('PLAYER_ENTERING_WORLD', 'PARTY_MEMBERS_CHANGED', 'PARTY_LEADER_CHANGED', 'PLAYER_TARGET_CHANGED', 'UNIT_TARGET')
end
for id = 1, 4 do
GUIRegisterPartyEvents(id)
end
here is the new setscript
lua Code:
local function GUISetPartyEventScripts(id)
local frame = _G['GrimUIPartyFrame' .. id]
frame.GUIHealthEvents:SetScript("OnEvent", function(self)
GrimUI.HealthEventFunc(self)
end)
frame.GUIManaEvents:SetScript("OnEvent", function(self)
GrimUI.ManaEventFunc(self)
end)
frame.GUINameTextEvents:SetScript("OnEvent", function(self)
GrimUI.PartyNameTextEvents(self)
end)
frame.GUILvlClassTextEvents:SetScript("OnEvent", function(self)
GrimUI.LvlClassTextEvents(self)
end)
frame.GUIpvpIconEvent:SetScript("OnEvent", function(self)
GrimUI.pvpIconEvent(self)
end)
frame.GUIPartyLeaderEvent:SetScript("OnEvent", function(self)
GrimUI.PartyLeaderEvent(self)
end)
frame.GUIOffLineDeadEvents:SetScript("OnEvent", function(self)
GrimUI.DeadOffLineEvents(self)
end)
frame.GUItargetOfFrameEvents:SetScript("OnEvent", function(self)
GrimUI.TargEventFunc(self)
end)
end
for id = 1, 4 do
GUISetPartyEventScripts(id)
end