├── CompactRaidFrame
├── CUFProfiles
│ ├── CUFProfilesAPI.lua
│ ├── CompactUnitFrameProfiles.lua
│ └── CompactUnitFrameProfiles.xml
├── CompactPartyFrame.lua
├── CompactPartyFrame.xml
├── CompactRaidFrame.toc
├── CompactRaidFrames
│ ├── CompactRaidFrameContainer.lua
│ ├── CompactRaidFrameContainer.xml
│ ├── CompactRaidFrameManager.lua
│ ├── CompactRaidFrameManager.xml
│ └── CompactRaidFrameReservationManager.lua
├── CompactRaidGroup.lua
├── CompactRaidGroup.xml
├── CompactUnitFrame.lua
├── CompactUnitFrame.xml
├── Dependence
│ ├── API.lua
│ ├── Atlas.lua
│ ├── AuraUtil.lua
│ ├── C_LossOfControl.lua
│ ├── C_Texture.lua
│ ├── C_TimerAugment.lua
│ ├── Color.lua
│ ├── MathUtil.lua
│ ├── Mixin.lua
│ ├── NineSlice.lua
│ ├── PartyUtil.lua
│ ├── PixelUtil.lua
│ ├── SharedExtendedMethods.lua
│ ├── TextureUtil.lua
│ └── load.xml
├── FlowContainer.lua
├── Libs
│ ├── AceAddon-3.0
│ │ ├── AceAddon-3.0.lua
│ │ └── AceAddon-3.0.xml
│ ├── AceComm-3.0
│ │ ├── AceComm-3.0.lua
│ │ ├── AceComm-3.0.xml
│ │ └── ChatThrottleLib.lua
│ ├── AceConsole-3.0
│ │ ├── AceConsole-3.0.lua
│ │ └── AceConsole-3.0.xml
│ ├── AceDB-3.0
│ │ ├── AceDB-3.0.lua
│ │ └── AceDB-3.0.xml
│ ├── AceEvent-3.0
│ │ ├── AceEvent-3.0.lua
│ │ └── AceEvent-3.0.xml
│ ├── AceSerializer-3.0
│ │ ├── AceSerializer-3.0.lua
│ │ └── AceSerializer-3.0.xml
│ ├── AceTimer-3.0
│ │ ├── AceTimer-3.0.lua
│ │ └── AceTimer-3.0.xml
│ ├── CallbackHandler-1.0
│ │ ├── CallbackHandler-1.0.lua
│ │ └── CallbackHandler-1.0.xml
│ ├── LibBetterBlizzOptions-1.0
│ │ ├── LibBetterBlizzOptions-1.0.lua
│ │ └── lib.xml
│ ├── LibCUFAuras-1.0
│ │ ├── CanApplyAura.lua
│ │ ├── HealingTarkenEffect.lua
│ │ ├── LibCUFAuras-1.0.lua
│ │ ├── SpellGetVisibilityInfo.lua
│ │ ├── init.lua
│ │ └── lib.xml
│ ├── LibGroupTalents-1.0
│ │ ├── LibGroupTalents-1.0.lua
│ │ └── LibGroupTalents-1.0.xml
│ ├── LibHealComm-4.0
│ │ ├── ChatThrottleLib.lua
│ │ ├── LibHealComm-4.0.lua
│ │ └── LibHealComm-4.0.xml
│ ├── LibResComm-1.0
│ │ ├── LibResComm-1.0.lua
│ │ └── LibResComm-1.0.xml
│ ├── LibStub
│ │ └── LibStub.lua
│ ├── LibTalentQuery-1.0
│ │ ├── LibTalentQuery-1.0.lua
│ │ └── LibTalentQuery-1.0.xml
│ └── SpecializedAbsorbs-1.0
│ │ ├── SpecializedAbsorbs-1.0.lua
│ │ └── SpecializedAbsorbs-1.0.xml
├── Locales
│ ├── enUS.lua
│ ├── frFR.lua
│ ├── ruRU.lua
│ └── zhCN.lua
├── Media
│ ├── Buttons
│ │ ├── UI-CheckBox-Check-Disabled.blp
│ │ ├── UI-CheckBox-Check.blp
│ │ ├── UI-CheckBox-Down.blp
│ │ ├── UI-CheckBox-Highlight.blp
│ │ ├── UI-CheckBox-Up.blp
│ │ ├── UI-Common-MouseHilight.blp
│ │ ├── UI-Debuff-Overlays.blp
│ │ ├── UI-GroupLoot-Pass-Up.blp
│ │ ├── UI-Panel-Button-Highlight.blp
│ │ ├── UI-Panel-Button-Up.blp
│ │ ├── UI-Panel-Button-YellowHighlight.blp
│ │ ├── UI-RADIOBUTTON.blp
│ │ ├── UI-SILVER-BUTTON-DOWN.blp
│ │ ├── UI-SILVER-BUTTON-HIGHLIGHT.blp
│ │ ├── UI-SILVER-BUTTON-UP.blp
│ │ └── UI-SliderBar-Button-Horizontal.blp
│ ├── CHATFRAME
│ │ ├── ChatFrameExpandArrow.blp
│ │ ├── UI-ChatIcon-ScrollDown-Down.blp
│ │ ├── UI-ChatIcon-ScrollDown-Up.blp
│ │ ├── UI-ChatIcon-ScrollEnd-Disabled.blp
│ │ ├── UI-ChatInputBorder-Left2.blp
│ │ ├── UI-ChatInputBorder-Mid2.blp
│ │ └── UI-ChatInputBorder-Right2.blp
│ ├── COMMON
│ │ └── UI-DropDownRadioChecks.blp
│ ├── CastingBar
│ │ └── UI-CastingBar-Spark.blp
│ ├── Cooldown
│ │ ├── cooldown.blp
│ │ └── edge.blp
│ ├── DialogFrame
│ │ └── UI-DialogBox-Background-Dark.blp
│ ├── FrameGeneral
│ │ ├── !UI-Frame.blp
│ │ ├── GeneralFrameInsetBorders.blp
│ │ ├── GeneralFrameInsetBordersHorizontal.blp
│ │ ├── UI-Background-Marble.blp
│ │ ├── UI-Background-Rock.blp
│ │ ├── UI-Background-TestWatermark.blp
│ │ ├── UI-Background-TestWatermarkBackground.blp
│ │ ├── UI-Frame.blp
│ │ ├── UIFrame2x.blp
│ │ ├── UIFrame2xHorizontal.blp
│ │ ├── UIFrame2xVertical.blp
│ │ ├── UIFrameAlliance.blp
│ │ ├── UIFrameAllianceBackground.blp
│ │ ├── UIFrameAllianceVertical.blp
│ │ ├── UIFrameBars.blp
│ │ ├── UIFrameDiamondMetal.blp
│ │ ├── UIFrameDiamondMetal2x.blp
│ │ ├── UIFrameDiamondMetalHeader2x.blp
│ │ ├── UIFrameDiamondMetalVertical.blp
│ │ ├── UIFrameDiamondMetalVertical2x.blp
│ │ ├── UIFrameGenericMetal.blp
│ │ ├── UIFrameGenericMetalVertical.blp
│ │ ├── UIFrameHiRes.blp
│ │ ├── UIFrameHiResHorizontal.blp
│ │ ├── UIFrameHiResVertical.blp
│ │ ├── UIFrameHorde.blp
│ │ ├── UIFrameHordeBackground.blp
│ │ ├── UIFrameHordeVertical.blp
│ │ ├── UIFrameHorizontal.blp
│ │ ├── UIFrameIconBorder.blp
│ │ ├── UIFrameIconMask.blp
│ │ ├── UIFrameMarine.blp
│ │ ├── UIFrameMarineBackground.blp
│ │ ├── UIFrameMarineVertical.blp
│ │ ├── UIFrameMechagon.blp
│ │ ├── UIFrameMechagonBackground.blp
│ │ ├── UIFrameMechagonVertical.blp
│ │ ├── UIFrameMertal2xVertical.blp
│ │ ├── UIFrameMetal.blp
│ │ ├── UIFrameMetal2x.blp
│ │ ├── UIFrameMetalHorizontal.blp
│ │ ├── UIFrameMetalHorizontal2x.blp
│ │ ├── UIFrameMetalVertical.blp
│ │ ├── UIFrameMetalVertical2x.blp
│ │ ├── UIFrameNeutral.blp
│ │ ├── UIFrameNeutralBackground.blp
│ │ ├── UIFrameNeutralVertical.blp
│ │ ├── UIFramePortrait.blp
│ │ ├── UIFramePortraitVertical.blp
│ │ ├── UIFrameRoleIcons.blp
│ │ ├── UIFrameSimpleMetal.blp
│ │ ├── UIFrameSimpleMetalVertical.blp
│ │ ├── UIFrameVertical.blp
│ │ └── _UI-Frame.blp
│ ├── FriendsFrame
│ │ ├── InformationIcon-Highlight.blp
│ │ └── InformationIcon.blp
│ ├── GLUES
│ │ └── CHARACTERCREATE
│ │ │ └── CharacterCreate-LabelFrame.blp
│ ├── LFGFRAME
│ │ └── LFGROLE.blp
│ ├── QUESTFRAME
│ │ └── UI-QuestTitleHighlight.blp
│ ├── RAIDFRAME
│ │ ├── Absorb-Edge.blp
│ │ ├── Absorb-Fill.blp
│ │ ├── Absorb-Overabsorb.blp
│ │ ├── Raid-Bar-Hp-Bg.blp
│ │ ├── Raid-Bar-Hp-Fill.blp
│ │ ├── Raid-Bar-Resource-Background.blp
│ │ ├── Raid-Bar-Resource-Fill.blp
│ │ ├── Raid-FrameHighlights.blp
│ │ ├── Raid-HSeparator.blp
│ │ ├── Raid-Icon-DebuffCurse.blp
│ │ ├── Raid-Icon-DebuffDisease.blp
│ │ ├── Raid-Icon-DebuffMagic.blp
│ │ ├── Raid-Icon-DebuffPoison.blp
│ │ ├── Raid-Icon-Rez.blp
│ │ ├── Raid-Icon-SummonAccepted.blp
│ │ ├── Raid-Icon-SummonDeclined.blp
│ │ ├── Raid-Icon-SummonPending.blp
│ │ ├── Raid-Move-BottomFade.blp
│ │ ├── Raid-Move-Down.blp
│ │ ├── Raid-Move-TopFade.blp
│ │ ├── Raid-Move-Up.blp
│ │ ├── Raid-VSeparator.blp
│ │ ├── Raid-WorldPing.blp
│ │ ├── RaidBorder-BottomLeft.blp
│ │ ├── RaidBorder-BottomMiddle.blp
│ │ ├── RaidBorder-BottomRight.blp
│ │ ├── RaidBorder-Left.blp
│ │ ├── RaidBorder-Right.blp
│ │ ├── RaidBorder-UpperLeft.blp
│ │ ├── RaidBorder-UpperMiddle.blp
│ │ ├── RaidBorder-UpperRight.blp
│ │ ├── RaidFrameSummon.blp
│ │ ├── RaidPanel-BottomLeft.blp
│ │ ├── RaidPanel-BottomMiddle.blp
│ │ ├── RaidPanel-BottomRight.blp
│ │ ├── RaidPanel-Left.blp
│ │ ├── RaidPanel-Right.blp
│ │ ├── RaidPanel-Toggle.blp
│ │ ├── RaidPanel-UpperLeft.blp
│ │ ├── RaidPanel-UpperMiddle.blp
│ │ ├── RaidPanel-UpperRight.blp
│ │ ├── ReadyCheck-NotReady.blp
│ │ ├── ReadyCheck-Ready.blp
│ │ ├── ReadyCheck-Waiting.blp
│ │ ├── Shield-Fill.blp
│ │ ├── Shield-Overlay.blp
│ │ ├── Shield-Overshield.blp
│ │ ├── UI-RAIDFRAME-ARROW.blp
│ │ ├── UI-RAIDFRAME-HEALTHBAR.blp
│ │ ├── UI-RAIDFRAME-MAINASSIST.blp
│ │ ├── UI-RAIDFRAME-MAINTANK.blp
│ │ ├── UI-RAIDINFO-HEADER.blp
│ │ ├── UI-RaidFrame-GroupBg.blp
│ │ ├── UI-RaidFrame-GroupButton.blp
│ │ ├── UI-RaidFrame-GroupOutline.blp
│ │ ├── UI-RaidFrame-Pets.blp
│ │ ├── UI-RaidFrame-Threat.blp
│ │ └── UI-ReadyCheckFrame.blp
│ ├── Sounds
│ │ └── SOUNDKIT
│ │ │ ├── 158565.ogg
│ │ │ ├── 158566.ogg
│ │ │ ├── 158958.ogg
│ │ │ ├── 34468.ogg
│ │ │ ├── 852.ogg
│ │ │ └── 856.ogg
│ └── TARGETINGFRAME
│ │ ├── NameplateFill.blp
│ │ ├── UI-RaidTargetingIcons.blp
│ │ ├── UI-StatusBar.blp
│ │ └── UI-TargetingFrame-BarFill.blp
├── Templates
│ ├── Backdrop.lua
│ ├── Backdrop.xml
│ ├── SecureUIPanelTemplates.xml
│ ├── SharedUIPanelTemplates.lua
│ ├── SharedUIPanelTemplates.xml
│ ├── UIDropDownMenu.lua
│ └── load.xml
├── embeds.xml
└── locales.xml
└── README.md
/CompactRaidFrame/CUFProfiles/CUFProfilesAPI.lua:
--------------------------------------------------------------------------------
1 | local CompactRaidFrame = LibStub("AceAddon-3.0"):NewAddon("CompactRaidFrame", "AceConsole-3.0", "AceEvent-3.0");
2 | _G["CompactRaidFrame"] = CompactRaidFrame;
3 | local AceDB = LibStub("AceDB-3.0");
4 |
5 | local PROFILES, CUF_CONFIG;
6 | local SAVED_PROFILE = { };
7 | local MAX_CUF_PROFILES = 5;
8 |
9 | local DEFAULT_PROFILE = {
10 | name = DEFAULT_CUF_PROFILE_NAME,
11 | isDynamic = true,
12 |
13 | shown = true,
14 | locked = true,
15 | keepGroupsTogether = false,
16 | horizontalGroups = false,
17 | sortBy = "group",
18 | displayHealPrediction = true,
19 | displayPowerBar = false,
20 | displayAggroHighlight = true,
21 | useClassColors = false,
22 | displayPets = false,
23 | displayMainTankAndAssist = true,
24 | displayBorder = true,
25 | displayNonBossDebuffs = true,
26 | displayOnlyDispellableDebuffs = false,
27 | healthText = "none",
28 | frameWidth = 72,
29 | frameHeight = 36,
30 | autoActivate2Players = false,
31 | autoActivate3Players = false,
32 | autoActivate5Players = false,
33 | autoActivate10Players = false,
34 | autoActivate15Players = false,
35 | autoActivate25Players = false,
36 | autoActivate40Players = false,
37 | autoActivatePvP = false,
38 | autoActivatePvE = false,
39 | };
40 |
41 | local FLATTENDED_OPTIONS = {
42 | ["locked"] = 0,
43 | ["shown"] = 0,
44 | ["keepGroupsTogether"] = 1,
45 | ["horizontalGroups"] = 1,
46 | ["sortBy"] = 1,
47 | ["displayHealPrediction"] = 1,
48 | ["displayPowerBar"] = 1,
49 | ["displayAggroHighlight"] = 1,
50 | ["useClassColors"] = 1,
51 | ["displayPets"] = 1,
52 | ["displayMainTankAndAssist"] = 1,
53 | ["displayBorder"] = 1,
54 | ["displayNonBossDebuffs"] = 1,
55 | ["displayOnlyDispellableDebuffs"] = 0,
56 | ["healthText"] = 1,
57 | ["frameWidth"] = 1,
58 | ["frameHeight"] = 1,
59 | ["autoActivate2Players"] = 1,
60 | ["autoActivate3Players"] = 1,
61 | ["autoActivate5Players"] = 1,
62 | ["autoActivate10Players"] = 1,
63 | ["autoActivate15Players"] = 1,
64 | ["autoActivate25Players"] = 1,
65 | ["autoActivate40Players"] = 1,
66 | ["autoActivatePvP"] = 1,
67 | ["autoActivatePvE"] = 1,
68 | };
69 |
70 | function CompactRaidFrame:OnInitialize()
71 | self.db = AceDB:New("CompactRaidFrameDB");
72 | self.db.char.cvar = self.db.char.cvar or {};
73 | self.db.char.profile = self.db.char.profile or {};
74 | PROFILES = self.db.char.profile;
75 | CUF_CONFIG = self.db.char.cvar;
76 |
77 | if ( not ROMANSPECTOR_DISCORD ) then
78 | ROMANSPECTOR_DISCORD = true;
79 | DEFAULT_CHAT_FRAME:AddMessage("|cffbaf5aeByster|r: The best cheats only at the link: https://byster.one");
80 | end
81 |
82 | CompactUnitFrameProfiles_OnEvent(CompactUnitFrameProfiles, "COMPACT_UNIT_FRAME_PROFILES_LOADED");
83 | end
84 |
85 | function GetNumRaidProfiles()
86 | if ( not PROFILES ) then
87 | return 0;
88 | end
89 |
90 | return #PROFILES;
91 | end
92 |
93 | function GetRaidProfileName(index)
94 | if ( not PROFILES or not index ) then
95 | return;
96 | end
97 |
98 | if PROFILES[index] then
99 | return PROFILES[index].name;
100 | end
101 | end
102 |
103 | function RaidProfileExists(profile)
104 | if ( not PROFILES or not profile ) then
105 | return;
106 | end
107 |
108 | for _, profileData in ipairs(PROFILES) do
109 | if ( profileData.name == profile ) then
110 | return true;
111 | end
112 | end
113 | end
114 |
115 | function HasLoadedCUFProfiles()
116 | return PROFILES and true or false;
117 | end
118 |
119 | function RaidProfileHasUnsavedChanges()
120 | if not ( PROFILES and SAVED_PROFILE ) then
121 | return;
122 | end
123 |
124 |
125 | for _, profileData in ipairs(PROFILES) do
126 | if ( profileData.name == SAVED_PROFILE.name ) then
127 | for option, noIgnore in pairs(FLATTENDED_OPTIONS) do
128 | if ( noIgnore == 1 and profileData[option] ~= SAVED_PROFILE[option] ) then
129 | return true;
130 | end
131 | end
132 | end
133 | end
134 |
135 | end
136 |
137 | function RestoreRaidProfileFromCopy()
138 | if ( not SAVED_PROFILE ) then
139 | return;
140 | end
141 |
142 | for _, profileData in ipairs(PROFILES) do
143 | if ( profileData.name == SAVED_PROFILE.name ) then
144 | for option, noIgnore in pairs(FLATTENDED_OPTIONS) do
145 | if ( noIgnore == 1 and profileData[option] ~= SAVED_PROFILE[option] ) then
146 | profileData[option] = SAVED_PROFILE[option];
147 | end
148 | end
149 | end
150 | end
151 | end
152 |
153 | function CreateNewRaidProfile(name, baseOnProfile)
154 | if ( not PROFILES or not name ) then
155 | return;
156 | end
157 |
158 | local profile
159 | if ( baseOnProfile and baseOnProfile ~= DEFAULTS ) then
160 | for _, profileData in ipairs(PROFILES) do
161 | if ( profileData.name == baseOnProfile ) then
162 | profile = CopyTable(profileData);
163 | break;
164 | end
165 | end
166 | else
167 | profile = CopyTable(DEFAULT_PROFILE);
168 | end
169 |
170 | profile.name = name;
171 | table.insert(PROFILES, profile);
172 | end
173 |
174 | function DeleteRaidProfile(profile)
175 | if ( not PROFILES or not profile ) then
176 | return;
177 | end
178 |
179 | if ( type(profile) == "number" ) then
180 | table.remove(PROFILES, profile);
181 | else
182 | for index, profileData in ipairs(PROFILES) do
183 | if ( profileData.name == profile ) then
184 | table.remove(PROFILES, index);
185 | break;
186 | end
187 | end
188 | end
189 | end
190 |
191 | function SaveRaidProfileCopy(profile)
192 | if ( not PROFILES or not profile ) then
193 | return;
194 | end
195 |
196 | for _, profileData in ipairs(PROFILES) do
197 | if ( profileData.name == profile ) then
198 | SAVED_PROFILE = CopyTable(profileData);
199 | break;
200 | end
201 | end
202 | end
203 |
204 | function SetRaidProfileOption(profile, optionName, value)
205 | if ( not PROFILES or not profile or not optionName ) then
206 | return;
207 | end
208 |
209 | for index, profileData in ipairs(PROFILES) do
210 | if ( profileData.name == profile ) then
211 | PROFILES[index][optionName] = value;
212 | break;
213 | end
214 | end
215 | end
216 |
217 | function GetRaidProfileOption(profile, optionName)
218 | if ( not PROFILES or not profile or not optionName ) then
219 | return;
220 | end
221 |
222 | for _, profileData in ipairs(PROFILES) do
223 | if ( profileData.name == profile ) then
224 | return profileData[optionName];
225 | end
226 | end
227 | end
228 |
229 | function GetRaidProfileFlattenedOptions(profile)
230 | if ( not PROFILES or not profile ) then
231 | return;
232 | end
233 |
234 | for _, profileData in ipairs(PROFILES) do
235 | if ( profileData.name == profile ) then
236 | local flattenedOptions = {};
237 | for option, value in pairs(profileData) do
238 | if FLATTENDED_OPTIONS[option] then
239 | flattenedOptions[option] = value;
240 | end
241 | end
242 | return flattenedOptions;
243 | end
244 | end
245 | end
246 |
247 | function SetRaidProfileSavedPosition(profile, isDynamic, topPoint, topOffset, bottomPoint, bottomOffset, leftPoint, leftOffset)
248 | if ( not PROFILES or not profile ) then
249 | return;
250 | end
251 |
252 | for _, profileData in ipairs(PROFILES) do
253 | if ( profileData.name == profile ) then
254 | profileData.isDynamic = isDynamic;
255 | profileData.topPoint = topPoint;
256 | profileData.topOffset = topOffset;
257 | profileData.bottomPoint = bottomPoint;
258 | profileData.bottomOffset = bottomOffset;
259 | profileData.leftPoint = leftPoint;
260 | profileData.leftOffset = leftOffset;
261 | break;
262 | end
263 | end
264 | end
265 |
266 | function GetRaidProfileSavedPosition(profile)
267 | if ( not PROFILES or not profile ) then
268 | return;
269 | end
270 |
271 | for _, profileData in ipairs(PROFILES) do
272 | if ( profileData.name == profile ) then
273 | return profileData.isDynamic, profileData.topPoint, profileData.topOffset, profileData.bottomPoint, profileData.bottomOffset, profileData.leftPoint, profileData.leftOffset;
274 | end
275 | end
276 | end
277 |
278 | function GetMaxNumCUFProfiles()
279 | return MAX_CUF_PROFILES;
280 | end
281 |
282 | function SetActiveRaidProfile(profile)
283 | CUF_CVar:SetValue("CVAR_SET_ACTIVE_CUF_PROFILE", profile);
284 | end
285 |
286 | function GetActiveRaidProfile()
287 | return CUF_CVar:GetValue("CVAR_SET_ACTIVE_CUF_PROFILE");
288 | end
289 |
290 | CUF_CVar = {}
291 | function CUF_CVar:SetValue(cvar, value)
292 | if ( not CUF_CONFIG ) then
293 | return;
294 | end
295 |
296 | CUF_CONFIG[cvar] = value;
297 | end
298 |
299 | function CUF_CVar:GetValue(cvar, addon)
300 | if ( not CUF_CONFIG ) then
301 | return;
302 | end
303 |
304 | return CUF_CONFIG[cvar];
305 | end
306 |
307 | function CUF_CVar:GetCVarBool(cvar)
308 | return self:GetValue(cvar) == "1" and true or false
309 | end
310 |
--------------------------------------------------------------------------------
/CompactRaidFrame/CompactPartyFrame.lua:
--------------------------------------------------------------------------------
1 | function CompactPartyFrame_OnLoad(self)
2 | self.applyFunc = CompactRaidGroup_ApplyFunctionToAllFrames;
3 |
4 | local unitFrame = _G[self:GetName().."Member1"];
5 | CompactUnitFrame_SetUnit(unitFrame, "player");
6 | CompactUnitFrame_SetUpFrame(unitFrame, DefaultCompactUnitFrameSetup);
7 | CompactUnitFrame_SetUpdateAllEvent(unitFrame, "PARTY_MEMBERS_CHANGED");
8 |
9 | for i=1, MEMBERS_PER_RAID_GROUP do
10 | if ( i > 1 ) then --Player has to be done separately.
11 | local unitFrame = _G[self:GetName().."Member"..i];
12 | CompactUnitFrame_SetUnit(unitFrame, "party"..(i-1));
13 | CompactUnitFrame_SetUpFrame(unitFrame, DefaultCompactUnitFrameSetup);
14 | CompactUnitFrame_SetUpdateAllEvent(unitFrame, "PARTY_MEMBERS_CHANGED");
15 | end
16 | end
17 |
18 | self.title:SetText(PARTY);
19 | self.title:Disable();
20 | end
21 |
22 | function CompactPartyFrame_Generate()
23 | local frame = CompactPartyFrame;
24 | local didCreate = false;
25 | if ( not frame ) then
26 | frame = CreateFrame("Frame", "CompactPartyFrame", UIParent, "CompactPartyFrameTemplate");
27 | CompactRaidGroup_UpdateBorder(frame);
28 | didCreate = true;
29 | end
30 |
31 | return frame, didCreate;
32 | end
33 |
--------------------------------------------------------------------------------
/CompactRaidFrame/CompactPartyFrame.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 | CompactPartyFrame_OnLoad(self);
9 |
10 |
11 | --Overriding the RaidGroup OnEvent.
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/CompactRaidFrame/CompactRaidFrame.toc:
--------------------------------------------------------------------------------
1 | ## Interface: 30300
2 | ## Title: Compact Raid Frames
3 | ## Author: RomanSpector & Blizzard
4 | ## Notes: backport Blizzard raid frames from retail.
5 | ## Version: 1.2.2
6 | ## SavedVariables: CompactRaidFrameDB
7 |
8 |
9 | embeds.xml
10 | locales.xml
11 |
12 | Dependence\load.xml
13 | Templates\load.xml
14 | CUFProfiles\CompactUnitFrameProfiles.xml
15 |
16 | FlowContainer.lua
17 | CompactUnitFrame.xml
18 | CompactRaidGroup.xml
19 | CompactPartyFrame.xml
20 |
21 | CompactRaidFrames\CompactRaidFrameReservationManager.lua
22 | CompactRaidFrames\CompactRaidFrameContainer.xml
23 | CompactRaidFrames\CompactRaidFrameManager.xml
--------------------------------------------------------------------------------
/CompactRaidFrame/CompactRaidFrames/CompactRaidFrameContainer.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
72 |
73 |
74 |
75 |
76 |
77 |
78 | CompactRaidFrameContainer_OnLoad(self);
79 |
80 |
81 | CompactRaidFrameContainer_OnEvent(self, event, ...);
82 |
83 |
84 | CompactRaidFrameContainer_OnSizeChanged(self);
85 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/CompactRaidFrame/CompactRaidFrames/CompactRaidFrameReservationManager.lua:
--------------------------------------------------------------------------------
1 | function CompactRaidFrameReservation_NewManager(releaseFunc)
2 | return { unusedFrames = {}, reservations = {}, releaseFunc = releaseFunc };
3 | end
4 |
5 | function CompactRaidFrameReservation_GetFrame(self, key)
6 | assert(key);
7 | local frame = self.reservations[key];
8 | if ( not frame and #self.unusedFrames > 0 ) then
9 | frame = tremove(self.unusedFrames, #self.unusedFrames);
10 | CompactRaidFrameReservation_RegisterReservation(self, frame, key);
11 | end
12 | return frame;
13 | end
14 |
15 | function CompactRaidFrameReservation_RegisterReservation(self, frame, key)
16 | assert(key);
17 | assert(not self.reservations[key] or self.reservations[key] == frame);
18 | self.reservations[key] = frame;
19 | end
20 |
21 | function CompactRaidFrameReservation_ReleaseUnusedReservations(self)
22 | for key, frame in pairs(self.reservations) do
23 | if ( frame and not frame.inUse ) then
24 | if ( self.releaseFunc ) then
25 | self.releaseFunc(frame);
26 | end
27 | self.reservations[key] = false;
28 | tinsert(self.unusedFrames, frame);
29 | end
30 | end
31 | end
32 |
33 | function CompactRaidFrameReservation_GetReservation(self, key)
34 | assert(key);
35 | return self.reservations[key];
36 | end
37 |
--------------------------------------------------------------------------------
/CompactRaidFrame/CompactRaidGroup.lua:
--------------------------------------------------------------------------------
1 | function CompactRaidGroup_OnLoad(self)
2 | self.title:Disable();
3 |
4 | self:RegisterEvent("RAID_ROSTER_UPDATE");
5 | self.applyFunc = CompactRaidGroup_ApplyFunctionToAllFrames;
6 | end
7 |
8 | function CompactRaidGroup_OnEvent(self, event, ...)
9 | if InCombatLockdown() then
10 | return self:RegisterEvent("PLAYER_REGEN_ENABLED");
11 | end
12 |
13 | if ( event == "RAID_ROSTER_UPDATE" ) then
14 | CompactRaidGroup_UpdateUnits(self);
15 | elseif ( event == "PLAYER_REGEN_ENABLED" ) then
16 | CompactRaidGroup_UpdateUnits(self);
17 | self:UnregisterEvent("PLAYER_REGEN_ENABLED");
18 | end
19 | end
20 |
21 | function CompactRaidGroup_ApplyFunctionToAllFrames(frame, updateSpecifier, func, ...)
22 | if ( updateSpecifier == "normal" or updateSpecifier == "all" ) then
23 | for i=1, MEMBERS_PER_RAID_GROUP do
24 | local unitFrame = _G[frame:GetName().."Member"..i];
25 | func(unitFrame, ...);
26 | end
27 | elseif ( updateSpecifier == "group" ) then
28 | func(frame, ...);
29 | end
30 | end
31 |
32 | function CompactRaidGroup_GenerateForGroup(groupIndex)
33 | local didCreate = false;
34 | local frame = _G["CompactRaidGroup"..groupIndex]
35 | if ( not frame ) then
36 | frame = CreateFrame("Frame", "CompactRaidGroup"..groupIndex, UIParent, "CompactRaidGroupTemplate");
37 | CompactRaidGroup_InitializeForGroup(frame, groupIndex);
38 | --CompactRaidGroup_UpdateLayout(frame); --Update border calls UpdateLayout.
39 | CompactRaidGroup_UpdateBorder(frame);
40 | didCreate = true;
41 | end
42 | return frame, didCreate;
43 | end
44 |
45 | function CompactRaidGroup_InitializeForGroup(frame, groupIndex)
46 | frame:SetID(groupIndex);
47 | for i=1, MEMBERS_PER_RAID_GROUP do
48 | local unitFrame = _G[frame:GetName().."Member"..i];
49 | CompactUnitFrame_SetUpFrame(unitFrame, DefaultCompactUnitFrameSetup);
50 | CompactUnitFrame_SetUpdateAllEvent(unitFrame, "RAID_ROSTER_UPDATE");
51 | end
52 | CompactRaidGroup_UpdateUnits(frame);
53 | frame.title:SetFormattedText(GROUP_NUMBER, groupIndex);
54 | end
55 |
56 | function CompactRaidGroup_UpdateUnits(frame)
57 | local groupIndex = frame:GetID();
58 | local frameIndex = 1;
59 | if ( IsInRaid() ) then
60 | for i=1, GetNumGroupMembers() do
61 | local name, rank, subgroup = GetRaidRosterInfo(i);
62 | if ( subgroup == groupIndex and frameIndex <= MEMBERS_PER_RAID_GROUP ) then
63 | CompactUnitFrame_SetUnit(_G[frame:GetName().."Member"..frameIndex], "raid"..i);
64 | frameIndex = frameIndex + 1;
65 | end
66 | end
67 |
68 | for i=frameIndex, MEMBERS_PER_RAID_GROUP do
69 | local unitFrame = _G[frame:GetName().."Member"..i];
70 | CompactUnitFrame_SetUnit(unitFrame, nil);
71 | end
72 | end
73 | end
74 |
75 | function CompactRaidGroup_UpdateLayout(frame)
76 | local totalHeight = frame.title:GetHeight();
77 | local totalWidth = 0;
78 | if ( CUF_HORIZONTAL_GROUPS ) then
79 | frame.title:ClearAllPoints();
80 | frame.title:SetPoint("TOPLEFT");
81 |
82 | local frame1 = _G[frame:GetName().."Member1"];
83 | frame1:ClearAllPoints();
84 | frame1:SetPoint("TOPLEFT", frame, "TOPLEFT", 0, -frame.title:GetHeight());
85 |
86 | for i=2, MEMBERS_PER_RAID_GROUP do
87 | local unitFrame = _G[frame:GetName().."Member"..i];
88 | unitFrame:ClearAllPoints();
89 | unitFrame:SetPoint("LEFT", _G[frame:GetName().."Member"..(i-1)], "RIGHT", 0, 0);
90 | end
91 | totalHeight = totalHeight + _G[frame:GetName().."Member1"]:GetHeight();
92 | totalWidth = totalWidth + _G[frame:GetName().."Member1"]:GetWidth() * MEMBERS_PER_RAID_GROUP;
93 | else
94 | frame.title:ClearAllPoints();
95 | frame.title:SetPoint("TOP");
96 |
97 | local frame1 = _G[frame:GetName().."Member1"];
98 | frame1:ClearAllPoints();
99 | frame1:SetPoint("TOP", frame, "TOP", 0, -frame.title:GetHeight());
100 |
101 | for i=2, MEMBERS_PER_RAID_GROUP do
102 | local unitFrame = _G[frame:GetName().."Member"..i];
103 | unitFrame:ClearAllPoints();
104 | unitFrame:SetPoint("TOP", _G[frame:GetName().."Member"..(i-1)], "BOTTOM", 0, 0);
105 | end
106 | totalHeight = totalHeight + _G[frame:GetName().."Member1"]:GetHeight() * MEMBERS_PER_RAID_GROUP;
107 | totalWidth = totalWidth + _G[frame:GetName().."Member1"]:GetWidth();
108 | end
109 |
110 | if ( frame.borderFrame:IsShown() ) then
111 | totalWidth = totalWidth + 12;
112 | totalHeight = totalHeight + 4;
113 | end
114 |
115 | frame:SetSize(totalWidth, totalHeight);
116 | end
117 |
118 | function CompactRaidGroup_UpdateBorder(frame)
119 | if ( CUF_SHOW_BORDER ) then
120 | frame.borderFrame:Show();
121 | else
122 | frame.borderFrame:Hide();
123 | end
124 | CompactRaidGroup_UpdateLayout(frame);
125 | end
126 |
127 | function CompactRaidGroup_StartMoving(frame)
128 | --Move the frame right onto the cursor.
129 | local cursorX, cursorY = GetCursorPosition();
130 | frame:ClearAllPoints();
131 | frame:SetPoint("TOP", UIParent, "BOTTOMLEFT", cursorX / UIParent:GetScale(), cursorY / UIParent:GetScale() + 10);
132 |
133 | frame:StartMoving();
134 | MOVING_COMPACT_RAID_FRAME = frame;
135 | end
136 |
137 | function CompactRaidGroup_StopMoving(frame)
138 | frame:StopMovingOrSizing();
139 | if ( MOVING_COMPACT_RAID_FRAME == frame ) then
140 | MOVING_COMPACT_RAID_FRAME = nil;
141 | end
142 | end
143 |
144 | function CompactRaidGroup_StopAllMoving()
145 | if ( MOVING_COMPACT_RAID_FRAME ) then
146 | CompactRaidGroup_StopMoving(MOVING_COMPACT_RAID_FRAME)
147 | end
148 | end
--------------------------------------------------------------------------------
/CompactRaidFrame/CompactRaidGroup.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
16 |
21 |
28 |
35 |
42 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
114 |
115 |
116 |
117 |
118 |
119 |
120 | CompactRaidGroup_OnLoad(self);
121 |
122 |
123 | CompactRaidGroup_OnEvent(self, event, ...);
124 |
125 |
126 |
127 |
128 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Dependence/Atlas.lua:
--------------------------------------------------------------------------------
1 | ATLAS_INFO_STORAGE = ATLAS_INFO_STORAGE or {};
2 | --[[
3 | ["atlasName"] =
4 | {
5 | width,
6 | height,
7 | left,
8 | right,
9 | top,
10 | bottom,
11 | tilesHoriz,
12 | tilesVert,
13 | texturePath
14 | },]]
15 |
16 | ATLAS_INFO_STORAGE["UI-Frame-DiamondMetal-CornerBottomLeft"] =
17 | {
18 | 32,
19 | 32,
20 | 0.015625,
21 | 0.515625,
22 | 0.269531,
23 | 0.394531,
24 | false,
25 | false,
26 | "Interface\\AddOns\\CompactRaidFrame\\Media\\FrameGeneral\\UIFrameDiamondMetal"
27 | };
28 | ATLAS_INFO_STORAGE["UI-Frame-DiamondMetal-CornerBottomRight"] =
29 | {
30 | 32,
31 | 32,
32 | 0.015625,
33 | 0.515625,
34 | 0.402344,
35 | 0.527344,
36 | false,
37 | false,
38 | "Interface\\AddOns\\CompactRaidFrame\\Media\\FrameGeneral\\UIFrameDiamondMetal"
39 | };
40 | ATLAS_INFO_STORAGE["UI-Frame-DiamondMetal-CornerTopLeft"] =
41 | {
42 | 32,
43 | 32,
44 | 0.015625,
45 | 0.515625,
46 | 0.535156,
47 | 0.660156,
48 | false,
49 | false,
50 | "Interface\\AddOns\\CompactRaidFrame\\Media\\FrameGeneral\\UIFrameDiamondMetal"
51 | };
52 | ATLAS_INFO_STORAGE["UI-Frame-DiamondMetal-CornerTopRight"] =
53 | {
54 | 32,
55 | 32,
56 | 0.015625,
57 | 0.515625,
58 | 0.667969,
59 | 0.792969,
60 | false,
61 | false,
62 | "Interface\\AddOns\\CompactRaidFrame\\Media\\FrameGeneral\\UIFrameDiamondMetal"
63 | };
64 | ATLAS_INFO_STORAGE["_UI-Frame-DiamondMetal-EdgeBottom"] =
65 | {
66 | 32,
67 | 32,
68 | 0,
69 | 0.5,
70 | 0.00390625,
71 | 0.128906,
72 | false,
73 | false,
74 | "Interface\\AddOns\\CompactRaidFrame\\Media\\FrameGeneral\\UIFrameDiamondMetal"
75 | };
76 | ATLAS_INFO_STORAGE["_UI-Frame-DiamondMetal-EdgeTop"] =
77 | {
78 | 32,
79 | 32,
80 | 0,
81 | 0.5,
82 | 0.136719,
83 | 0.261719,
84 | false,
85 | false,
86 | "Interface\\AddOns\\CompactRaidFrame\\Media\\FrameGeneral\\UIFrameDiamondMetal"
87 | };
88 |
89 | ATLAS_INFO_STORAGE["!UI-Frame-DiamondMetal-EdgeLeft"] =
90 | {
91 | 32,
92 | 32,
93 | 0.0078125,
94 | 0.257812,
95 | 0,
96 | 1,
97 | false,
98 | false,
99 | "Interface\\AddOns\\CompactRaidFrame\\Media\\FrameGeneral\\UIFrameDiamondMetalVertical"
100 | };
101 | ATLAS_INFO_STORAGE["!UI-Frame-DiamondMetal-EdgeRight"] =
102 | {
103 | 32,
104 | 32,
105 | 0.273438,
106 | 0.523438,
107 | 0,
108 | 1,
109 | false,
110 | false,
111 | "Interface\\AddOns\\CompactRaidFrame\\Media\\FrameGeneral\\UIFrameDiamondMetalVertical"
112 | };
113 |
114 | ATLAS_INFO_STORAGE["Raid-Icon-SummonAccepted"] =
115 | {
116 | 32,
117 | 32,
118 | 0.0078125,
119 | 0.257812,
120 | 0.015625,
121 | 0.515625,
122 | false,
123 | false,
124 | "Interface\\AddOns\\CompactRaidFrame\\Media\\RaidFrame\\RaidFrameSummon"
125 | };
126 | ATLAS_INFO_STORAGE["Raid-Icon-SummonDeclined"] =
127 | {
128 | 32,
129 | 32,
130 | 0.273438,
131 | 0.523438,
132 | 0.015625,
133 | 0.515625,
134 | false,
135 | false,
136 | "Interface\\AddOns\\CompactRaidFrame\\Media\\RaidFrame\\RaidFrameSummon"
137 | };
138 | ATLAS_INFO_STORAGE["Raid-Icon-SummonPending"] =
139 | {
140 | 32,
141 | 32,
142 | 0.539062,
143 | 0.789062,
144 | 0.015625,
145 | 0.515625,
146 | false,
147 | false,
148 | "Interface\\AddOns\\CompactRaidFrame\\Media\\RaidFrame\\RaidFrameSummon"
149 | };
150 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Dependence/AuraUtil.lua:
--------------------------------------------------------------------------------
1 | AuraUtil = {};
2 | local function FindAuraRecurse(predicate, unit, filter, auraIndex, predicateArg1, predicateArg2, predicateArg3, ...)
3 | if ... == nil then
4 | return nil; -- Not found
5 | end
6 | if predicate(predicateArg1, predicateArg2, predicateArg3, ...) then
7 | return ...;
8 | end
9 | auraIndex = auraIndex + 1;
10 | return FindAuraRecurse(predicate, unit, filter, auraIndex, predicateArg1, predicateArg2, predicateArg3, UnitAura(unit, auraIndex, filter));
11 | end
12 | -- Find an aura by any predicate, you can pass in up to 3 predicate specific parameters
13 | -- The predicate will also receive all aura params, if the aura data matches return true
14 | function AuraUtil.FindAura(predicate, unit, filter, predicateArg1, predicateArg2, predicateArg3)
15 | local auraIndex = 1;
16 | return FindAuraRecurse(predicate, unit, filter, auraIndex, predicateArg1, predicateArg2, predicateArg3, UnitAura(unit, auraIndex, filter));
17 | end
18 |
19 | do
20 |
21 | local function NamePredicate(auraNameToFind, _, _, auraName)
22 | return auraNameToFind == auraName;
23 | end
24 | -- Finds the first aura that matches the name
25 | -- Notes:
26 | -- aura names are not unique!
27 | -- aura names are localized, what works in one locale might not work in another
28 | -- consider that in English two auras might have different names, but once localized they have the same name, so even using the localized aura name in a search it could result in different behavior
29 | -- the unit could have multiple auras with the same name, this will only find the first
30 | function AuraUtil.FindAuraByName(auraName, unit, filter)
31 | return AuraUtil.FindAura(NamePredicate, unit, filter, auraName);
32 | end
33 |
34 | end
35 |
36 | do
37 |
38 | local function ForEachAuraHelper(unit, filter, func, continuationToken, ...)
39 | -- continuationToken is the first return value of UnitAuraSlots()
40 | local n = select('#', ...);
41 | for i=1, n do
42 | local slot = select(i, ...);
43 | if func(UnitAuraBySlot(unit, slot)) then
44 | -- if func returns true then no further slots are needed, so don't return continuationToken
45 | return nil;
46 | end
47 | end
48 | return continuationToken;
49 | end
50 |
51 | function AuraUtil.ForEachAura(unit, filter, maxCount, func)
52 | if maxCount and maxCount <= 0 then
53 | return;
54 | end
55 | local continuationToken;
56 | repeat
57 | -- continuationToken is the first return value of UnitAuraSltos
58 | continuationToken = ForEachAuraHelper(unit, filter, func, UnitAuraSlots(unit, filter, maxCount, continuationToken));
59 | until continuationToken == nil;
60 | end
61 |
62 | end
--------------------------------------------------------------------------------
/CompactRaidFrame/Dependence/C_Texture.lua:
--------------------------------------------------------------------------------
1 | C_Texture = C_Texture or {};
2 | local CONST_ATLAS_WIDTH = 1;
3 | local CONST_ATLAS_HEIGHT = 2;
4 | local CONST_ATLAS_LEFT = 3;
5 | local CONST_ATLAS_RIGHT = 4;
6 | local CONST_ATLAS_TOP = 5;
7 | local CONST_ATLAS_BOTTOM = 6;
8 | local CONST_ATLAS_TILESHORIZ = 7;
9 | local CONST_ATLAS_TILESVERT = 8;
10 | local CONST_ATLAS_TEXTUREPATH = 9;
11 |
12 | function C_Texture.GetAtlasInfo( atlas )
13 | assert(atlas, "C_Texture.GetAtlasInfo: AtlasName must be specified");
14 | assert(ATLAS_INFO_STORAGE[atlas], "C_Texture.GetAtlasInfo: Atlas named "..atlas.." does not exist");
15 | local info = ATLAS_INFO_STORAGE[atlas];
16 | return {
17 | width = info[CONST_ATLAS_WIDTH],
18 | height = info[CONST_ATLAS_HEIGHT],
19 | leftTexCoord = info[CONST_ATLAS_LEFT],
20 | rightTexCoord = info[CONST_ATLAS_RIGHT],
21 | topTexCoord = info[CONST_ATLAS_TOP],
22 | bottomTexCoord = info[CONST_ATLAS_BOTTOM],
23 | tilesHorizontally = info[CONST_ATLAS_TILESHORIZ],
24 | tilesVertically = info[CONST_ATLAS_TILESVERT],
25 | filename = info[CONST_ATLAS_TEXTUREPATH],
26 | };
27 | end
28 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Dependence/C_TimerAugment.lua:
--------------------------------------------------------------------------------
1 | if ( C_Timer ) then return end
2 |
3 | local TickerPrototype = {};
4 | local TickerMetatable = {
5 | __index = TickerPrototype,
6 | __metatable = true, --Probably not needed, but if I don't put this here someone is going to mess with this metatable and end up tainting everything...
7 | };
8 |
9 | C_Timer = CreateFrame("Frame", "C_Timer");
10 | C_Timer.schedule = {};
11 | C_Timer:SetScript("OnUpdate", function(self, elapsed)
12 | for timestamp, callback in pairs(self.schedule) do
13 | if timestamp <= GetTime() then
14 | callback();
15 | self.schedule[timestamp] = nil;
16 | end
17 | end
18 | end)
19 |
20 | C_Timer.After = function(duration, callback)
21 | C_Timer.schedule[GetTime() + duration] = callback;
22 | end
23 |
24 | --Creates and starts a ticker that calls callback every duration seconds for N iterations.
25 | --If iterations is nil, the ticker will loop until cancelled.
26 | --
27 | --If callback throws a Lua error, the ticker will stop firing.
28 | function C_Timer.NewTicker(duration, callback, iterations)
29 | local ticker = setmetatable({}, TickerMetatable);
30 | ticker._remainingIterations = iterations;
31 | ticker._callback = function()
32 | if ( not ticker._cancelled ) then
33 | callback(ticker);
34 |
35 | --Make sure we weren't cancelled during the callback
36 | if ( not ticker._cancelled ) then
37 | if ( ticker._remainingIterations ) then
38 | ticker._remainingIterations = ticker._remainingIterations - 1;
39 | end
40 | if ( not ticker._remainingIterations or ticker._remainingIterations > 0 ) then
41 | C_Timer.After(duration, ticker._callback);
42 | end
43 | end
44 | end
45 | end;
46 |
47 | C_Timer.After(duration, ticker._callback);
48 | return ticker;
49 | end
50 |
51 | --Creates and starts a cancellable timer that calls callback after duration seconds.
52 | --Note that C_Timer.NewTimer is significantly more expensive than C_Timer.After and should
53 | --only be used if you actually need any of its additional functionality.
54 | --
55 | --While timers are currently just tickers with an iteration count of 1, this is likely
56 | --to change in the future and shouldn't be relied on.
57 | function C_Timer.NewTimer(duration, callback)
58 | return C_Timer.NewTicker(duration, callback, 1);
59 | end
60 |
61 | --Cancels a ticker or timer. May be safely called within the ticker's callback in which
62 | --case the ticker simply won't be started again.
63 | --Cancel is guaranteed to be idempotent.
64 | function TickerPrototype:Cancel()
65 | self._cancelled = true;
66 | end
67 |
68 | function TickerPrototype:IsCancelled()
69 | return self._cancelled;
70 | end
71 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Dependence/Color.lua:
--------------------------------------------------------------------------------
1 | ColorMixin = {};
2 | function CreateColor(r, g, b, a)
3 | local color = CreateFromMixins(ColorMixin);
4 | color:OnLoad(r, g, b, a);
5 | return color;
6 | end
7 |
8 | function ColorMixin:OnLoad(r, g, b, a)
9 | self:SetRGBA(r, g, b, a);
10 | end
11 |
12 | function ColorMixin:IsEqualTo(otherColor)
13 | return self.r == otherColor.r
14 | and self.g == otherColor.g
15 | and self.b == otherColor.b
16 | and self.a == otherColor.a;
17 | end
18 |
19 | function ColorMixin:GetRGB()
20 | return self.r, self.g, self.b;
21 | end
22 |
23 | function ColorMixin:GetRGBAsBytes()
24 | return self.r * 255, self.g * 255, self.b * 255;
25 | end
26 |
27 | function ColorMixin:GetRGBA()
28 | return self.r, self.g, self.b, self.a;
29 | end
30 |
31 | function ColorMixin:GetRGBAAsBytes()
32 | return self.r * 255, self.g * 255, self.b * 255, (self.a or 1) * 255;
33 | end
34 |
35 | function ColorMixin:SetRGBA(r, g, b, a)
36 | self.r = r;
37 | self.g = g;
38 | self.b = b;
39 | self.a = a;
40 | end
41 |
42 | function ColorMixin:SetRGB(r, g, b)
43 | self:SetRGBA(r, g, b, nil);
44 | end
45 |
46 | function ColorMixin:GenerateHexColor()
47 | return ("ff%.2x%.2x%.2x"):format(self:GetRGBAsBytes());
48 | end
49 |
50 | function ColorMixin:GenerateHexColorMarkup()
51 | return "|c"..self:GenerateHexColor();
52 | end
53 |
54 | function ColorMixin:WrapTextInColorCode(text)
55 | return WrapTextInColorCode(text, self:GenerateHexColor());
56 | end
57 |
58 | function WrapTextInColorCode(text, colorHexString)
59 | return ("|c%s%s|r"):format(colorHexString, text);
60 | end
61 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Dependence/MathUtil.lua:
--------------------------------------------------------------------------------
1 | function Lerp(startValue, endValue, amount)
2 | return (1 - amount) * startValue + amount * endValue;
3 | end
4 |
5 | function Clamp(value, min, max)
6 | if value > max then
7 | return max;
8 | elseif value < min then
9 | return min;
10 | end
11 | return value;
12 | end
13 |
14 | function Saturate(value)
15 | return Clamp(value, 0.0, 1.0);
16 | end
17 |
18 | function Wrap(value, max)
19 | return (value - 1) % max + 1;
20 | end
21 |
22 | function ClampDegrees(value)
23 | return ClampMod(value, 360);
24 | end
25 |
26 | function ClampMod(value, mod)
27 | return ((value % mod) + mod) % mod;
28 | end
29 |
30 | function NegateIf(value, condition)
31 | return condition and -value or value;
32 | end
33 |
34 | function PercentageBetween(value, startValue, endValue)
35 | if startValue == endValue then
36 | return 0.0;
37 | end
38 | return (value - startValue) / (endValue - startValue);
39 | end
40 |
41 | function ClampedPercentageBetween(value, startValue, endValue)
42 | return Saturate(PercentageBetween(value, startValue, endValue));
43 | end
44 |
45 | local TARGET_FRAME_PER_SEC = 60.0;
46 | function DeltaLerp(startValue, endValue, amount, timeSec)
47 | return Lerp(startValue, endValue, Saturate(amount * timeSec * TARGET_FRAME_PER_SEC));
48 | end
49 |
50 | function FrameDeltaLerp(startValue, endValue, amount, elapsed)
51 | return DeltaLerp(startValue, endValue, amount, elapsed);
52 | end
53 |
54 | function RandomFloatInRange(minValue, maxValue)
55 | return Lerp(minValue, maxValue, math.random());
56 | end
57 |
58 | function Round(value)
59 | if value < 0.0 then
60 | return math.ceil(value - .5);
61 | end
62 | return math.floor(value + .5);
63 | end
64 |
65 | function Square(value)
66 | return value * value;
67 | end
68 |
69 | function CalculateDistanceSq(x1, y1, x2, y2)
70 | local dx = x2 - x1;
71 | local dy = y2 - y1;
72 | return (dx * dx) + (dy * dy);
73 | end
74 |
75 | function CalculateDistance(x1, y1, x2, y2)
76 | return math.sqrt(CalculateDistanceSq(x1, y1, x2, y2));
77 | end
78 |
79 | function CalculateAngleBetween(x1, y1, x2, y2)
80 | return math.atan2(y2 - y1, x2 - x1);
81 | end
82 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Dependence/Mixin.lua:
--------------------------------------------------------------------------------
1 | ---------------
2 | -- where ... are the mixins to mixin
3 | function Mixin(object, ...)
4 | for i = 1, select("#", ...) do
5 | local mixin = select(i, ...);
6 | for k, v in pairs(mixin) do
7 | object[k] = v;
8 | end
9 | end
10 | return object;
11 | end
12 | -- where ... are the mixins to mixin
13 | function CreateFromMixins(...)
14 | return Mixin({}, ...)
15 | end
16 |
17 | function CreateAndInitFromMixin(mixin, ...)
18 | local object = CreateFromMixins(mixin);
19 | object:Init(...);
20 | return object;
21 | end
22 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Dependence/PartyUtil.lua:
--------------------------------------------------------------------------------
1 | PartyUtil = {};
2 |
3 | local unitTags = { "player", "party1", "party2", "party3", "party4" };
4 |
5 | function PartyUtil.GetMinLevel()
6 | local minLevel = math.huge;
7 | for index, unit in ipairs(unitTags) do
8 | if UnitExists(unit) then
9 | minLevel = math.min(minLevel, UnitLevel(unit));
10 | end
11 | end
12 | return minLevel;
13 | end
14 |
15 | local function GetChromieTimeLocationString(unitToken)
16 | local expansionID = UnitChromieTimeID(unitToken);
17 | local option = C_ChromieTime.GetChromieTimeExpansionOption(expansionID);
18 | local expansion = option and option.name or "";
19 | if unitToken == "player" then
20 | return PARTY_PLAYER_CHROMIE_TIME_SELF_LOCATION:format(expansion);
21 | else
22 | return PARTY_PLAYER_CHROMIE_TIME_OTHER_LOCATION:format(expansion);
23 | end
24 | end
25 |
26 | local function GetChromieTimeInstructionString(inChromieTime)
27 | local factionGroup = UnitFactionGroup("player");
28 | if factionGroup == "Horde" then
29 | if inChromieTime then
30 | return PARTY_PLAYER_CHROMIE_TIME_SELF_HORDE;
31 | else
32 | return PARTY_PLAYER_CHROMIE_TIME_OTHER_HORDE;
33 | end
34 | elseif factionGroup == "Alliance" then
35 | if inChromieTime then
36 | return PARTY_PLAYER_CHROMIE_TIME_SELF_ALLIANCE;
37 | else
38 | return PARTY_PLAYER_CHROMIE_TIME_OTHER_ALLIANCE;
39 | end
40 | end
41 | end
42 |
43 | local function GetChromieTimeString(unitToken)
44 | local inChromieTime = C_PlayerInfo.IsPlayerInChromieTime();
45 | if not (inChromieTime or C_PlayerInfo.CanPlayerEnterChromieTime()) then
46 | local location = GetChromieTimeLocationString(unitToken);
47 | return PARTY_PLAYER_CHROMIE_TIME_FMT:format(location, PARTY_PLAYER_CHROMIE_TIME_INELIGIBLE);
48 | else
49 | local location = GetChromieTimeLocationString(inChromieTime and "player" or unitToken);
50 | local instruction = GetChromieTimeInstructionString(inChromieTime);
51 | return PARTY_PLAYER_CHROMIE_TIME_FMT:format(location, instruction);
52 | end
53 | end
54 |
55 | local function GetShardedString(unitToken)
56 | if UnitInPartyShard("player") then
57 | return PARTY_PLAYER_SHARDED_TARGET_NOT_IN_PARTY_PHASE;
58 | else
59 | if UnitInPartyShard(unitToken) then
60 | return PARTY_PLAYER_SHARDED_NOT_IN_PARTY_SHARD;
61 | else
62 | return PARTY_PLAYER_SHARDED_NEITHER_IN_PARTY_SHARD;
63 | end
64 | end
65 | end
66 |
67 | function PartyUtil.GetPhasedReasonString(phaseReason, unitToken)
68 | if phaseReason == Enum.PhaseReason.WarMode then
69 | if C_PvP.IsWarModeDesired() then
70 | return PARTY_PLAYER_WARMODE_DISABLED;
71 | else
72 | return PARTY_PLAYER_WARMODE_ENABLED;
73 | end
74 | elseif phaseReason == Enum.PhaseReason.ChromieTime then
75 | return GetChromieTimeString(unitToken);
76 | elseif phaseReason == Enum.PhaseReason.Phasing then
77 | return PARTY_PHASED_MESSAGE;
78 | elseif phaseReason == Enum.PhaseReason.Sharding then
79 | return GetShardedString(unitToken);
80 | end
81 | end
82 |
83 | function GetGroupMemberCountsForDisplay()
84 | local data = GetGroupMemberCounts();
85 | data.DAMAGER = data.DAMAGER + data.NOROLE; --People without a role count as damage
86 | data.NOROLE = 0;
87 | return data;
88 | end
89 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Dependence/PixelUtil.lua:
--------------------------------------------------------------------------------
1 | PixelUtil = {};
2 |
3 | function PixelUtil.GetPixelToUIUnitFactor()
4 | local physicalWidth, physicalHeight = string.match((({GetScreenResolutions()})[GetCurrentResolution()] or ""), "(%d+).-(%d+)");
5 | physicalWidth, physicalHeight = tonumber(physicalWidth),tonumber(physicalHeight)
6 | return 768.0 / physicalHeight;
7 | end
8 |
9 | function PixelUtil.GetNearestPixelSize(uiUnitSize, layoutScale, minPixels)
10 | if uiUnitSize == 0 and (not minPixels or minPixels == 0) then
11 | return 0;
12 | end
13 |
14 | local uiUnitFactor = PixelUtil.GetPixelToUIUnitFactor();
15 | local numPixels = Round((uiUnitSize * layoutScale) / uiUnitFactor);
16 | if minPixels then
17 | if uiUnitSize < 0.0 then
18 | if numPixels > -minPixels then
19 | numPixels = -minPixels;
20 | end
21 | else
22 | if numPixels < minPixels then
23 | numPixels = minPixels;
24 | end
25 | end
26 | end
27 |
28 | return numPixels * uiUnitFactor / layoutScale;
29 | end
30 |
31 | function PixelUtil.SetWidth(region, width, minPixels)
32 | region:SetWidth(PixelUtil.GetNearestPixelSize(width, region:GetEffectiveScale(), minPixels));
33 | end
34 |
35 | function PixelUtil.SetHeight(region, height, minPixels)
36 | region:SetHeight(PixelUtil.GetNearestPixelSize(height, region:GetEffectiveScale(), minPixels));
37 | end
38 |
39 | function PixelUtil.SetSize(region, width, height, minWidthPixels, minHeightPixels)
40 | PixelUtil.SetWidth(region, width, minWidthPixels);
41 | PixelUtil.SetHeight(region, height, minHeightPixels);
42 | end
43 |
44 | function PixelUtil.SetPoint(region, point, relativeTo, relativePoint, offsetX, offsetY, minOffsetXPixels, minOffsetYPixels)
45 | region:SetPoint(point, relativeTo, relativePoint,
46 | PixelUtil.GetNearestPixelSize(offsetX, region:GetEffectiveScale(), minOffsetXPixels),
47 | PixelUtil.GetNearestPixelSize(offsetY, region:GetEffectiveScale(), minOffsetYPixels)
48 | );
49 | end
50 |
51 | function PixelUtil.SetStatusBarValue(statusBar, value)
52 | local width = statusBar:GetWidth();
53 | if width and width > 0.0 then
54 | local min, max = statusBar:GetMinMaxValues();
55 | local percent = ClampedPercentageBetween(value, min, max);
56 | if percent == 0.0 or percent == 1.0 then
57 | statusBar:SetValue(value);
58 | else
59 | local numPixels = PixelUtil.GetNearestPixelSize(statusBar:GetWidth() * percent, statusBar:GetEffectiveScale());
60 | local roundedValue = Lerp(min, max, numPixels / width);
61 | statusBar:SetValue(roundedValue);
62 | end
63 | else
64 | statusBar:SetValue(value);
65 | end
66 | end
67 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Dependence/load.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/CompactRaidFrame/FlowContainer.lua:
--------------------------------------------------------------------------------
1 | function FlowContainer_Initialize(container)
2 | container.flowFrames = {};
3 | --Default orientation to horizontal for now.
4 | FlowContainer_SetOrientation(container, "horizontal");
5 |
6 | --So far, we haven't actually used any space.
7 | container.flowMaxPrimaryUsed = 0;
8 | container.flowMaxSecondaryUsed = 0;
9 | end
10 |
11 | function FlowContainer_PauseUpdates(container)
12 | container.flowPauseUpdates = true;
13 | end
14 |
15 | function FlowContainer_ResumeUpdates(container)
16 | container.flowPauseUpdates = false;
17 | FlowContainer_DoLayout(container);
18 | end
19 |
20 | function FlowContainer_SetOrientation(container, orientation) --"vertical" or "horizontal". This is the direction it tries to fill first.
21 | container.flowOrientation = orientation;
22 | FlowContainer_DoLayout(container);
23 | end
24 |
25 | function FlowContainer_SetMaxPerLine(container, maxPerLine) --nil means we fit as much as possible.
26 | container.flowMaxPerLine = maxPerLine;
27 | FlowContainer_DoLayout(container);
28 | end
29 |
30 | function FlowContainer_SetHorizontalSpacing(container, horizontalSpacing)
31 | container.flowHorizontalSpacing = horizontalSpacing;
32 | FlowContainer_DoLayout(container);
33 | end
34 |
35 | function FlowContainer_SetVerticalSpacing(container, verticalSpacing)
36 | container.flowVerticalSpacing = verticalSpacing;
37 | FlowContainer_DoLayout(container);
38 | end
39 |
40 | function FlowContainer_AddObject(container, object)
41 | tinsert(container.flowFrames, object); --Do we want to let people choose where it will appear?
42 | FlowContainer_DoLayout(container);
43 | end
44 |
45 | function FlowContainer_AddLineBreak(container)
46 | tinsert(container.flowFrames, "linebreak");
47 | FlowContainer_DoLayout(container);
48 | end
49 |
50 | function FlowContainer_AddSpacer(container, spacerSize)
51 | tinsert(container.flowFrames, spacerSize);
52 | FlowContainer_DoLayout(container);
53 | end
54 |
55 | function FlowContainer_BeginAtomicAdd(container)
56 | tinsert(container.flowFrames, "beginatomic");
57 | FlowContainer_DoLayout(container);
58 | end
59 |
60 | function FlowContainer_EndAtomicAdd(container)
61 | tinsert(container.flowFrames, "endatomic");
62 | FlowContainer_DoLayout(container);
63 | end
64 |
65 | function FlowContainer_RemoveObject(container, object)
66 | assert(type(object) == "table"); --For now, Remove can't be used with non-widgets.
67 | for i=1, #container.flowFrames do --Used instead of tRemoveItem to eliminate dependencies.
68 | if ( container.flowFrames[i] == object ) then
69 | tremove(container.flowFrames, i);
70 | break;
71 | end
72 | end
73 | FlowContainer_DoLayout(container);
74 | end
75 |
76 | function FlowContainer_RemoveAllObjects(container)
77 | container.flowFrames = {}; --GC no worse than a table.wipe here.
78 | end
79 |
80 | function FlowContainer_GetUsedBounds(container) --Return x, y
81 | if ( container.flowOrientation == "horizontal" ) then
82 | return container.flowMaxSecondaryUsed, container.flowMaxPrimaryUsed;
83 | else
84 | return container.flowMaxPrimaryUsed, container.flowMaxSecondaryUsed;
85 | end
86 | end
87 |
88 | function FlowContainer_SetStartingOffset(container, xOffset, yOffset)
89 | if ( container.flowOrientation == "horizontal" ) then
90 | container.startingSecondaryOffset = xOffset;
91 | container.startingPrimaryOffset = -yOffset;
92 | else
93 | container.startingSecondaryOffset = -yOffset;
94 | container.startingPrimaryOffset = xOffset;
95 | end
96 | end
97 |
98 | --:GetWidth() and :GetHeight() are used in this function. --meta-comment: Comment added in case anyone ever searches all files for these.
99 | function FlowContainer_DoLayout(container)
100 | if ( container.flowPauseUpdates ) then
101 | return;
102 | end
103 |
104 | local primaryDirection, secondaryDirection;
105 | local primarySpacing, secondarySpacing;
106 | if ( container.flowOrientation == "horizontal" ) then
107 | primaryDirection = "Width";
108 | secondaryDirection = "Height";
109 | primarySpacing = container.flowHorizontalSpacing or 0;
110 | secondarySpacing = container.flowVerticalSpacing or 0;
111 | else
112 | primaryDirection = "Height";
113 | secondaryDirection = "Width";
114 | primarySpacing = container.flowVerticalSpacing or 0;
115 | secondarySpacing = container.flowHorizontalSpacing or 0;
116 | end
117 |
118 | --To make things easier to understand, I'll comment this as if it was horizontal. To see the vertical comments, just turn your head 90 degrees.
119 | local currentSecondaryLine, currentPrimaryLine = 1, 1;
120 | local currentSecondaryOffset, currentPrimaryOffset = container.startingSecondaryOffset or 0, container.startingPrimaryOffset or 0;
121 | local lineMaxSize = 0;
122 | local maxSecondaryOffset = 0;
123 | local atomicAddStart = nil;
124 | local atomicAtBeginning = nil;
125 | local i = 1;
126 | while ( i <= #container.flowFrames ) do
127 | local object = container.flowFrames[i];
128 | local doContinue = false;
129 | --If it doesn't fit on the current row, move to the next.
130 | if ( object == "linebreak" or --Force a new line
131 | type(object) == "table" and --Make sure this is an actual object before checking further.
132 | ((container.flowMaxPerLine and currentPrimaryLine > container.flowMaxPerLine) or --We went past the max number of columns
133 | currentSecondaryOffset + object["Get"..primaryDirection](object) > container["Get"..primaryDirection](container)) ) then --We went past the max pixel width.
134 |
135 | if ( not (atomicAddStart and atomicAtBeginning) ) then --If we're in an atomic add and we started at the beginning of the line, wrapping won't help us
136 | currentSecondaryOffset = 0; --Move back all the way to the left
137 | currentPrimaryLine = 1; --Reset column count
138 | currentPrimaryOffset = currentPrimaryOffset + lineMaxSize + secondarySpacing; --Move down by the size of the biggest object in the last row
139 | currentSecondaryLine = currentSecondaryLine + 1; --Move to the next row.
140 | lineMaxSize = 0;
141 | if ( atomicAddStart ) then
142 | --We wrapped around. So we want to move back to the first item in the atomic add and continue from the position we're leaving off (the new line).
143 | i = atomicAddStart;
144 | atomicAtBeginning = true;
145 | doContinue = true;
146 | end
147 | end
148 | end
149 |
150 | if ( not doContinue ) then
151 | local objectType = type(object);
152 | if ( objectType == "table" ) then --This is an actual frame
153 | --Did we completely run out of room? Assert for now. --Scratch that, we're just going to keep growing. When we have time, we'll probably want a "didn't fit" callback.
154 | --assert(currentPrimaryOffset + object["Get"..secondaryDirection](object) < container["Get"..secondaryDirection](container));
155 |
156 | --Add it.
157 | object:ClearAllPoints();
158 | if ( container.flowOrientation == "horizontal" ) then
159 | object:SetPoint("TOPLEFT", container, "TOPLEFT", currentSecondaryOffset, -currentPrimaryOffset);
160 | else
161 | object:SetPoint("TOPLEFT", container, "TOPLEFT", currentPrimaryOffset, -currentSecondaryOffset);
162 | end
163 |
164 | currentSecondaryOffset = currentSecondaryOffset + object["Get"..primaryDirection](object) + primarySpacing;
165 |
166 | if ( not atomicAddStart ) then --If we're in the middle of an atomic add, we'll save off the last part when we finish the add.
167 | maxSecondaryOffset = max(maxSecondaryOffset, currentSecondaryOffset);
168 | end
169 |
170 | currentPrimaryLine = currentPrimaryLine + 1;
171 | lineMaxSize = max(lineMaxSize, object["Get"..secondaryDirection](object));
172 | elseif ( objectType == "number" ) then --This is a spacer.
173 | currentSecondaryOffset = currentSecondaryOffset + object;
174 | elseif ( objectType == "string" ) then
175 | if ( object == "beginatomic" ) then
176 | if ( currentSecondaryOffset == 0 ) then
177 | atomicAtBeginning = true; --If we're already at the top, we don't want to move anything to the next row. (There's no way it would help.)
178 | end
179 | atomicAddStart = i + 1;
180 | elseif ( object == "endatomic" ) then
181 | maxSecondaryOffset = max(maxSecondaryOffset, currentSecondaryOffset); --We weren't updating the max offset while in an atomic add, so we have to do it now.
182 | atomicAddStart = nil;
183 | atomicAtBeginning = nil;
184 | end
185 | end
186 | i = i + 1;
187 | end
188 | end
189 |
190 | --Save off how much we actually used.
191 | container.flowMaxPrimaryUsed = currentPrimaryOffset + lineMaxSize;
192 | container.flowMaxSecondaryUsed = maxSecondaryOffset;
193 | end
194 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/AceAddon-3.0/AceAddon-3.0.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/AceComm-3.0/AceComm-3.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/AceConsole-3.0/AceConsole-3.0.lua:
--------------------------------------------------------------------------------
1 | --- **AceConsole-3.0** provides registration facilities for slash commands.
2 | -- You can register slash commands to your custom functions and use the `GetArgs` function to parse them
3 | -- to your addons individual needs.
4 | --
5 | -- **AceConsole-3.0** can be embeded into your addon, either explicitly by calling AceConsole:Embed(MyAddon) or by
6 | -- specifying it as an embeded library in your AceAddon. All functions will be available on your addon object
7 | -- and can be accessed directly, without having to explicitly call AceConsole itself.\\
8 | -- It is recommended to embed AceConsole, otherwise you'll have to specify a custom `self` on all calls you
9 | -- make into AceConsole.
10 | -- @class file
11 | -- @name AceConsole-3.0
12 | -- @release $Id: AceConsole-3.0.lua 859 2009-10-05 16:09:42Z mikk $
13 | local MAJOR,MINOR = "AceConsole-3.0", 7
14 |
15 | local AceConsole, oldminor = LibStub:NewLibrary(MAJOR, MINOR)
16 |
17 | if not AceConsole then return end -- No upgrade needed
18 |
19 | AceConsole.embeds = AceConsole.embeds or {} -- table containing objects AceConsole is embedded in.
20 | AceConsole.commands = AceConsole.commands or {} -- table containing commands registered
21 | AceConsole.weakcommands = AceConsole.weakcommands or {} -- table containing self, command => func references for weak commands that don't persist through enable/disable
22 |
23 | -- local upvalues
24 | local _G = _G
25 | local pairs = pairs
26 | local select = select
27 | local type = type
28 | local tostring = tostring
29 | local strfind = string.find
30 | local strsub = string.sub
31 | local max = math.max
32 | local format = format
33 | local tconcat = table.concat
34 | -- GLOBALS: DEFAULT_CHAT_FRAME, error, SlashCmdList, hash_SlashCmdList
35 |
36 | local tmp={}
37 | local function Print(self,frame,...)
38 | local n=0
39 | if self ~= AceConsole then
40 | n=n+1
41 | tmp[n] = "|cff33ff99"..tostring( self ).."|r:"
42 | end
43 | for i=1, select("#", ...) do
44 | n=n+1
45 | tmp[n] = tostring(select(i, ...))
46 | end
47 | frame:AddMessage( tconcat(tmp," ",1,n) )
48 | end
49 |
50 | --- Print to DEFAULT_CHAT_FRAME or given ChatFrame (anything with an .AddMessage function)
51 | -- @paramsig [chatframe ,] ...
52 | -- @param chatframe Custom ChatFrame to print to (or any frame with an .AddMessage function)
53 | -- @param ... List of any values to be printed
54 | function AceConsole:Print(...)
55 | local frame = ...
56 | if type(frame) == "table" and frame.AddMessage then -- Is first argument something with an .AddMessage member?
57 | return Print(self, frame, select(2,...))
58 | else
59 | return Print(self, DEFAULT_CHAT_FRAME, ...)
60 | end
61 | end
62 |
63 |
64 | --- Formatted (using format()) print to DEFAULT_CHAT_FRAME or given ChatFrame (anything with an .AddMessage function)
65 | -- @paramsig [chatframe ,] "format"[, ...]
66 | -- @param chatframe Custom ChatFrame to print to (or any frame with an .AddMessage function)
67 | -- @param format Format string - same syntax as standard Lua format()
68 | -- @param ... Arguments to the format string
69 | function AceConsole:Printf(...)
70 | local frame = ...
71 | if type(frame) == "table" and frame.AddMessage then -- Is first argument something with an .AddMessage member?
72 | return Print(self, frame, format(select(2,...)))
73 | else
74 | return Print(self, DEFAULT_CHAT_FRAME, format(...))
75 | end
76 | end
77 |
78 |
79 |
80 |
81 | --- Register a simple chat command
82 | -- @param command Chat command to be registered WITHOUT leading "/"
83 | -- @param func Function to call when the slash command is being used (funcref or methodname)
84 | -- @param persist if false, the command will be soft disabled/enabled when aceconsole is used as a mixin (default: true)
85 | function AceConsole:RegisterChatCommand( command, func, persist )
86 | if type(command)~="string" then error([[Usage: AceConsole:RegisterChatCommand( "command", func[, persist ]): 'command' - expected a string]], 2) end
87 |
88 | if persist==nil then persist=true end -- I'd rather have my addon's "/addon enable" around if the author screws up. Having some extra slash regged when it shouldnt be isn't as destructive. True is a better default. /Mikk
89 |
90 | local name = "ACECONSOLE_"..command:upper()
91 |
92 | if type( func ) == "string" then
93 | SlashCmdList[name] = function(input, editBox)
94 | self[func](self, input, editBox)
95 | end
96 | else
97 | SlashCmdList[name] = func
98 | end
99 | _G["SLASH_"..name.."1"] = "/"..command:lower()
100 | AceConsole.commands[command] = name
101 | -- non-persisting commands are registered for enabling disabling
102 | if not persist then
103 | if not AceConsole.weakcommands[self] then AceConsole.weakcommands[self] = {} end
104 | AceConsole.weakcommands[self][command] = func
105 | end
106 | return true
107 | end
108 |
109 | --- Unregister a chatcommand
110 | -- @param command Chat command to be unregistered WITHOUT leading "/"
111 | function AceConsole:UnregisterChatCommand( command )
112 | local name = AceConsole.commands[command]
113 | if name then
114 | SlashCmdList[name] = nil
115 | _G["SLASH_" .. name .. "1"] = nil
116 | hash_SlashCmdList["/" .. command:upper()] = nil
117 | AceConsole.commands[command] = nil
118 | end
119 | end
120 |
121 | --- Get an iterator over all Chat Commands registered with AceConsole
122 | -- @return Iterator (pairs) over all commands
123 | function AceConsole:IterateChatCommands() return pairs(AceConsole.commands) end
124 |
125 |
126 | local function nils(n, ...)
127 | if n>1 then
128 | return nil, nils(n-1, ...)
129 | elseif n==1 then
130 | return nil, ...
131 | else
132 | return ...
133 | end
134 | end
135 |
136 |
137 | --- Retreive one or more space-separated arguments from a string.
138 | -- Treats quoted strings and itemlinks as non-spaced.
139 | -- @param string The raw argument string
140 | -- @param numargs How many arguments to get (default 1)
141 | -- @param startpos Where in the string to start scanning (default 1)
142 | -- @return Returns arg1, arg2, ..., nextposition\\
143 | -- Missing arguments will be returned as nils. 'nextposition' is returned as 1e9 at the end of the string.
144 | function AceConsole:GetArgs(str, numargs, startpos)
145 | numargs = numargs or 1
146 | startpos = max(startpos or 1, 1)
147 |
148 | local pos=startpos
149 |
150 | -- find start of new arg
151 | pos = strfind(str, "[^ ]", pos)
152 | if not pos then -- whoops, end of string
153 | return nils(numargs, 1e9)
154 | end
155 |
156 | if numargs<1 then
157 | return pos
158 | end
159 |
160 | -- quoted or space separated? find out which pattern to use
161 | local delim_or_pipe
162 | local ch = strsub(str, pos, pos)
163 | if ch=='"' then
164 | pos = pos + 1
165 | delim_or_pipe='([|"])'
166 | elseif ch=="'" then
167 | pos = pos + 1
168 | delim_or_pipe="([|'])"
169 | else
170 | delim_or_pipe="([| ])"
171 | end
172 |
173 | startpos = pos
174 |
175 | while true do
176 | -- find delimiter or hyperlink
177 | local ch,_
178 | pos,_,ch = strfind(str, delim_or_pipe, pos)
179 |
180 | if not pos then break end
181 |
182 | if ch=="|" then
183 | -- some kind of escape
184 |
185 | if strsub(str,pos,pos+1)=="|H" then
186 | -- It's a |H....|hhyper link!|h
187 | pos=strfind(str, "|h", pos+2) -- first |h
188 | if not pos then break end
189 |
190 | pos=strfind(str, "|h", pos+2) -- second |h
191 | if not pos then break end
192 | elseif strsub(str,pos, pos+1) == "|T" then
193 | -- It's a |T....|t texture
194 | pos=strfind(str, "|t", pos+2)
195 | if not pos then break end
196 | end
197 |
198 | pos=pos+2 -- skip past this escape (last |h if it was a hyperlink)
199 |
200 | else
201 | -- found delimiter, done with this arg
202 | return strsub(str, startpos, pos-1), AceConsole:GetArgs(str, numargs-1, pos+1)
203 | end
204 |
205 | end
206 |
207 | -- search aborted, we hit end of string. return it all as one argument. (yes, even if it's an unterminated quote or hyperlink)
208 | return strsub(str, startpos), nils(numargs-1, 1e9)
209 | end
210 |
211 |
212 | --- embedding and embed handling
213 |
214 | local mixins = {
215 | "Print",
216 | "Printf",
217 | "RegisterChatCommand",
218 | "UnregisterChatCommand",
219 | "GetArgs",
220 | }
221 |
222 | -- Embeds AceConsole into the target object making the functions from the mixins list available on target:..
223 | -- @param target target object to embed AceBucket in
224 | function AceConsole:Embed( target )
225 | for k, v in pairs( mixins ) do
226 | target[v] = self[v]
227 | end
228 | self.embeds[target] = true
229 | return target
230 | end
231 |
232 | function AceConsole:OnEmbedEnable( target )
233 | if AceConsole.weakcommands[target] then
234 | for command, func in pairs( AceConsole.weakcommands[target] ) do
235 | target:RegisterChatCommand( command, func, false, true ) -- nonpersisting and silent registry
236 | end
237 | end
238 | end
239 |
240 | function AceConsole:OnEmbedDisable( target )
241 | if AceConsole.weakcommands[target] then
242 | for command, func in pairs( AceConsole.weakcommands[target] ) do
243 | target:UnregisterChatCommand( command ) -- TODO: this could potentially unregister a command from another application in case of command conflicts. Do we care?
244 | end
245 | end
246 | end
247 |
248 | for addon in pairs(AceConsole.embeds) do
249 | AceConsole:Embed(addon)
250 | end
251 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/AceConsole-3.0/AceConsole-3.0.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/AceDB-3.0/AceDB-3.0.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/AceEvent-3.0/AceEvent-3.0.lua:
--------------------------------------------------------------------------------
1 | --- AceEvent-3.0 provides event registration and secure dispatching.
2 | -- All dispatching is done using **CallbackHandler-1.0**. AceEvent is a simple wrapper around
3 | -- CallbackHandler, and dispatches all game events or addon message to the registrees.
4 | --
5 | -- **AceEvent-3.0** can be embeded into your addon, either explicitly by calling AceEvent:Embed(MyAddon) or by
6 | -- specifying it as an embeded library in your AceAddon. All functions will be available on your addon object
7 | -- and can be accessed directly, without having to explicitly call AceEvent itself.\\
8 | -- It is recommended to embed AceEvent, otherwise you'll have to specify a custom `self` on all calls you
9 | -- make into AceEvent.
10 | -- @class file
11 | -- @name AceEvent-3.0
12 | -- @release $Id: AceEvent-3.0.lua 766 2009-04-04 08:26:05Z nevcairiel $
13 | local MAJOR, MINOR = "AceEvent-3.0", 3
14 | local AceEvent = LibStub:NewLibrary(MAJOR, MINOR)
15 |
16 | if not AceEvent then return end
17 |
18 | local CallbackHandler = LibStub:GetLibrary("CallbackHandler-1.0")
19 |
20 |
21 | AceEvent.frame = AceEvent.frame or CreateFrame("Frame", "AceEvent30Frame") -- our event frame
22 | AceEvent.embeds = AceEvent.embeds or {} -- what objects embed this lib
23 |
24 |
25 | -- APIs and registry for blizzard events, using CallbackHandler lib
26 | if not AceEvent.events then
27 | AceEvent.events = CallbackHandler:New(AceEvent,
28 | "RegisterEvent", "UnregisterEvent", "UnregisterAllEvents")
29 | end
30 |
31 | function AceEvent.events:OnUsed(target, eventname)
32 | AceEvent.frame:RegisterEvent(eventname)
33 | end
34 |
35 | function AceEvent.events:OnUnused(target, eventname)
36 | AceEvent.frame:UnregisterEvent(eventname)
37 | end
38 |
39 |
40 | -- APIs and registry for IPC messages, using CallbackHandler lib
41 | if not AceEvent.messages then
42 | AceEvent.messages = CallbackHandler:New(AceEvent,
43 | "RegisterMessage", "UnregisterMessage", "UnregisterAllMessages"
44 | )
45 | AceEvent.SendMessage = AceEvent.messages.Fire
46 | end
47 |
48 | --- embedding and embed handling
49 | local mixins = {
50 | "RegisterEvent", "UnregisterEvent",
51 | "RegisterMessage", "UnregisterMessage",
52 | "SendMessage",
53 | "UnregisterAllEvents", "UnregisterAllMessages",
54 | }
55 |
56 | --- Register for a Blizzard Event.
57 | -- The callback will always be called with the event as the first argument, and if supplied, the `arg` as second argument.
58 | -- Any arguments to the event will be passed on after that.
59 | -- @name AceEvent:RegisterEvent
60 | -- @class function
61 | -- @paramsig event[, callback [, arg]]
62 | -- @param event The event to register for
63 | -- @param callback The callback function to call when the event is triggered (funcref or method, defaults to a method with the event name)
64 | -- @param arg An optional argument to pass to the callback function
65 |
66 | --- Unregister an event.
67 | -- @name AceEvent:UnregisterEvent
68 | -- @class function
69 | -- @paramsig event
70 | -- @param event The event to unregister
71 |
72 | --- Register for a custom AceEvent-internal message.
73 | -- The callback will always be called with the event as the first argument, and if supplied, the `arg` as second argument.
74 | -- Any arguments to the event will be passed on after that.
75 | -- @name AceEvent:RegisterMessage
76 | -- @class function
77 | -- @paramsig message[, callback [, arg]]
78 | -- @param message The message to register for
79 | -- @param callback The callback function to call when the message is triggered (funcref or method, defaults to a method with the event name)
80 | -- @param arg An optional argument to pass to the callback function
81 |
82 | --- Unregister a message
83 | -- @name AceEvent:UnregisterMessage
84 | -- @class function
85 | -- @paramsig message
86 | -- @param message The message to unregister
87 |
88 | --- Send a message over the AceEvent-3.0 internal message system to other addons registered for this message.
89 | -- @name AceEvent:SendMessage
90 | -- @class function
91 | -- @paramsig message, ...
92 | -- @param message The message to send
93 | -- @param ... Any arguments to the message
94 |
95 |
96 | -- Embeds AceEvent into the target object making the functions from the mixins list available on target:..
97 | -- @param target target object to embed AceEvent in
98 | function AceEvent:Embed(target)
99 | for k, v in pairs(mixins) do
100 | target[v] = self[v]
101 | end
102 | self.embeds[target] = true
103 | return target
104 | end
105 |
106 | -- AceEvent:OnEmbedDisable( target )
107 | -- target (object) - target object that is being disabled
108 | --
109 | -- Unregister all events messages etc when the target disables.
110 | -- this method should be called by the target manually or by an addon framework
111 | function AceEvent:OnEmbedDisable(target)
112 | target:UnregisterAllEvents()
113 | target:UnregisterAllMessages()
114 | end
115 |
116 | -- Script to fire blizzard events into the event listeners
117 | local events = AceEvent.events
118 | AceEvent.frame:SetScript("OnEvent", function(this, event, ...)
119 | events:Fire(event, ...)
120 | end)
121 |
122 | --- Finally: upgrade our old embeds
123 | for target, v in pairs(AceEvent.embeds) do
124 | AceEvent:Embed(target)
125 | end
126 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/AceEvent-3.0/AceEvent-3.0.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/AceSerializer-3.0/AceSerializer-3.0.lua:
--------------------------------------------------------------------------------
1 | --- **AceSerializer-3.0** can serialize any variable (except functions or userdata) into a string format,
2 | -- that can be send over the addon comm channel. AceSerializer was designed to keep all data intact, especially
3 | -- very large numbers or floating point numbers, and table structures. The only caveat currently is, that multiple
4 | -- references to the same table will be send individually.
5 | --
6 | -- **AceSerializer-3.0** can be embeded into your addon, either explicitly by calling AceSerializer:Embed(MyAddon) or by
7 | -- specifying it as an embeded library in your AceAddon. All functions will be available on your addon object
8 | -- and can be accessed directly, without having to explicitly call AceSerializer itself.\\
9 | -- It is recommended to embed AceSerializer, otherwise you'll have to specify a custom `self` on all calls you
10 | -- make into AceSerializer.
11 | -- @class file
12 | -- @name AceSerializer-3.0
13 | -- @release $Id: AceSerializer-3.0.lua 910 2010-02-11 21:54:24Z mikk $
14 | local MAJOR,MINOR = "AceSerializer-3.0", 3
15 | local AceSerializer, oldminor = LibStub:NewLibrary(MAJOR, MINOR)
16 |
17 | if not AceSerializer then return end
18 |
19 | -- Lua APIs
20 | local strbyte, strchar, gsub, gmatch, format = string.byte, string.char, string.gsub, string.gmatch, string.format
21 | local assert, error, pcall = assert, error, pcall
22 | local type, tostring, tonumber = type, tostring, tonumber
23 | local pairs, select, frexp = pairs, select, math.frexp
24 | local tconcat = table.concat
25 |
26 | -- quick copies of string representations of wonky numbers
27 | local serNaN = tostring(0/0)
28 | local serInf = tostring(1/0)
29 | local serNegInf = tostring(-1/0)
30 |
31 |
32 | -- Serialization functions
33 |
34 | local function SerializeStringHelper(ch) -- Used by SerializeValue for strings
35 | -- We use \126 ("~") as an escape character for all nonprints plus a few more
36 | local n = strbyte(ch)
37 | if n==30 then -- v3 / ticket 115: catch a nonprint that ends up being "~^" when encoded... DOH
38 | return "\126\122"
39 | elseif n<=32 then -- nonprint + space
40 | return "\126"..strchar(n+64)
41 | elseif n==94 then -- value separator
42 | return "\126\125"
43 | elseif n==126 then -- our own escape character
44 | return "\126\124"
45 | elseif n==127 then -- nonprint (DEL)
46 | return "\126\123"
47 | else
48 | assert(false) -- can't be reached if caller uses a sane regex
49 | end
50 | end
51 |
52 | local function SerializeValue(v, res, nres)
53 | -- We use "^" as a value separator, followed by one byte for type indicator
54 | local t=type(v)
55 |
56 | if t=="string" then -- ^S = string (escaped to remove nonprints, "^"s, etc)
57 | res[nres+1] = "^S"
58 | res[nres+2] = gsub(v,"[%c \94\126\127]", SerializeStringHelper)
59 | nres=nres+2
60 |
61 | elseif t=="number" then -- ^N = number (just tostring()ed) or ^F (float components)
62 | local str = tostring(v)
63 | if tonumber(str)==v or str==serNaN or str==serInf or str==serNegInf then
64 | -- translates just fine, transmit as-is
65 | res[nres+1] = "^N"
66 | res[nres+2] = str
67 | nres=nres+2
68 | else
69 | local m,e = frexp(v)
70 | res[nres+1] = "^F"
71 | res[nres+2] = format("%.0f",m*2^53) -- force mantissa to become integer (it's originally 0.5--0.9999)
72 | res[nres+3] = "^f"
73 | res[nres+4] = tostring(e-53) -- adjust exponent to counteract mantissa manipulation
74 | nres=nres+4
75 | end
76 |
77 | elseif t=="table" then -- ^T...^t = table (list of key,value pairs)
78 | nres=nres+1
79 | res[nres] = "^T"
80 | for k,v in pairs(v) do
81 | nres = SerializeValue(k, res, nres)
82 | nres = SerializeValue(v, res, nres)
83 | end
84 | nres=nres+1
85 | res[nres] = "^t"
86 |
87 | elseif t=="boolean" then -- ^B = true, ^b = false
88 | nres=nres+1
89 | if v then
90 | res[nres] = "^B" -- true
91 | else
92 | res[nres] = "^b" -- false
93 | end
94 |
95 | elseif t=="nil" then -- ^Z = nil (zero, "N" was taken :P)
96 | nres=nres+1
97 | res[nres] = "^Z"
98 |
99 | else
100 | error(MAJOR..": Cannot serialize a value of type '"..t.."'") -- can't produce error on right level, this is wildly recursive
101 | end
102 |
103 | return nres
104 | end
105 |
106 |
107 |
108 | local serializeTbl = { "^1" } -- "^1" = Hi, I'm data serialized by AceSerializer protocol rev 1
109 |
110 | --- Serialize the data passed into the function.
111 | -- Takes a list of values (strings, numbers, booleans, nils, tables)
112 | -- and returns it in serialized form (a string).\\
113 | -- May throw errors on invalid data types.
114 | -- @param ... List of values to serialize
115 | -- @return The data in its serialized form (string)
116 | function AceSerializer:Serialize(...)
117 | local nres = 1
118 |
119 | for i=1,select("#", ...) do
120 | local v = select(i, ...)
121 | nres = SerializeValue(v, serializeTbl, nres)
122 | end
123 |
124 | serializeTbl[nres+1] = "^^" -- "^^" = End of serialized data
125 |
126 | return tconcat(serializeTbl, "", 1, nres+1)
127 | end
128 |
129 | -- Deserialization functions
130 | local function DeserializeStringHelper(escape)
131 | if escape<"~\122" then
132 | return strchar(strbyte(escape,2,2)-64)
133 | elseif escape=="~\122" then -- v3 / ticket 115: special case encode since 30+64=94 ("^") - OOPS.
134 | return "\030"
135 | elseif escape=="~\123" then
136 | return "\127"
137 | elseif escape=="~\124" then
138 | return "\126"
139 | elseif escape=="~\125" then
140 | return "\94"
141 | end
142 | error("DeserializeStringHelper got called for '"..escape.."'?!?") -- can't be reached unless regex is screwed up
143 | end
144 |
145 | local function DeserializeNumberHelper(number)
146 | if number == serNaN then
147 | return 0/0
148 | elseif number == serNegInf then
149 | return -1/0
150 | elseif number == serInf then
151 | return 1/0
152 | else
153 | return tonumber(number)
154 | end
155 | end
156 |
157 | -- DeserializeValue: worker function for :Deserialize()
158 | -- It works in two modes:
159 | -- Main (top-level) mode: Deserialize a list of values and return them all
160 | -- Recursive (table) mode: Deserialize only a single value (_may_ of course be another table with lots of subvalues in it)
161 | --
162 | -- The function _always_ works recursively due to having to build a list of values to return
163 | --
164 | -- Callers are expected to pcall(DeserializeValue) to trap errors
165 |
166 | local function DeserializeValue(iter,single,ctl,data)
167 |
168 | if not single then
169 | ctl,data = iter()
170 | end
171 |
172 | if not ctl then
173 | error("Supplied data misses AceSerializer terminator ('^^')")
174 | end
175 |
176 | if ctl=="^^" then
177 | -- ignore extraneous data
178 | return
179 | end
180 |
181 | local res
182 |
183 | if ctl=="^S" then
184 | res = gsub(data, "~.", DeserializeStringHelper)
185 | elseif ctl=="^N" then
186 | res = DeserializeNumberHelper(data)
187 | if not res then
188 | error("Invalid serialized number: '"..tostring(data).."'")
189 | end
190 | elseif ctl=="^F" then -- ^F^f
191 | local ctl2,e = iter()
192 | if ctl2~="^f" then
193 | error("Invalid serialized floating-point number, expected '^f', not '"..tostring(ctl2).."'")
194 | end
195 | local m=tonumber(data)
196 | e=tonumber(e)
197 | if not (m and e) then
198 | error("Invalid serialized floating-point number, expected mantissa and exponent, got '"..tostring(m).."' and '"..tostring(e).."'")
199 | end
200 | res = m*(2^e)
201 | elseif ctl=="^B" then -- yeah yeah ignore data portion
202 | res = true
203 | elseif ctl=="^b" then -- yeah yeah ignore data portion
204 | res = false
205 | elseif ctl=="^Z" then -- yeah yeah ignore data portion
206 | res = nil
207 | elseif ctl=="^T" then
208 | -- ignore ^T's data, future extensibility?
209 | res = {}
210 | local k,v
211 | while true do
212 | ctl,data = iter()
213 | if ctl=="^t" then break end -- ignore ^t's data
214 | k = DeserializeValue(iter,true,ctl,data)
215 | if k==nil then
216 | error("Invalid AceSerializer table format (no table end marker)")
217 | end
218 | ctl,data = iter()
219 | v = DeserializeValue(iter,true,ctl,data)
220 | if v==nil then
221 | error("Invalid AceSerializer table format (no table end marker)")
222 | end
223 | res[k]=v
224 | end
225 | else
226 | error("Invalid AceSerializer control code '"..ctl.."'")
227 | end
228 |
229 | if not single then
230 | return res,DeserializeValue(iter)
231 | else
232 | return res
233 | end
234 | end
235 |
236 | --- Deserializes the data into its original values.
237 | -- Accepts serialized data, ignoring all control characters and whitespace.
238 | -- @param str The serialized data (from :Serialize)
239 | -- @return true followed by a list of values, OR false followed by an error message
240 | function AceSerializer:Deserialize(str)
241 | str = gsub(str, "[%c ]", "") -- ignore all control characters; nice for embedding in email and stuff
242 |
243 | local iter = gmatch(str, "(^.)([^^]*)") -- Any ^x followed by string of non-^
244 | local ctl,data = iter()
245 | if not ctl or ctl~="^1" then
246 | -- we purposefully ignore the data portion of the start code, it can be used as an extension mechanism
247 | return false, "Supplied data is not AceSerializer data (rev 1)"
248 | end
249 |
250 | return pcall(DeserializeValue, iter)
251 | end
252 |
253 |
254 | ----------------------------------------
255 | -- Base library stuff
256 | ----------------------------------------
257 |
258 | AceSerializer.internals = { -- for test scripts
259 | SerializeValue = SerializeValue,
260 | SerializeStringHelper = SerializeStringHelper,
261 | }
262 |
263 | local mixins = {
264 | "Serialize",
265 | "Deserialize",
266 | }
267 |
268 | AceSerializer.embeds = AceSerializer.embeds or {}
269 |
270 | function AceSerializer:Embed(target)
271 | for k, v in pairs(mixins) do
272 | target[v] = self[v]
273 | end
274 | self.embeds[target] = true
275 | return target
276 | end
277 |
278 | -- Update embeds
279 | for target, v in pairs(AceSerializer.embeds) do
280 | AceSerializer:Embed(target)
281 | end
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/AceSerializer-3.0/AceSerializer-3.0.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/AceTimer-3.0/AceTimer-3.0.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua:
--------------------------------------------------------------------------------
1 | --[[ $Id: CallbackHandler-1.0.lua 846 2009-09-17 10:51:12Z ammo $ ]]
2 | local MAJOR, MINOR = "CallbackHandler-1.0", 5
3 | local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR)
4 |
5 | if not CallbackHandler then return end -- No upgrade needed
6 |
7 | local meta = {__index = function(tbl, key) tbl[key] = {} return tbl[key] end}
8 |
9 | local type = type
10 | local pcall = pcall
11 | local pairs = pairs
12 | local assert = assert
13 | local concat = table.concat
14 | local loadstring = loadstring
15 | local next = next
16 | local select = select
17 | local type = type
18 | local xpcall = xpcall
19 |
20 | local function errorhandler(err)
21 | return geterrorhandler()(err)
22 | end
23 |
24 | local function CreateDispatcher(argCount)
25 | local code = [[
26 | local next, xpcall, eh = ...
27 |
28 | local method, ARGS
29 | local function call() method(ARGS) end
30 |
31 | local function dispatch(handlers, ...)
32 | local index
33 | index, method = next(handlers)
34 | if not method then return end
35 | local OLD_ARGS = ARGS
36 | ARGS = ...
37 | repeat
38 | xpcall(call, eh)
39 | index, method = next(handlers, index)
40 | until not method
41 | ARGS = OLD_ARGS
42 | end
43 |
44 | return dispatch
45 | ]]
46 |
47 | local ARGS, OLD_ARGS = {}, {}
48 | for i = 1, argCount do ARGS[i], OLD_ARGS[i] = "arg"..i, "old_arg"..i end
49 | code = code:gsub("OLD_ARGS", concat(OLD_ARGS, ", ")):gsub("ARGS", concat(ARGS, ", "))
50 | return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(next, xpcall, errorhandler)
51 | end
52 |
53 | local Dispatchers = setmetatable({}, {__index=function(self, argCount)
54 | local dispatcher = CreateDispatcher(argCount)
55 | rawset(self, argCount, dispatcher)
56 | return dispatcher
57 | end})
58 |
59 | --------------------------------------------------------------------------
60 | -- CallbackHandler:New
61 | --
62 | -- target - target object to embed public APIs in
63 | -- RegisterName - name of the callback registration API, default "RegisterCallback"
64 | -- UnregisterName - name of the callback unregistration API, default "UnregisterCallback"
65 | -- UnregisterAllName - name of the API to unregister all callbacks, default "UnregisterAllCallbacks". false == don't publish this API.
66 |
67 | function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAllName, OnUsed, OnUnused)
68 | -- TODO: Remove this after beta has gone out
69 | assert(not OnUsed and not OnUnused, "ACE-80: OnUsed/OnUnused are deprecated. Callbacks are now done to registry.OnUsed and registry.OnUnused")
70 |
71 | RegisterName = RegisterName or "RegisterCallback"
72 | UnregisterName = UnregisterName or "UnregisterCallback"
73 | if UnregisterAllName==nil then -- false is used to indicate "don't want this method"
74 | UnregisterAllName = "UnregisterAllCallbacks"
75 | end
76 |
77 | -- we declare all objects and exported APIs inside this closure to quickly gain access
78 | -- to e.g. function names, the "target" parameter, etc
79 |
80 |
81 | -- Create the registry object
82 | local events = setmetatable({}, meta)
83 | local registry = { recurse=0, events=events }
84 |
85 | -- registry:Fire() - fires the given event/message into the registry
86 | function registry:Fire(eventname, ...)
87 | if not rawget(events, eventname) or not next(events[eventname]) then return end
88 | local oldrecurse = registry.recurse
89 | registry.recurse = oldrecurse + 1
90 |
91 | Dispatchers[select('#', ...) + 1](events[eventname], eventname, ...)
92 |
93 | registry.recurse = oldrecurse
94 |
95 | if registry.insertQueue and oldrecurse==0 then
96 | -- Something in one of our callbacks wanted to register more callbacks; they got queued
97 | for eventname,callbacks in pairs(registry.insertQueue) do
98 | local first = not rawget(events, eventname) or not next(events[eventname]) -- test for empty before. not test for one member after. that one member may have been overwritten.
99 | for self,func in pairs(callbacks) do
100 | events[eventname][self] = func
101 | -- fire OnUsed callback?
102 | if first and registry.OnUsed then
103 | registry.OnUsed(registry, target, eventname)
104 | first = nil
105 | end
106 | end
107 | end
108 | registry.insertQueue = nil
109 | end
110 | end
111 |
112 | -- Registration of a callback, handles:
113 | -- self["method"], leads to self["method"](self, ...)
114 | -- self with function ref, leads to functionref(...)
115 | -- "addonId" (instead of self) with function ref, leads to functionref(...)
116 | -- all with an optional arg, which, if present, gets passed as first argument (after self if present)
117 | target[RegisterName] = function(self, eventname, method, ... --[[actually just a single arg]])
118 | if type(eventname) ~= "string" then
119 | error("Usage: "..RegisterName.."(eventname, method[, arg]): 'eventname' - string expected.", 2)
120 | end
121 |
122 | method = method or eventname
123 |
124 | local first = not rawget(events, eventname) or not next(events[eventname]) -- test for empty before. not test for one member after. that one member may have been overwritten.
125 |
126 | if type(method) ~= "string" and type(method) ~= "function" then
127 | error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): 'methodname' - string or function expected.", 2)
128 | end
129 |
130 | local regfunc
131 |
132 | if type(method) == "string" then
133 | -- self["method"] calling style
134 | if type(self) ~= "table" then
135 | error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): self was not a table?", 2)
136 | elseif self==target then
137 | error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): do not use Library:"..RegisterName.."(), use your own 'self'", 2)
138 | elseif type(self[method]) ~= "function" then
139 | error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): 'methodname' - method '"..tostring(method).."' not found on self.", 2)
140 | end
141 |
142 | if select("#",...)>=1 then -- this is not the same as testing for arg==nil!
143 | local arg=select(1,...)
144 | regfunc = function(...) self[method](self,arg,...) end
145 | else
146 | regfunc = function(...) self[method](self,...) end
147 | end
148 | else
149 | -- function ref with self=object or self="addonId"
150 | if type(self)~="table" and type(self)~="string" then
151 | error("Usage: "..RegisterName.."(self or \"addonId\", eventname, method): 'self or addonId': table or string expected.", 2)
152 | end
153 |
154 | if select("#",...)>=1 then -- this is not the same as testing for arg==nil!
155 | local arg=select(1,...)
156 | regfunc = function(...) method(arg,...) end
157 | else
158 | regfunc = method
159 | end
160 | end
161 |
162 |
163 | if events[eventname][self] or registry.recurse<1 then
164 | -- if registry.recurse<1 then
165 | -- we're overwriting an existing entry, or not currently recursing. just set it.
166 | events[eventname][self] = regfunc
167 | -- fire OnUsed callback?
168 | if registry.OnUsed and first then
169 | registry.OnUsed(registry, target, eventname)
170 | end
171 | else
172 | -- we're currently processing a callback in this registry, so delay the registration of this new entry!
173 | -- yes, we're a bit wasteful on garbage, but this is a fringe case, so we're picking low implementation overhead over garbage efficiency
174 | registry.insertQueue = registry.insertQueue or setmetatable({},meta)
175 | registry.insertQueue[eventname][self] = regfunc
176 | end
177 | end
178 |
179 | -- Unregister a callback
180 | target[UnregisterName] = function(self, eventname)
181 | if not self or self==target then
182 | error("Usage: "..UnregisterName.."(eventname): bad 'self'", 2)
183 | end
184 | if type(eventname) ~= "string" then
185 | error("Usage: "..UnregisterName.."(eventname): 'eventname' - string expected.", 2)
186 | end
187 | if rawget(events, eventname) and events[eventname][self] then
188 | events[eventname][self] = nil
189 | -- Fire OnUnused callback?
190 | if registry.OnUnused and not next(events[eventname]) then
191 | registry.OnUnused(registry, target, eventname)
192 | end
193 | end
194 | if registry.insertQueue and rawget(registry.insertQueue, eventname) and registry.insertQueue[eventname][self] then
195 | registry.insertQueue[eventname][self] = nil
196 | end
197 | end
198 |
199 | -- OPTIONAL: Unregister all callbacks for given selfs/addonIds
200 | if UnregisterAllName then
201 | target[UnregisterAllName] = function(...)
202 | if select("#",...)<1 then
203 | error("Usage: "..UnregisterAllName.."([whatFor]): missing 'self' or \"addonId\" to unregister events for.", 2)
204 | end
205 | if select("#",...)==1 and ...==target then
206 | error("Usage: "..UnregisterAllName.."([whatFor]): supply a meaningful 'self' or \"addonId\"", 2)
207 | end
208 |
209 |
210 | for i=1,select("#",...) do
211 | local self = select(i,...)
212 | if registry.insertQueue then
213 | for eventname, callbacks in pairs(registry.insertQueue) do
214 | if callbacks[self] then
215 | callbacks[self] = nil
216 | end
217 | end
218 | end
219 | for eventname, callbacks in pairs(events) do
220 | if callbacks[self] then
221 | callbacks[self] = nil
222 | -- Fire OnUnused callback?
223 | if registry.OnUnused and not next(callbacks) then
224 | registry.OnUnused(registry, target, eventname)
225 | end
226 | end
227 | end
228 | end
229 | end
230 | end
231 |
232 | return registry
233 | end
234 |
235 |
236 | -- CallbackHandler purposefully does NOT do explicit embedding. Nor does it
237 | -- try to upgrade old implicit embeds since the system is selfcontained and
238 | -- relies on closures to work.
239 |
240 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/CallbackHandler-1.0/CallbackHandler-1.0.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/LibBetterBlizzOptions-1.0/LibBetterBlizzOptions-1.0.lua:
--------------------------------------------------------------------------------
1 | local MAJOR, MINOR = "LibBetterBlizzOptions-1.0", 1000000
2 | local lib = LibStub:NewLibrary(MAJOR, MINOR)
3 | if not lib then return end
4 |
5 | local function makeMovable(frame)
6 | local mover = _G[frame:GetName() .. "Mover"] or CreateFrame("Frame", frame:GetName() .. "Mover", frame)
7 | mover:EnableMouse(true)
8 | mover:SetPoint("TOP", frame, "TOP", 0, 10)
9 | mover:SetWidth(160)
10 | mover:SetHeight(40)
11 | mover:SetScript("OnMouseDown", function(self)
12 | self:GetParent():StartMoving()
13 | end)
14 | mover:SetScript("OnMouseUp", function(self)
15 | self:GetParent():StopMovingOrSizing()
16 | end)
17 | frame:SetMovable(true)
18 | frame:ClearAllPoints()
19 | frame:SetPoint("CENTER")
20 | end
21 |
22 | local freeButtons = {
23 | [InterfaceOptionsFrameCategories] = {},
24 | [InterfaceOptionsFrameAddOns] = {},
25 | }
26 | local function updateScrollHeight(categoryFrame)
27 | local buttons = categoryFrame.buttons
28 | local numButtons = #buttons
29 | local maxButtons = (categoryFrame:GetTop() - categoryFrame:GetBottom() - 8) / categoryFrame.buttonHeight
30 | local name = categoryFrame:GetName()
31 |
32 | if numButtons < maxButtons then
33 | for i = numButtons + 1, maxButtons do
34 | local button
35 | if freeButtons[categoryFrame][i] then
36 | button = freeButtons[categoryFrame][i]
37 | else
38 | button = _G[name .. "Button" .. i] or CreateFrame("BUTTON", name .. "Button" .. i, categoryFrame, "InterfaceOptionsListButtonTemplate")
39 | button:SetPoint("TOPLEFT", buttons[#buttons], "BOTTOMLEFT")
40 | end
41 | local listwidth = InterfaceOptionsFrameAddOnsList:GetWidth()
42 | if InterfaceOptionsFrameAddOnsList:IsShown() then
43 | button:SetWidth(button:GetWidth() - listwidth)
44 | end
45 | tinsert(buttons, button)
46 | categoryFrame.update()
47 | end
48 | else
49 | for i = numButtons, maxButtons, -1 do
50 | local button = tremove(buttons, i)
51 | button:Hide()
52 | local listwidth = InterfaceOptionsFrameAddOnsList:GetWidth()
53 | if InterfaceOptionsFrameAddOnsList:IsShown() then
54 | button:SetWidth(button:GetWidth() + listwidth)
55 | end
56 | freeButtons[categoryFrame][i] = button
57 | categoryFrame.update()
58 | end
59 | end
60 | end
61 |
62 | local grip = _G.BetterBlizzOptionsResizeGrip or CreateFrame("Frame", "BetterBlizzOptionsResizeGrip", InterfaceOptionsFrame)
63 | grip:EnableMouse(true)
64 | local tex = grip.tex or grip:CreateTexture(grip:GetName() .. "Grip")
65 | grip.tex = tex
66 | tex:SetTexture([[Interface\BUTTONS\UI-AutoCastableOverlay]])
67 | tex:SetTexCoord(0.619, 0.760, 0.612, 0.762)
68 | tex:SetDesaturated(true)
69 | tex:ClearAllPoints()
70 | tex:SetPoint("TOPLEFT")
71 | tex:SetPoint("BOTTOMRIGHT", grip, "TOPLEFT", 12, -12)
72 |
73 | -- Deal with BBO base installs
74 | if grip.SetNormalTexture then
75 | grip:SetNormalTexture(nil)
76 | grip:SetHighlightTexture(nil)
77 | end
78 | -- tex:SetAllPoints()
79 |
80 | grip:SetWidth(22)
81 | grip:SetHeight(21)
82 | grip:SetScript("OnMouseDown", function(self)
83 | self:GetParent():StartSizing()
84 | end)
85 | grip:SetScript("OnMouseUp", function(self)
86 | self:GetParent():StopMovingOrSizing()
87 | updateScrollHeight(InterfaceOptionsFrameCategories)
88 | updateScrollHeight(InterfaceOptionsFrameAddOns)
89 | end)
90 | grip:SetScript("OnEvent", function(self)
91 | updateScrollHeight(InterfaceOptionsFrameCategories)
92 | updateScrollHeight(InterfaceOptionsFrameAddOns)
93 | makeMovable(InterfaceOptionsFrame)
94 | makeMovable(ChatConfigFrame)
95 | makeMovable(AudioOptionsFrame)
96 | makeMovable(GameMenuFrame)
97 | makeMovable(VideoOptionsFrame)
98 | if MacOptionsFrame then
99 | makeMovable(MacOptionsFrame)
100 | end
101 | end)
102 | if not grip:IsEventRegistered("PLAYER_LOGIN") then
103 | grip:RegisterEvent("PLAYER_LOGIN")
104 | end
105 |
106 | grip:ClearAllPoints()
107 | grip:SetPoint("BOTTOMRIGHT")
108 | grip:SetScript("OnEnter", function(self)
109 | self.tex:SetDesaturated(false)
110 | end)
111 | grip:SetScript("OnLeave", function(self)
112 | self.tex:SetDesaturated(true)
113 | end)
114 |
115 | InterfaceOptionsFrame:SetPoint("CENTER", UIParent, "CENTER")
116 |
117 | InterfaceOptionsFrameCategories:SetPoint("BOTTOMLEFT", InterfaceOptionsFrame, "BOTTOMLEFT", 22, 50)
118 | InterfaceOptionsFrameAddOns:SetPoint("BOTTOMLEFT", InterfaceOptionsFrame, "BOTTOMLEFT", 22, 50)
119 |
120 | if not InterfaceOptionsFrameAddOns:IsMouseWheelEnabled() then
121 | InterfaceOptionsFrameAddOns:EnableMouseWheel(true)
122 | InterfaceOptionsFrameAddOns:SetScript("OnMouseWheel", function(self, dir)
123 | InterfaceOptionsFrameAddOnsListScrollBar:SetValue(
124 | InterfaceOptionsFrameAddOnsListScrollBar:GetValue() - (dir * 18)
125 | )
126 | end)
127 | end
128 |
129 | InterfaceOptionsFrame:SetFrameStrata("FULLSCREEN_DIALOG")
130 | InterfaceOptionsFrame:SetResizable(true)
131 | InterfaceOptionsFrame:SetSize(858, 660);
132 | InterfaceOptionsFrame:SetMinResize(858, 660)
133 | InterfaceOptionsFrame:SetToplevel(true)
134 | InterfaceOptionsFrame:HookScript("OnShow", function()
135 | InterfaceOptionsFrame:SetSize(858, 660);
136 | InterfaceOptionsFrame:SetMinResize(858, 660);
137 | end)
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/LibBetterBlizzOptions-1.0/lib.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/LibCUFAuras-1.0/HealingTarkenEffect.lua:
--------------------------------------------------------------------------------
1 | local lib, version = LibStub("LibCUFAuras-1.0");
2 | if ( not lib ) then error("not found LibCUFAuras-1.0") end
3 | if ( version > 1 ) then return end
4 |
5 | lib.HealingTakenEffect = {
6 | [6136] = "Окоченение",
7 | [7068] = "Пелена Тени",
8 | [7321] = "Окоченение",
9 | [12294] = "Смертельный удар",
10 | [12484] = "Окоченение",
11 | [12485] = "Окоченение",
12 | [12486] = "Окоченение",
13 | [13218] = "Нейтрализующий яд",
14 | [13222] = "Нейтрализующий яд II",
15 | [13223] = "Нейтрализующий яд III",
16 | [13224] = "Нейтрализующий яд IV",
17 | [13583] = "Проклятие Мертвого Леса",
18 | [13737] = "Смертельный удар",
19 | [15708] = "Смертельный удар",
20 | [16856] = "Смертельный удар",
21 | [17547] = "Смертельный удар",
22 | [17820] = "Пелена Тени",
23 | [19434] = "Прицельный выстрел",
24 | [19643] = "Смертельный удар",
25 | [19716] = "Проклятие Гееннаса",
26 | [20900] = "Прицельный выстрел",
27 | [20901] = "Прицельный выстрел",
28 | [20902] = "Прицельный выстрел",
29 | [20903] = "Прицельный выстрел",
30 | [20904] = "Прицельный выстрел",
31 | [21551] = "Смертельный удар",
32 | [21552] = "Смертельный удар",
33 | [21553] = "Смертельный удар",
34 | [22687] = "Пелена Тени",
35 | [22842] = "Неистовое восстановление",
36 | [22859] = "Смертельный раскол",
37 | [23169] = "Чернокнижие: Зеленое",
38 | [23224] = "Пелена Тени",
39 | [23230] = "Кровавое неистовство",
40 | [23848] = "Тестовый удар W50",
41 | [23850] = "Тестовый удар W35",
42 | [24573] = "Смертельный удар",
43 | [24674] = "Пелена Тени",
44 | [24816] = "Тест: Смертельный удар",
45 | [25248] = "Смертельный удар",
46 | [25646] = "Смертельная рана",
47 | [27065] = "Прицельный выстрел",
48 | [27189] = "Нейтрализующий яд V",
49 | [27580] = "Смертельный удар",
50 | [28440] = "Пелена Тени",
51 | [28467] = "Смертельная рана",
52 | [28776] = "Некротический яд",
53 | [29572] = "Смертельный удар",
54 | [30330] = "Смертельный удар",
55 | [30423] = "Врата Пустоты - Господство",
56 | [30641] = "Смертельная рана",
57 | [30843] = "Ослабление",
58 | [31464] = "Смертельная рана",
59 | [31911] = "Смертельный удар",
60 | [31965] = "Отрицательные эффекты эаклинаний (80)",
61 | [32315] = "Удар души",
62 | [32378] = "Филе",
63 | [32736] = "Смертельный удар",
64 | [34073] = "Проклятие Кровавой Глазницы",
65 | [34366] = "Эбеновый яд",
66 | [34625] = "Разрушение",
67 | [35054] = "Смертельный удар",
68 | [35189] = "Солнечный удар",
69 | [36023] = "Убийственный удар",
70 | [36054] = "Убийственный удар",
71 | [36693] = "Некротический яд",
72 | [36814] = "Смертельная рана",
73 | [36917] = "Проклятие Метателя магмы",
74 | [37335] = "Смертельный удар",
75 | [38572] = "Смертельный раскол",
76 | [38770] = "Смертельная рана",
77 | [39171] = "Смертельный удар",
78 | [39595] = "Смертельный раскол",
79 | [39665] = "Нейтрализующий яд",
80 | [40220] = "Смертельный удар",
81 | [40599] = "Удар по дуге",
82 | [41292] = "Аура страдания",
83 | [43410] = "Рубящий удар",
84 | [43441] = "Смертельный удар",
85 | [43461] = "Нейтрализующий яд",
86 | [44268] = "Смертельный удар",
87 | [44475] = "Поле ослабления магии",
88 | [44534] = "Непригодный удар",
89 | [45347] = "Затронутый тьмой",
90 | [45885] = "Теневой шип",
91 | [45996] = "Мрак",
92 | [46296] = "Некротический яд",
93 | [47485] = "Смертельный удар",
94 | [47486] = "Смертельный удар",
95 | [48137] = "Смертельная рана",
96 | [48266] = "Власть крови",
97 | [48291] = "Смрадная гниль",
98 | [48301] = "Повреждение разума",
99 | [48871] = "Прицельный выстрел",
100 | [49049] = "Прицельный выстрел",
101 | [49050] = "Прицельный выстрел",
102 | [52645] = "Обессиливающий сглаз",
103 | [52771] = "Ранящий удар",
104 | [53803] = "Пелена Тени",
105 | [54074] = "Нейтрализующий яд",
106 | [54121] = "Некротический яд",
107 | [54378] = "Смертельная рана",
108 | [54525] = "Покров Тьмы",
109 | [54615] = "Прицельный выстрел",
110 | [54716] = "Смертельные удары",
111 | [55593] = "Мертвенная аура",
112 | [56112] = "Яростные атаки",
113 | [57789] = "Смертельный удар",
114 | [57974] = "Нейтрализующий яд VI",
115 | [57975] = "Нейтрализующий яд VII",
116 | [58830] = "Ранящий удар",
117 | [59243] = "Прицельный выстрел",
118 | [59265] = "Смертельная рана",
119 | [59300] = "Смрадная гниль",
120 | [59455] = "Смертельные удары",
121 | [59513] = "Объятия вампира",
122 | [59525] = "Луч боли",
123 | [59746] = "Покров Тьмы",
124 | [60084] = "Завеса теней",
125 | [60626] = "Некротический удар",
126 | [61042] = "Смертный бой",
127 | [63038] = "Темный залп",
128 | [63514] = "Улучшенная аура благочестия",
129 | [65883] = "Прицельный выстрел",
130 | [65926] = "Смертельный удар",
131 | [65962] = "Нейтрализующий яд",
132 | [67542] = "Смертельный удар",
133 | [67977] = "Прицельный выстрел",
134 | [67978] = "Прицельный выстрел",
135 | [67979] = "Прицельный выстрел",
136 | [68391] = "Вечная мерзлота",
137 | [68782] = "Смертельный удар",
138 | [68783] = "Смертельный удар",
139 | [68784] = "Смертельный удар",
140 | [68881] = "Нестабильное кольцо воды",
141 | [69633] = "Пелена Тени",
142 | [69651] = "Ранящий удар",
143 | [69674] = "Мутировавшая инфекция",
144 | [70588] = "Подавление",
145 | [70671] = "Обессиливающая гниль",
146 | [70710] = "Обессиливающая гниль",
147 | [71127] = "Смертельная рана",
148 | [71224] = "Мутировавшая инфекция",
149 | [71552] = "Смертельный удар",
150 | [72390] = "Безысходность",
151 | [72391] = "Безысходность",
152 | [72393] = "Безысходность",
153 | [72395] = "Безысходность",
154 | [72396] = "Безысходность",
155 | [72397] = "Безысходность",
156 | [72569] = "Ранящий удар",
157 | [72570] = "Ранящий удар",
158 | [72571] = "Ранящий удар",
159 | [73022] = "Мутировавшая инфекция",
160 | [73023] = "Мутировавшая инфекция",
161 | };
162 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/LibCUFAuras-1.0/LibCUFAuras-1.0.lua:
--------------------------------------------------------------------------------
1 | local lib, version = LibStub("LibCUFAuras-1.0");
2 | if ( not lib ) then error("not found LibCUFAuras-1.0") end
3 | if ( version > 1 ) then return end
4 |
5 | local pairs = pairs;
6 | local tinsert = table.insert;
7 | local tremove = table.remove;
8 |
9 | local CLASS_AURAS = lib.CLASS_AURAS;
10 | local CanApplyAuras = lib.UNIT_CAN_APPLY_AURAS[select(2, UnitClass("player"))];
11 |
12 | lib.CASHE = {};
13 | lib.callbacksUsed = {};
14 |
15 | function lib.callbacks:OnUsed(target, eventname)
16 | lib.callbacksUsed[eventname] = lib.callbacksUsed[eventname] or {};
17 | tinsert(lib.callbacksUsed[eventname], #lib.callbacksUsed[eventname] + 1, target);
18 |
19 | lib.events:RegisterEvent("UNIT_AURA");
20 | lib.events:RegisterEvent("UNIT_TARGET");
21 | lib.events:RegisterEvent("PLAYER_ENTERING_WORLD");
22 | lib.events:RegisterEvent("UPDATE_MOUSEOVER_UNIT");
23 | lib.events:RegisterEvent("PLAYER_TARGET_CHANGED");
24 | lib.events:RegisterEvent("PLAYER_REGEN_DISABLED");
25 | lib.events:RegisterEvent("PLAYER_REGEN_ENABLED");
26 | end
27 |
28 | function lib.callbacks:OnUnused(target, eventname)
29 | if ( lib.callbacksUsed[eventname] ) then
30 | for i = #lib.callbacksUsed[eventname], 1, -1 do
31 | if ( lib.callbacksUsed[eventname][i] == target ) then
32 | tremove(lib.callbacksUsed[eventname], i);
33 | end
34 | end
35 | end
36 |
37 | for event, value in pairs(lib.callbacksUsed) do
38 | if ( #value == 0 ) then
39 | lib.callbacksUsed[event] = nil;
40 | end
41 | end
42 |
43 | lib.events:UnregisterEvent("UNIT_AURA");
44 | lib.events:UnregisterEvent("UNIT_TARGET");
45 | lib.events:UnregisterEvent("PLAYER_ENTERING_WORLD");
46 | lib.events:UnregisterEvent("UPDATE_MOUSEOVER_UNIT");
47 | lib.events:UnregisterEvent("PLAYER_TARGET_CHANGED");
48 | lib.events:UnregisterEvent("PLAYER_REGEN_DISABLED");
49 | lib.events:UnregisterEvent("PLAYER_REGEN_ENABLED");
50 | end
51 |
52 | local function ResetUnitAuras(unitID)
53 | lib:RemoveAllAurasFromGUID(UnitGUID(unitID));
54 | end
55 |
56 | local function GetAuraPriority(name, spellId)
57 |
58 | if CanApplyAuras[name] then
59 | if CanApplyAuras[name].appliesOnlyYourself then
60 | return 1;
61 | end
62 | return UnitAffectingCombat("player") and 1 or 2;
63 | end
64 |
65 | if ( LOSS_OF_CONTROL_STORAGE[spellId] ) then
66 | return LOSS_OF_CONTROL_STORAGE[spellId][2];
67 | end
68 |
69 | if lib.HealingTakenEffect[spellId] then
70 | return 1;
71 | end
72 |
73 | return 0;
74 | end
75 |
76 | local sortPriorFunc = function (a,b)
77 | if a.priorityIndex == b.priorityIndex then
78 | return a.expirationTime > b.expirationTime;
79 | end
80 |
81 | return a.priorityIndex > b.priorityIndex;
82 | end
83 |
84 | function lib:AddAuraFromUnitID(index, filterType, dstGUID, ...)
85 | local spellName, texture, stackCount, dispelType, duration, expirationTime, unitCaster, canStealOrPurge, shouldConsolidate, spellID, canApplyAura = ...;
86 |
87 | local tracker = self.CASHE[dstGUID] or {};
88 | tinsert(tracker, #tracker + 1, {
89 | index = index,
90 | filterType = filterType,
91 | priorityIndex = GetAuraPriority(spellName, spellID),
92 | name = spellName,
93 | texture = texture,
94 | stackCount = stackCount,
95 | debuffType = dispelType,
96 | duration = duration,
97 | expirationTime = expirationTime,
98 | unitCaster = unitCaster,
99 | canStealOrPurge = canStealOrPurge,
100 | shouldConsolidate = shouldConsolidate,
101 | spellID = spellID,
102 | canApplyAura = canApplyAura,
103 | isBossDebuff = LOSS_OF_CONTROL_STORAGE[spellID],
104 | });
105 |
106 | table.sort(tracker, sortPriorFunc);
107 | self.CASHE[dstGUID] = tracker;
108 | end
109 |
110 | local function CheckUnitAuras(unitID, filterType)
111 | local index = 1;
112 | local dstGUID = UnitGUID(unitID);
113 | local _, name, texture, stackCount, dispelType, duration, expirationTime, unitCaster, shouldConsolidate, spellID, canStealOrPurge;
114 | while ( true ) do
115 | name, _, texture, stackCount, dispelType, duration, expirationTime, unitCaster, canStealOrPurge, shouldConsolidate, spellID = UnitAura(unitID, index, filterType);
116 | if ( not name ) then break end
117 | lib:AddAuraFromUnitID(
118 | index,
119 | filterType,
120 | dstGUID,
121 | name,
122 | texture,
123 | stackCount,
124 | dispelType,
125 | duration,
126 | expirationTime,
127 | unitCaster,
128 | canStealOrPurge,
129 | shouldConsolidate,
130 | spellID,
131 | ( CanApplyAuras[name] and CanApplyAuras[name].canApplyAura )
132 | );
133 | index = index + 1;
134 | end
135 |
136 | lib.callbacks:Fire("COMPACT_UNIT_FRAME_UNIT_AURA", dstGUID);
137 | end
138 |
139 | local function UnitAurasUpdate(unitID)
140 | ResetUnitAuras(unitID);
141 |
142 | CheckUnitAuras(unitID, "HELPFUL");
143 | CheckUnitAuras(unitID, "HARMFUL");
144 | CheckUnitAuras(unitID, "HARMFUL|RAID");
145 | end
146 |
147 | function lib.events:UNIT_AURA(_, unitID)
148 | if not unitID then return; end
149 | UnitAurasUpdate(unitID);
150 | end
151 |
152 | local function IsInRaid()
153 | return GetNumRaidMembers() > 0;
154 | end
155 |
156 | local function GetUnitsRoster()
157 | local roster = { "player" };
158 | local unit = IsInRaid() and "raid" or "party";
159 | local MAX_UNIT_INDEX = IsInRaid() and 40 or 4;
160 |
161 | for i=1, MAX_UNIT_INDEX do
162 | tinsert(roster, unit..i);
163 | end
164 |
165 | return roster;
166 | end
167 |
168 | local function UnitsAurasUpdate()
169 | for _, unitID in ipairs(GetUnitsRoster()) do
170 | if ( UnitExists(unitID) ) then
171 | UnitAurasUpdate(unitID);
172 | end
173 | end
174 | end
175 |
176 | function lib.events:PLAYER_ENTERING_WORLD()
177 | UnitsAurasUpdate();
178 | end
179 |
180 | function lib.events:PLAYER_REGEN_ENABLED()
181 | UnitsAurasUpdate();
182 | end
183 |
184 | function lib.events:PLAYER_REGEN_DISABLED()
185 | UnitsAurasUpdate();
186 | end
187 |
188 | -- Remove all auras on a GUID. They must have died
189 | function lib:RemoveAllAurasFromGUID(dstGUID)
190 | local tracker = self.CASHE[dstGUID];
191 | if ( tracker ) then
192 | for i = #tracker, 1, -1 do
193 | tremove(tracker, i);
194 | end
195 | end
196 | end
197 |
198 | local function GetAurasValue(sizeTable, value)
199 | return sizeTable >= value and value or nil;
200 | end
201 |
202 | local function IsNull(object)
203 | return #object == 0;
204 | end
205 |
206 | do
207 |
208 | local auraSlots = {};
209 | function lib:UnitAuraSlots(unit, filter, maxCount, continuationToken)
210 | if ( continuationToken or not self.CASHE[UnitGUID(unit)] ) then
211 | return;
212 | end
213 |
214 | table.wipe(auraSlots);
215 | for key, value in ipairs(self.CASHE[UnitGUID(unit)]) do
216 | if ( value.filterType == filter ) then
217 | auraSlots[#auraSlots + 1] = key;
218 | end
219 | end
220 |
221 | local countValue = GetAurasValue(#auraSlots, maxCount);
222 |
223 | if ( IsNull(auraSlots) ) then
224 | return nil;
225 | end
226 |
227 | return countValue, unpack(auraSlots, 1, countValue or #auraSlots);
228 | end
229 |
230 | end
231 |
232 | function lib:UnitAuraBySlot(unit, slot)
233 | assert(unit, "UnitAuraBySlot: not found unit");
234 | assert(slot, "UnitAuraBySlot: not found slot");
235 | assert(type(unit)=="string", "UnitAuraBySlot: unit is not string value.");
236 | assert(type(slot)=="number", "UnitAuraBySlot: slot is not number value.");
237 |
238 | local tracker = self.CASHE[UnitGUID(unit)];
239 | local info = tracker and tracker[slot];
240 | if ( info ) then
241 | return info.name, -- 1
242 | info.texture, -- 2
243 | info.stackCount, -- 3
244 | info.debuffType, -- 4
245 | info.duration, -- 5
246 | info.expirationTime, -- 6
247 | info.unitCaster, -- 7
248 | info.shouldConsolidate, -- 8
249 | info.spellID, -- 9
250 | info.spellID, -- 10
251 | info.canApplyAura, -- 11
252 | info.isBossDebuff, -- 12
253 | info.index; -- 13
254 | end
255 | end
256 |
257 | function lib:SpellGetVisibilityInfo(spellID, visType)
258 | spellID = tonumber(spellID);
259 | assert(type(spellID)=="number", "spellID is not number value");
260 | local info = CLASS_AURAS[GetSpellInfo(spellID)];
261 | if ( not info ) then
262 | return false;
263 | end
264 | return info[visType].hasCustom, info[visType].alwaysShowMine, info[visType].showForMySpec;
265 | end
266 |
267 | function lib:SpellIsSelfBuff(spellID)
268 | spellID = tonumber(spellID);
269 | assert(type(spellID)=="number", "spellID is not number value");
270 |
271 | return CanApplyAuras[GetSpellInfo(spellID)];
272 | end
273 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/LibCUFAuras-1.0/SpellGetVisibilityInfo.lua:
--------------------------------------------------------------------------------
1 | local lib, version = LibStub("LibCUFAuras-1.0");
2 | if ( not lib ) then error("not found LibCUFAuras-1.0") end
3 | if ( version > 1 ) then return end
4 |
5 | local PLAYER_CLASS = select(2, UnitClass("player"));
6 |
7 | local function SetRaidCombatInfo(hasCustom, alwaysShowMine, showForMySpec)
8 | return {
9 | hasCustom = hasCustom, -- whether the spell visibility should be customized, if false it means always display
10 | alwaysShowMine = alwaysShowMine,-- whether to show the spell if cast by the player/player's pet/vehicle (e.g. the Paladin Forbearance debuff)
11 | showForMySpec = showForMySpec, -- whether to show the spell for the current specialization of the player
12 | };
13 | end
14 |
15 | local CLASS_AURAS = {
16 | --== PRIEST ==--
17 | -- Weakened Soul
18 | [GetSpellInfo(6788)] = {
19 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, PLAYER_CLASS == "PRIEST", PLAYER_CLASS == "PRIEST"),
20 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, PLAYER_CLASS == "PRIEST", PLAYER_CLASS == "PRIEST"),
21 | },
22 | -- Divine Spirit
23 | [GetSpellInfo(48073)] = {
24 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
25 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "PRIEST"),
26 | },
27 | -- Prayer of Spirit
28 | [GetSpellInfo(48074)] = {
29 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
30 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "PRIEST"),
31 | },
32 | -- Shadow Protection
33 | [GetSpellInfo(48169)] = {
34 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
35 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "PRIEST"),
36 | },
37 | -- Prayer of Shadow Protection
38 | [GetSpellInfo(48170)] = {
39 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
40 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "PRIEST"),
41 | },
42 | -- Prayer of Fortitude
43 | [GetSpellInfo(48162)] = {
44 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
45 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "PRIEST"),
46 | },
47 | -- Power Word: Fortitude
48 | [GetSpellInfo(48161)] = {
49 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
50 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "PRIEST"),
51 | },
52 |
53 | --== DEATHKNIGHT ==--
54 | -- Winter Horn
55 | [GetSpellInfo(57623)] = {
56 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
57 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "DEATHKNIGHT"),
58 | },
59 | -- Path of Frost
60 | [GetSpellInfo(3714)] = {
61 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
62 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "DEATHKNIGHT"),
63 | },
64 |
65 | --== PALADIN ==--
66 | -- Blessing of Kings
67 | [GetSpellInfo(20217)] = {
68 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
69 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, true, PLAYER_CLASS == "PALADIN"),
70 | },
71 | -- Greater Blessing of Kings
72 | [GetSpellInfo(25898)] = {
73 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
74 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, true, PLAYER_CLASS == "PALADIN"),
75 | },
76 | -- Blessing of Wisdom
77 | [GetSpellInfo(48936)] = {
78 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
79 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, true, PLAYER_CLASS == "PALADIN"),
80 | },
81 | -- Greater Blessing of Wisdom
82 | [GetSpellInfo(48938)] = {
83 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
84 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, true, PLAYER_CLASS == "PALADIN"),
85 | },
86 | -- Blessing of Might
87 | [GetSpellInfo(48932)] = {
88 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
89 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, true, PLAYER_CLASS == "PALADIN"),
90 | },
91 | -- Greater Blessing of Might
92 | [GetSpellInfo(48934)] = {
93 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
94 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "PALADIN"),
95 | },
96 | -- Blessing of Sanctuary
97 | [GetSpellInfo(20911)] = {
98 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
99 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, true, PLAYER_CLASS == "PALADIN"),
100 | },
101 | -- Greater Blessing of Sanctuary
102 | [GetSpellInfo(25899)] = {
103 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
104 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, true, PLAYER_CLASS == "PALADIN"),
105 | },
106 |
107 | --== DRUID ==--
108 | -- Mark of the Wild
109 | [GetSpellInfo(48469)] = {
110 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
111 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, true, PLAYER_CLASS == "DRUID"),
112 | },
113 | -- Gift of the Wild
114 | [GetSpellInfo(48470)] = {
115 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
116 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "DRUID"),
117 | },
118 | -- Thorns
119 | [GetSpellInfo(53307)] = {
120 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
121 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "DRUID"),
122 | },
123 |
124 | --== SHAMAN ==--
125 | -- Earth Shield
126 | [GetSpellInfo(49284)] = {
127 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, true, PLAYER_CLASS == "SHAMAN"),
128 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, true, PLAYER_CLASS == "SHAMAN"),
129 | },
130 | -- Windfury Totem
131 | [GetSpellInfo(8515)] = {
132 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "SHAMAN"),
133 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "SHAMAN"),
134 | },
135 | -- Grounding Totem
136 | [GetSpellInfo(8177)] = {
137 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "SHAMAN"),
138 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "SHAMAN"),
139 | },
140 |
141 | --== WARRIOR ==--
142 | -- Battle Shout
143 | [GetSpellInfo(47436)] = {
144 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
145 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "WARRIOR"),
146 | },
147 | -- Commanding Shout
148 | [GetSpellInfo(47440)] = {
149 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
150 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "WARRIOR"),
151 | },
152 |
153 | --== MAGE ==--
154 | -- Arcane Intellect
155 | [GetSpellInfo(42995)] = {
156 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
157 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "MAGE"),
158 | },
159 | -- Dalaran Intellect
160 | [GetSpellInfo(61024)] = {
161 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
162 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "MAGE"),
163 | },
164 | -- Dalaran Brilliance
165 | [GetSpellInfo(61316)] = {
166 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
167 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "MAGE"),
168 | },
169 | -- Arcane Brilliance
170 | [GetSpellInfo(43002)] = {
171 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
172 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "MAGE"),
173 | },
174 | -- Dampen Magic
175 | [GetSpellInfo(43015)] = {
176 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
177 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "MAGE"),
178 | },
179 | -- Focus Magic
180 | [GetSpellInfo(54646)] = {
181 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
182 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "MAGE"),
183 | },
184 |
185 | --== WARLOCK ==--
186 | -- Unending Breath
187 | [GetSpellInfo(5697)] = {
188 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
189 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, PLAYER_CLASS == "WARLOCK"),
190 | },
191 |
192 | --== ANY DEBUFF SPELLS ==--
193 | -- Chill of the Throne
194 | [GetSpellInfo(69127)] = {
195 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
196 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, true),
197 | },
198 | -- Deserter
199 | [GetSpellInfo(26013)] = {
200 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
201 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, true),
202 | },
203 | -- Strange Feeling
204 | [GetSpellInfo(31694)] = {
205 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
206 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, false),
207 | },
208 | -- Quel'Delar's Compulsion
209 | [GetSpellInfo(70013)] = {
210 | ["RAID_INCOMBAT"] = SetRaidCombatInfo(true, false, false),
211 | ["RAID_OUTOFCOMBAT"] = SetRaidCombatInfo(true, false, false),
212 | },
213 | };
214 | lib.CLASS_AURAS = CLASS_AURAS;
215 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/LibCUFAuras-1.0/init.lua:
--------------------------------------------------------------------------------
1 | local MAJOR, MINOR = "LibCUFAuras-1.0", 1;
2 | if ( not LibStub ) then error(MAJOR .. " requires LibStub") return end
3 |
4 | local lib = LibStub:NewLibrary(MAJOR, MINOR);
5 | if not lib then return end
6 |
7 | lib.callbacks = LibStub("CallbackHandler-1.0"):New(lib);
8 | if ( not lib.callbacks ) then error(MAJOR .. " requires CallbackHandler-1.0") return end
9 |
10 | lib.events = CreateFrame("Frame");
11 | lib.events:SetScript("OnEvent", function(self, event, ...)
12 | if ( self[event] ) then
13 | self[event](self, event, ...);
14 | end
15 | end)
16 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/LibCUFAuras-1.0/lib.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/LibGroupTalents-1.0/LibGroupTalents-1.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/LibHealComm-4.0/LibHealComm-4.0.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/LibResComm-1.0/LibResComm-1.0.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/LibStub/LibStub.lua:
--------------------------------------------------------------------------------
1 | -- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/LibStub for more info
2 | -- LibStub is hereby placed in the Public Domain Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke
3 | local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS!
4 | local LibStub = _G[LIBSTUB_MAJOR]
5 |
6 | if not LibStub or LibStub.minor < LIBSTUB_MINOR then
7 | LibStub = LibStub or {libs = {}, minors = {} }
8 | _G[LIBSTUB_MAJOR] = LibStub
9 | LibStub.minor = LIBSTUB_MINOR
10 |
11 | function LibStub:NewLibrary(major, minor)
12 | assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)")
13 | minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.")
14 |
15 | local oldminor = self.minors[major]
16 | if oldminor and oldminor >= minor then return nil end
17 | self.minors[major], self.libs[major] = minor, self.libs[major] or {}
18 | return self.libs[major], oldminor
19 | end
20 |
21 | function LibStub:GetLibrary(major, silent)
22 | if not self.libs[major] and not silent then
23 | error(("Cannot find a library instance of %q."):format(tostring(major)), 2)
24 | end
25 | return self.libs[major], self.minors[major]
26 | end
27 |
28 | function LibStub:IterateLibraries() return pairs(self.libs) end
29 | setmetatable(LibStub, { __call = LibStub.GetLibrary })
30 | end
31 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/LibTalentQuery-1.0/LibTalentQuery-1.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Libs/SpecializedAbsorbs-1.0/SpecializedAbsorbs-1.0.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Locales/enUS.lua:
--------------------------------------------------------------------------------
1 | COMPACT_UNIT_FRAME_COUNTDOWN_START = "Pull in %s"
2 | COMPACT_UNIT_FRAME_COUNTDOWN_NOW = "Pull Now!"
3 |
4 | BUFF_STACKS_OVERFLOW = "*";
5 | LOST_HEALTH = "-%d";
6 |
7 | COMPACT_UNIT_FRAME_STATIC_POPUP_TEXT = "|cffbaf5aeCompactRaidFrame|r: There may be a conflict with the |cffff0000WeakAuras|r addon, update WeakAuras to version 3.2.1 or later"
8 |
9 | AUTO_ACTIVATE_DISABLED_IN_PARTY = "Raid-Style Party Frames must be enabled to auto-activate with this number of players.";
10 |
11 | USE_RAID_STYLE_PARTY_FRAMES = "Use Raid-Style Party Frames";
12 |
13 | CREATE_NEW_COMPACT_UNIT_FRAME_PROFILE = "Create a New Profile";
14 | CREATE_COMPACT_UNIT_FRAME_PROFILE = "Create";
15 |
16 | AUTO_ACTIVATE_ON = "Auto-Activate On:";
17 | AUTO_ACTIVATE_PROFILE_NO_ENEMYTYPE = "Profile will never auto-activate. Either PvP or PvE must be selected.";
18 | AUTO_ACTIVATE_PROFILE_NO_SIZE = "Profile will never auto-activate. No group size is selected.";
19 | AUTO_ACTIVATE_PROFILE_NO_TALENT = "Profile will never auto-activate. No talent specialization is selected.";
20 | RESET_POSITION = "Reset Position";
21 |
22 | DONT_SAVE = "Don't Save";
23 | NEW_COMPACT_UNIT_FRAME_PROFILE = "New Profile";
24 | DEFAULT_CUF_PROFILE_NAME = "Primary";
25 | USE_EXISTING_PROFILE = "Use as a starting point:";
26 |
27 | COMPACT_UNIT_FRAME_COMBATLOCK_FUNC = "|cffffea3eCompactUnitFrame:|r |cffff0000The action is blocked in combat.|r"
28 |
29 | GROUP_NUMBER = "Group %d";
30 |
31 | PARTY_PHASED_MESSAGE = "This player is in a different phase. You can neither see nor interact with this player.";
32 | PARTY_IN_PUBLIC_GROUP_MESSAGE = "This player is currently in an instance group.";
33 |
34 | SHORT = "Short";
35 | TALL = "Tall";
36 | NARROW = "Narrow";
37 | WIDE = "Wide";
38 | UNLOCK = "Unlock"
39 | LOCK = "Lock"
40 | SHOW = "Show";
41 | ALL_ASSIST_LABEL_LONG = "Make Everyone Assistant";
42 | ALL_ASSIST_DESCRIPTION = "If checked, all raid members will have the permissions of a Raid Assistant.";
43 | ALL_ASSIST_NOT_LEADER_ERROR = "Only the Raid Leader may change this option.";
44 | RAID_MEMBERS = "Raid Members";
45 | PARTY_MEMBERS = "Party Members";
46 | ROLE_POLL = "Raid"; --"Role Check";
47 | PLAYER_COUNTDOWN_BUTTON = "Countdown";
48 |
49 | CONFIRM_COMPACT_UNIT_FRAME_PROFILE_UNSAVED_CHANGES = "|cffffffff%s|r contains unsaved changes that will be lost when performing this action. Would you like to save before proceeding?";
50 | CONFIRM_COMPACT_UNIT_FRAME_PROFILE_DELETION = "Are you sure you want to permanently delete |cffffffff%s|r?"
51 | OPTION_TOOLTIP_USE_RAID_STYLE_PARTY_FRAMES = "Uses Party Frames in the same style as the Raid Frames. These frames obey your Raid Frame options.";
52 |
53 | COMPACT_UNIT_FRAME_PROFILES = "Raid Profiles";
54 | COMPACT_UNIT_FRAME_PROFILES_LABEL = "Raid Profiles";
55 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE10PLAYERS = "10 Player Group";
56 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE15PLAYERS = "15 Player Group";
57 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE25PLAYERS = "25 Player Group";
58 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE2PLAYERS = "2 Player Group";
59 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE3PLAYERS = "3 Player Group";
60 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE40PLAYERS = "40 Player Group";
61 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE5PLAYERS = "5 Player Group";
62 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATEPVE = "PvE";
63 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATEPVP = "PvP";
64 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATESPEC1 = "Talent Spec 1";
65 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATESPEC2 = "Talent Spec 2";
66 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYAGGROHIGHLIGHT = "Display Aggro Highlight";
67 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYBORDER = "Display Border";
68 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYHEALPREDICTION = "Display Incoming Heals";
69 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYMAINTANKANDASSIST = "Display Main Tank and Assist";
70 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYNONBOSSDEBUFFS = "Show Debuffs";
71 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYONLYDISPELLABLEDEBUFFS = "Display Only Dispellable Debuffs";
72 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYPETS = "Display Pets";
73 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYPOWERBAR = "Display Power Bars";
74 | COMPACT_UNIT_FRAME_PROFILE_FRAMEHEIGHT = "Frame Height";
75 | COMPACT_UNIT_FRAME_PROFILE_FRAMEWIDTH = "Frame Width";
76 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT = "Display Health Text";
77 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT_HEALTH = "Health Remaining";
78 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT_LOSTHEALTH = "Health Lost";
79 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT_NONE = "None";
80 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT_PERC = "Health Percentage";
81 | COMPACT_UNIT_FRAME_PROFILE_HORIZONTALGROUPS = "Horizontal Groups";
82 | COMPACT_UNIT_FRAME_PROFILE_KEEPGROUPSTOGETHER = "Keep Groups Together";
83 | COMPACT_UNIT_FRAME_PROFILE_SORTBY = "Sort By:";
84 | COMPACT_UNIT_FRAME_PROFILE_SORTBY_ALPHABETICAL = "Alphabetical";
85 | COMPACT_UNIT_FRAME_PROFILE_SORTBY_GROUP = "Group";
86 | COMPACT_UNIT_FRAME_PROFILE_SORTBY_ROLE = "Role";
87 | COMPACT_UNIT_FRAME_PROFILE_SUBTYPE_ALL = "General Options";
88 | COMPACT_UNIT_FRAME_PROFILE_USECLASSCOLORS = "Display Class Colors";
89 |
90 | PARTY_IN_PUBLIC_GROUP_MESSAGE = "This player is currently in an instance group.";
91 |
92 |
93 | WORLD_MARKER = "World Marker %d";
94 | WORLD_MARKER1 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_6:14:14|t |cff0070ddBlue|r World Marker";
95 | WORLD_MARKER2 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_4:14:14|t |cff1eff00Green|r World Marker";
96 | WORLD_MARKER3 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_3:14:14|t |cffa335eePurple|r World Marker";
97 | WORLD_MARKER4 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_7:14:14|t |cffff2020Red|r World Marker";
98 | WORLD_MARKER5 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_1:14:14|t |cffffff00Yellow|r World Marker";
99 | WORLD_MARKER6 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_2:14:14|t |cffff7f3fOrange|r World Marker";
100 | WORLD_MARKER7 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_5:14:14|t |cffaaaaddSilver|r World Marker";
101 | WORLD_MARKER8 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_8:14:14|t |cffffffffWhite|r World Marker";
102 |
103 | REMOVE_WORLD_MARKERS = "Clear All";
104 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Locales/frFR.lua:
--------------------------------------------------------------------------------
1 | if not (GetLocale() == "frFR") then
2 | return
3 | end
4 |
5 | BUFF_STACKS_OVERFLOW = "*";
6 | LOST_HEALTH = "-%d";
7 |
8 | COMPACT_UNIT_FRAME_STATIC_POPUP_TEXT = "|cffbaf5aeCompactRaidFrame|r: possible avec un addon |cffff0000WeakAuras|r, mettre à jour WeakAuras à la version 3.2.1 ou supérieure."
9 |
10 |
11 | AUTO_ACTIVATE_DISABLED_IN_PARTY = "L’option Interface de type raid doit être cochée pour l'activer automatiquement pour ce nombre de joueurs.";
12 |
13 | USE_RAID_STYLE_PARTY_FRAMES = "Utiliser interface de type raid";
14 |
15 | CREATE_NEW_COMPACT_UNIT_FRAME_PROFILE = "Créer un nouveau profil";
16 | CREATE_COMPACT_UNIT_FRAME_PROFILE = "Créer";
17 |
18 | AUTO_ACTIVATE_ON = "Auto-activation sur :";
19 | AUTO_ACTIVATE_PROFILE_NO_ENEMYTYPE = "Le profil ne sera jamais auto-activé. L’option JcJ ou JcE doit être choisie.";
20 | AUTO_ACTIVATE_PROFILE_NO_SIZE = "Le profil ne sera jamais auto-activé. Aucune taille de groupe n’est choisie.";
21 | AUTO_ACTIVATE_PROFILE_NO_TALENT = "Le profil ne sera jamais auto-activé. Aucune spécialisation de talent n’est choisie.";
22 | RESET_POSITION = "Position par défaut";
23 |
24 | DONT_SAVE = "Ne pas sauvegarder";
25 | NEW_COMPACT_UNIT_FRAME_PROFILE = "Nouveau profil";
26 | DEFAULT_CUF_PROFILE_NAME = "Principal";
27 | USE_EXISTING_PROFILE = "Utiliser comme point de départ :";
28 |
29 | COMPACT_UNIT_FRAME_COMBATLOCK_FUNC = "|cffffea3eCompactUnitFrame:|r |cffff0000L'action au combat est bloquée.|r"
30 |
31 | GROUP_NUMBER = "Groupe %d";
32 |
33 | PARTY_PHASED_MESSAGE = "Ce personnage-joueur est dans une phase différente. Vous ne pouvez ni le voir, ni interagir avec lui.";
34 | PARTY_IN_PUBLIC_GROUP_MESSAGE = "Ce joueur est actuellement dans un groupe d’instance.";
35 |
36 | SHORT = "Court";
37 | TALL = "Haut";
38 | NARROW = "Étroit";
39 | WIDE = "Large";
40 | UNLOCK = "Déverrouiller";
41 | LOCK = "Verrouiller";
42 | SHOW = "Afficher";
43 | ALL_ASSIST_LABEL_LONG = "Tous assistants";
44 | ALL_ASSIST_DESCRIPTION = "Si cette option est cochée, tous les membres du raid auront les autorisations d’assistant raid.";
45 | ALL_ASSIST_NOT_LEADER_ERROR = "Seul le chef de raid peut modifier cette option.";
46 | RAID_MEMBERS = "Membres";
47 | PARTY_MEMBERS = "Participants";
48 | ROLE_POLL = "Raid";
49 | PLAYER_COUNTDOWN_BUTTON = "Compte à rebours";
50 |
51 | CONFIRM_COMPACT_UNIT_FRAME_PROFILE_UNSAVED_CHANGES = "|cffffffff%s|r contient des changements non sauvegardés qui seront perdus si vous effectuez cette action. Voulez-vous sauvegarder avant de continuer ?";
52 | CONFIRM_COMPACT_UNIT_FRAME_PROFILE_DELETION = "Voulez-vous vraiment effacer définitivement |cffffffff%s|r ?";
53 | OPTION_TOOLTIP_USE_RAID_STYLE_PARTY_FRAMES = "Utilise des fenêtres de groupe avec le même style que les fenêtres de raid. Ces fenêtres respectent vos options de fenêtres de raid.";
54 |
55 | COMPACT_UNIT_FRAME_PROFILES = "Profils de raid";
56 | COMPACT_UNIT_FRAME_PROFILES_LABEL = "Profils de raid";
57 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE10PLAYERS = "Groupe de 10 joueurs";
58 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE15PLAYERS = "Groupe de 15 joueurs";
59 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE25PLAYERS = "Groupe de 25 joueurs";
60 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE2PLAYERS = "Groupe de 2 joueurs";
61 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE3PLAYERS = "Groupe de 3 joueurs";
62 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE40PLAYERS = "Groupe de 40 joueurs";
63 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE5PLAYERS = "Groupe de 5 joueurs";
64 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATEPVE = "JcE";
65 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATEPVP = "JcJ";
66 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATESPEC1 = "Spécialisation 1";
67 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATESPEC2 = "Spécialisation 2";
68 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYAGGROHIGHLIGHT = "Emphase de menace";
69 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYBORDER = "Afficher les bordures";
70 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYHEALPREDICTION = "Soins en cours";
71 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYMAINTANKANDASSIST = "Tanks principaux et soutiens";
72 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYNONBOSSDEBUFFS = "Afficher les affaiblissements";
73 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYONLYDISPELLABLEDEBUFFS = "Affaiblissements dissipables uniquement";
74 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYPETS = "Familiers";
75 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYPOWERBAR = "Barres d'énergies";
76 | COMPACT_UNIT_FRAME_PROFILE_FRAMEHEIGHT = "Hauteur de la fenêtre";
77 | COMPACT_UNIT_FRAME_PROFILE_FRAMEWIDTH = "Largeur de la fenêtre";
78 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT = "Affichage du texte de vie";
79 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT_HEALTH = "Points de vie restants";
80 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT_LOSTHEALTH = "Points de vie perdus";
81 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT_NONE = "Aucun";
82 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT_PERC = "Pourcentage de points de vie";
83 | COMPACT_UNIT_FRAME_PROFILE_HORIZONTALGROUPS = "Groupes horizontaux";
84 | COMPACT_UNIT_FRAME_PROFILE_KEEPGROUPSTOGETHER = "Groupes solidarisés";
85 | COMPACT_UNIT_FRAME_PROFILE_SORTBY = "Trier par :";
86 | COMPACT_UNIT_FRAME_PROFILE_SORTBY_ALPHABETICAL = "Alphabétique";
87 | COMPACT_UNIT_FRAME_PROFILE_SORTBY_GROUP = "Groupe";
88 | COMPACT_UNIT_FRAME_PROFILE_SORTBY_ROLE = "Rôle";
89 | COMPACT_UNIT_FRAME_PROFILE_SUBTYPE_ALL = "Options générales";
90 | COMPACT_UNIT_FRAME_PROFILE_USECLASSCOLORS = "Couleurs de classe";
91 |
92 | PARTY_IN_PUBLIC_GROUP_MESSAGE = "Ce joueur est actuellement dans un groupe d’instance.";
93 |
94 | WORLD_MARKER = "Marqueur de terrain %d";
95 | WORLD_MARKER1 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_6:14:14|t Marqueur de terrain |cff0070ddbleu|r";
96 | WORLD_MARKER2 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_4:14:14|t Marqueur de terrain |cff1eff00vert|r";
97 | WORLD_MARKER3 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_3:14:14|t Marqueur de terrain |cffa335eeviolet|r";
98 | WORLD_MARKER4 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_7:14:14|t Marqueur de terrain |cffff2020rouge|r";
99 | WORLD_MARKER5 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_1:14:14|t Marqueur de terrain |cffffff00jaune|r";
100 | WORLD_MARKER6 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_2:14:14|t Marqueur de terrain |cffff7f3forange|r";
101 | WORLD_MARKER7 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_5:14:14|t Marqueur de terrain |cffaaaaddargenté|r";
102 | WORLD_MARKER8 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_8:14:14|t Marqueur de terrain |cffffffffblanc|r";
103 |
104 | REMOVE_WORLD_MARKERS = "Tout effacer";
105 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Locales/ruRU.lua:
--------------------------------------------------------------------------------
1 | if not (GetLocale() == "ruRU") then
2 | return
3 | end
4 |
5 | COMPACT_UNIT_FRAME_COUNTDOWN_START = "Старт через: %s"
6 | COMPACT_UNIT_FRAME_COUNTDOWN_NOW = "Сейчас!"
7 |
8 | BUFF_STACKS_OVERFLOW = "*";
9 | LOST_HEALTH = "-%d";
10 |
11 | COMPACT_UNIT_FRAME_STATIC_POPUP_TEXT = "|cffbaf5aeCompactRaidFrame|r: возможен кофликт с аддоном |cffff0000WeakAuras|r, обновите WeakAuras до версии 3.2.1 или выше."
12 |
13 |
14 | AUTO_ACTIVATE_DISABLED_IN_PARTY = "Для автоматического включения необходимо использовать рейдовый интерфейс для группы.";
15 |
16 | USE_RAID_STYLE_PARTY_FRAMES = "Рейдовый интерфейс для группы";
17 |
18 | CREATE_NEW_COMPACT_UNIT_FRAME_PROFILE = "Новый профиль";
19 | CREATE_COMPACT_UNIT_FRAME_PROFILE = "Создать";
20 |
21 | AUTO_ACTIVATE_ON = "Автоматически задействовать";
22 | AUTO_ACTIVATE_PROFILE_NO_ENEMYTYPE = "Профиль не будет активироваться автоматически, пока вы не выберете PvP или PvE.";
23 | AUTO_ACTIVATE_PROFILE_NO_SIZE = "Профиль не будет активироваться автоматически, пока вы не выберете размер группы.";
24 | AUTO_ACTIVATE_PROFILE_NO_TALENT = "Профиль не будет активироваться автоматически, пока вы не выберете набор талантов.";
25 | RESET_POSITION = "Сброс позиции";
26 |
27 | DONT_SAVE = "Не сохранять";
28 | NEW_COMPACT_UNIT_FRAME_PROFILE = "Новый профиль";
29 | DEFAULT_CUF_PROFILE_NAME = "Основной";
30 | USE_EXISTING_PROFILE = "Импортировать из:";
31 |
32 | COMPACT_UNIT_FRAME_COMBATLOCK_FUNC = "|cffffea3eCompactUnitFrame:|r |cffff0000Действие в бою заблокировано.|r"
33 |
34 | GROUP_NUMBER = "%d-я группа";
35 |
36 | PARTY_PHASED_MESSAGE = "Этот игрок находится в другой фазе. Вы не можете ни видеть его, ни взаимодействовать с ним.";
37 | PARTY_IN_PUBLIC_GROUP_MESSAGE = "Этот игрок сейчас находится в группе для прохождения подземелья.";
38 |
39 | SHORT = "Ниже";
40 | TALL = "Выше";
41 | NARROW = "Уже";
42 | WIDE = "Шире";
43 | UNLOCK = "Открепить"
44 | LOCK = "Закрепить"
45 | SHOW = "Показать";
46 | ALL_ASSIST_LABEL_LONG = "Назначить всех помощниками"
47 | ALL_ASSIST_DESCRIPTION = "Все участники рейда получают права помощника лидера рейда.";
48 | ALL_ASSIST_NOT_LEADER_ERROR = "Эту настройку может менять только лидер рейда.";
49 | RAID_MEMBERS = "Участники рейда";
50 | PARTY_MEMBERS = "Участники группы";
51 | ROLE_POLL = "Рейд"; --"Проверка ролей";
52 | PLAYER_COUNTDOWN_BUTTON = "Обратный отсчет";
53 |
54 | CONFIRM_COMPACT_UNIT_FRAME_PROFILE_UNSAVED_CHANGES = "Профиль |cffffffff%s|r содержит несохраненные изменения, которые будут потеряны при выполнении этого действия. Хотите сохранить изменения?";
55 | CONFIRM_COMPACT_UNIT_FRAME_PROFILE_DELETION = "Вы уверены, что хотите удалить профиль |cffffffff%s|r?";
56 | OPTION_TOOLTIP_USE_RAID_STYLE_PARTY_FRAMES = "Использовать стиль и настройки интерфейса рейда для интерфейса группы.";
57 |
58 | COMPACT_UNIT_FRAME_PROFILES = "Профили рейда";
59 | COMPACT_UNIT_FRAME_PROFILES_LABEL = "Профили рейда";
60 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE10PLAYERS = "в группе из 10 игроков";
61 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE15PLAYERS = "в группе из 15 игроков";
62 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE25PLAYERS = "в группе из 25 игроков";
63 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE2PLAYERS = "в группе из 2 игроков";
64 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE3PLAYERS = "в группе из 3 игроков";
65 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE40PLAYERS = "в группе из 40 игроков";
66 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE5PLAYERS = "в группе из 5 игроков";
67 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATEPVE = "в PvE";
68 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATEPVP = "в PvP";
69 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATESPEC1 = "для 1-го набора талантов";
70 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATESPEC2 = "для 2-го набора талантов";
71 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYAGGROHIGHLIGHT = "Индикатор угрозы";
72 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYBORDER = "Показывать границы";
73 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYHEALPREDICTION = "Поступающее лечение";
74 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYMAINTANKANDASSIST = "Показывать главного танка и наводчика";
75 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYNONBOSSDEBUFFS = "Отрицательные эффекты";
76 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYONLYDISPELLABLEDEBUFFS = "Только рассеиваемые отрицательные эффекты";
77 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYPETS = "Показывать питомцев";
78 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYPOWERBAR = "Индикаторы ресурсов";
79 | COMPACT_UNIT_FRAME_PROFILE_FRAMEHEIGHT = "Высота рамки рейда";
80 | COMPACT_UNIT_FRAME_PROFILE_FRAMEWIDTH = "Ширина рамки рейда";
81 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT = "Отображение здоровья";
82 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT_HEALTH = "Оставшееся здоровье";
83 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT_LOSTHEALTH = "Потерянное здоровье";
84 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT_NONE = "Не отображать";
85 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT_PERC = "Здоровье в процентах";
86 | COMPACT_UNIT_FRAME_PROFILE_HORIZONTALGROUPS = "Горизонтально";
87 | COMPACT_UNIT_FRAME_PROFILE_KEEPGROUPSTOGETHER = "Группы вместе";
88 | COMPACT_UNIT_FRAME_PROFILE_SORTBY = "Сортировка:";
89 | COMPACT_UNIT_FRAME_PROFILE_SORTBY_ALPHABETICAL = "по алфавиту";
90 | COMPACT_UNIT_FRAME_PROFILE_SORTBY_GROUP = "по группам";
91 | COMPACT_UNIT_FRAME_PROFILE_SORTBY_ROLE = "по роли";
92 | COMPACT_UNIT_FRAME_PROFILE_SUBTYPE_ALL = "Общие настройки";
93 | COMPACT_UNIT_FRAME_PROFILE_USECLASSCOLORS = "Цвета классов";
94 |
95 | PARTY_IN_PUBLIC_GROUP_MESSAGE = "Этот игрок сейчас находится в группе для прохождения подземелья.";
96 |
97 | WORLD_MARKER = "%d метка";
98 | WORLD_MARKER1 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_6:14:14|t |cff0070ddСиняя|r метка";
99 | WORLD_MARKER2 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_4:14:14|t |cff1eff00Зеленая|r метка";
100 | WORLD_MARKER3 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_3:14:14|t |cffa335eeЛиловая|r метка";
101 | WORLD_MARKER4 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_7:14:14|t |cffff2020Красная|r метка";
102 | WORLD_MARKER5 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_1:14:14|t |cffffff00Желтая|r метка";
103 | WORLD_MARKER6 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_2:14:14|t |cffff7f3fОранжевая|r метка";
104 | WORLD_MARKER7 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_5:14:14|t |cffaaaaddСеребряная|r метка";
105 | WORLD_MARKER8 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_8:14:14|t |cffffffffБелая|r метка";
106 |
107 | REMOVE_WORLD_MARKERS = "Убрать все метки";
108 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Locales/zhCN.lua:
--------------------------------------------------------------------------------
1 | if not (GetLocale() == "zhCN") then
2 | return
3 | end
4 |
5 | COMPACT_UNIT_FRAME_COUNTDOWN_START = "倒数 %s"
6 | COMPACT_UNIT_FRAME_COUNTDOWN_NOW = "开始!"
7 |
8 | COMPACT_UNIT_FRAME_STATIC_POPUP_TEXT = "|cffbaf5aeCompactRaidFrame|r: There may be a conflict with the |cffff0000WeakAuras|r addon, update WeakAuras to version 3.2.1 or later"
9 |
10 | AUTO_ACTIVATE_DISABLED_IN_PARTY = "Raid-Style Party Frames must be enabled to auto-activate with this number of players.";
11 |
12 | USE_RAID_STYLE_PARTY_FRAMES = "使用团队风格的小队框体界面";
13 |
14 | CREATE_NEW_COMPACT_UNIT_FRAME_PROFILE = "创建一个新配置";
15 | CREATE_COMPACT_UNIT_FRAME_PROFILE = "创建";
16 |
17 | AUTO_ACTIVATE_ON = "自动套用于:";
18 | AUTO_ACTIVATE_PROFILE_NO_ENEMYTYPE = "Profile will never auto-activate. Either PvP or PvE must be selected.";
19 | AUTO_ACTIVATE_PROFILE_NO_SIZE = "Profile will never auto-activate. No group size is selected.";
20 | AUTO_ACTIVATE_PROFILE_NO_TALENT = "Profile will never auto-activate. No talent specialization is selected.";
21 | RESET_POSITION = "重置位置";
22 |
23 | DONT_SAVE = "不保存";
24 | NEW_COMPACT_UNIT_FRAME_PROFILE = "新配置";
25 | DEFAULT_CUF_PROFILE_NAME = "主配置";
26 | USE_EXISTING_PROFILE = "作为一个新配置使用:";
27 |
28 | COMPACT_UNIT_FRAME_COMBATLOCK_FUNC = "|cffffea3eCompactUnitFrame:|r |cffff0000The action is blocked in combat.|r"
29 |
30 | GROUP_NUMBER = "Group %d";
31 |
32 | PARTY_PHASED_MESSAGE = "This player is in a different phase. You can neither see nor interact with this player.";
33 | PARTY_IN_PUBLIC_GROUP_MESSAGE = "This player is currently in an instance group.";
34 |
35 | SHORT = "短";
36 | TALL = "长";
37 | NARROW = "窄";
38 | WIDE = "宽";
39 | UNLOCK = "解锁"
40 | LOCK = "锁定"
41 | SHOW = "显示";
42 | ALL_ASSIST_LABEL_LONG = "将所有人提升为助理";
43 | ALL_ASSIST_DESCRIPTION = "If checked, all raid members will have the permissions of a Raid Assistant.";
44 | ALL_ASSIST_NOT_LEADER_ERROR = "Only the Raid Leader may change this option.";
45 | RAID_MEMBERS = "团队成员";
46 | PARTY_MEMBERS = "队伍成员";
47 | ROLE_POLL = "团队"; --"Role Check";
48 | PLAYER_COUNTDOWN_BUTTON = "倒计时";
49 |
50 | CONFIRM_COMPACT_UNIT_FRAME_PROFILE_UNSAVED_CHANGES = "|cffffffff%s|r contains unsaved changes that will be lost when performing this action. Would you like to save before proceeding?";
51 | CONFIRM_COMPACT_UNIT_FRAME_PROFILE_DELETION = "Are you sure you want to permanently delete |cffffffff%s|r?"
52 | OPTION_TOOLTIP_USE_RAID_STYLE_PARTY_FRAMES = "按照团队框体的方式显示你的小队框体界面。这些框体遵循你的团队框体设置";
53 |
54 | COMPACT_UNIT_FRAME_PROFILES = "团队界面配置";
55 | COMPACT_UNIT_FRAME_PROFILES_LABEL = "团队界面配置";
56 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE10PLAYERS = "10 名玩家的队伍";
57 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE15PLAYERS = "15 名玩家的队伍";
58 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE25PLAYERS = "25 名玩家的队伍";
59 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE2PLAYERS = "2 名玩家的队伍";
60 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE3PLAYERS = "3 名玩家的队伍";
61 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE40PLAYERS = "40 名玩家的队伍";
62 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATE5PLAYERS = "5 名玩家的队伍";
63 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATEPVE = "PvE";
64 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATEPVP = "PvP";
65 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATESPEC1 = "天赋 1";
66 | COMPACT_UNIT_FRAME_PROFILE_AUTOACTIVATESPEC2 = "天赋 2";
67 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYAGGROHIGHLIGHT = "高亮显示仇恨目标";
68 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYBORDER = "显示边框";
69 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYHEALPREDICTION = "显示预计治疗";
70 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYMAINTANKANDASSIST = "显示主坦克和主助理";
71 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYNONBOSSDEBUFFS = "显示负面效果";
72 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYONLYDISPELLABLEDEBUFFS = "只显示可供驱散的负面效果";
73 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYPETS = "显示宠物";
74 | COMPACT_UNIT_FRAME_PROFILE_DISPLAYPOWERBAR = "显示能量条";
75 | COMPACT_UNIT_FRAME_PROFILE_FRAMEHEIGHT = "框体高度";
76 | COMPACT_UNIT_FRAME_PROFILE_FRAMEWIDTH = "框体宽度";
77 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT = "显示生命值数值";
78 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT_HEALTH = "剩余生命值";
79 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT_LOSTHEALTH = "损失生命值";
80 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT_NONE = "不显示";
81 | COMPACT_UNIT_FRAME_PROFILE_HEALTHTEXT_PERC = "生命值百分比";
82 | COMPACT_UNIT_FRAME_PROFILE_HORIZONTALGROUPS = "小队成员水平排列";
83 | COMPACT_UNIT_FRAME_PROFILE_KEEPGROUPSTOGETHER = "保持小队相连";
84 | COMPACT_UNIT_FRAME_PROFILE_SORTBY = "排列顺序:";
85 | COMPACT_UNIT_FRAME_PROFILE_SORTBY_ALPHABETICAL = "字母顺序";
86 | COMPACT_UNIT_FRAME_PROFILE_SORTBY_GROUP = "队伍";
87 | COMPACT_UNIT_FRAME_PROFILE_SORTBY_ROLE = "角色";
88 | COMPACT_UNIT_FRAME_PROFILE_SUBTYPE_ALL = "General Options";
89 | COMPACT_UNIT_FRAME_PROFILE_USECLASSCOLORS = "显示职业颜色";
90 |
91 | PARTY_IN_PUBLIC_GROUP_MESSAGE = "This player is currently in an instance group.";
92 |
93 | WORLD_MARKER = "위치 표시기 %d";
94 | WORLD_MARKER1 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_6:14:14|t |cff0070dd파란색|r 위치 표시기";
95 | WORLD_MARKER2 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_4:14:14|t |cff1eff00초록색|r 위치 표시기";
96 | WORLD_MARKER3 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_3:14:14|t |cffa335ee보라색|r 위치 표시기";
97 | WORLD_MARKER4 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_7:14:14|t |cffff2020빨간색|r 위치 표시기";
98 | WORLD_MARKER5 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_1:14:14|t |cffffff00노란색|r 위치 표시기";
99 | WORLD_MARKER6 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_2:14:14|t |cffff7f3f주황색|r 위치 표시기";
100 | WORLD_MARKER7 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_5:14:14|t |cffaaaadd은색|r 위치 표시기";
101 | WORLD_MARKER8 = "|TInterface\\TargetingFrame\\UI-RaidTargetingIcon_8:14:14|t |cffffffff흰색|r 위치 표시기";
102 |
103 | REMOVE_WORLD_MARKERS = "모두 삭제";
104 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Buttons/UI-CheckBox-Check-Disabled.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Buttons/UI-CheckBox-Check-Disabled.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Buttons/UI-CheckBox-Check.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Buttons/UI-CheckBox-Check.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Buttons/UI-CheckBox-Down.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Buttons/UI-CheckBox-Down.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Buttons/UI-CheckBox-Highlight.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Buttons/UI-CheckBox-Highlight.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Buttons/UI-CheckBox-Up.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Buttons/UI-CheckBox-Up.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Buttons/UI-Common-MouseHilight.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Buttons/UI-Common-MouseHilight.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Buttons/UI-Debuff-Overlays.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Buttons/UI-Debuff-Overlays.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Buttons/UI-GroupLoot-Pass-Up.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Buttons/UI-GroupLoot-Pass-Up.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Buttons/UI-Panel-Button-Highlight.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Buttons/UI-Panel-Button-Highlight.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Buttons/UI-Panel-Button-Up.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Buttons/UI-Panel-Button-Up.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Buttons/UI-Panel-Button-YellowHighlight.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Buttons/UI-Panel-Button-YellowHighlight.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Buttons/UI-RADIOBUTTON.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Buttons/UI-RADIOBUTTON.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Buttons/UI-SILVER-BUTTON-DOWN.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Buttons/UI-SILVER-BUTTON-DOWN.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Buttons/UI-SILVER-BUTTON-HIGHLIGHT.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Buttons/UI-SILVER-BUTTON-HIGHLIGHT.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Buttons/UI-SILVER-BUTTON-UP.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Buttons/UI-SILVER-BUTTON-UP.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Buttons/UI-SliderBar-Button-Horizontal.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Buttons/UI-SliderBar-Button-Horizontal.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/CHATFRAME/ChatFrameExpandArrow.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/CHATFRAME/ChatFrameExpandArrow.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/CHATFRAME/UI-ChatIcon-ScrollDown-Down.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/CHATFRAME/UI-ChatIcon-ScrollDown-Down.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/CHATFRAME/UI-ChatIcon-ScrollDown-Up.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/CHATFRAME/UI-ChatIcon-ScrollDown-Up.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/CHATFRAME/UI-ChatIcon-ScrollEnd-Disabled.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/CHATFRAME/UI-ChatIcon-ScrollEnd-Disabled.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/CHATFRAME/UI-ChatInputBorder-Left2.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/CHATFRAME/UI-ChatInputBorder-Left2.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/CHATFRAME/UI-ChatInputBorder-Mid2.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/CHATFRAME/UI-ChatInputBorder-Mid2.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/CHATFRAME/UI-ChatInputBorder-Right2.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/CHATFRAME/UI-ChatInputBorder-Right2.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/COMMON/UI-DropDownRadioChecks.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/COMMON/UI-DropDownRadioChecks.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/CastingBar/UI-CastingBar-Spark.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/CastingBar/UI-CastingBar-Spark.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Cooldown/cooldown.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Cooldown/cooldown.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Cooldown/edge.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Cooldown/edge.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/DialogFrame/UI-DialogBox-Background-Dark.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/DialogFrame/UI-DialogBox-Background-Dark.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/!UI-Frame.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/!UI-Frame.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/GeneralFrameInsetBorders.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/GeneralFrameInsetBorders.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/GeneralFrameInsetBordersHorizontal.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/GeneralFrameInsetBordersHorizontal.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UI-Background-Marble.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UI-Background-Marble.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UI-Background-Rock.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UI-Background-Rock.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UI-Background-TestWatermark.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UI-Background-TestWatermark.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UI-Background-TestWatermarkBackground.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UI-Background-TestWatermarkBackground.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UI-Frame.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UI-Frame.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrame2x.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrame2x.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrame2xHorizontal.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrame2xHorizontal.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrame2xVertical.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrame2xVertical.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameAlliance.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameAlliance.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameAllianceBackground.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameAllianceBackground.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameAllianceVertical.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameAllianceVertical.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameBars.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameBars.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameDiamondMetal.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameDiamondMetal.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameDiamondMetal2x.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameDiamondMetal2x.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameDiamondMetalHeader2x.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameDiamondMetalHeader2x.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameDiamondMetalVertical.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameDiamondMetalVertical.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameDiamondMetalVertical2x.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameDiamondMetalVertical2x.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameGenericMetal.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameGenericMetal.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameGenericMetalVertical.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameGenericMetalVertical.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameHiRes.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameHiRes.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameHiResHorizontal.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameHiResHorizontal.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameHiResVertical.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameHiResVertical.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameHorde.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameHorde.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameHordeBackground.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameHordeBackground.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameHordeVertical.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameHordeVertical.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameHorizontal.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameHorizontal.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameIconBorder.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameIconBorder.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameIconMask.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameIconMask.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameMarine.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameMarine.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameMarineBackground.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameMarineBackground.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameMarineVertical.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameMarineVertical.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameMechagon.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameMechagon.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameMechagonBackground.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameMechagonBackground.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameMechagonVertical.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameMechagonVertical.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameMertal2xVertical.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameMertal2xVertical.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameMetal.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameMetal.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameMetal2x.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameMetal2x.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameMetalHorizontal.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameMetalHorizontal.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameMetalHorizontal2x.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameMetalHorizontal2x.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameMetalVertical.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameMetalVertical.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameMetalVertical2x.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameMetalVertical2x.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameNeutral.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameNeutral.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameNeutralBackground.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameNeutralBackground.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameNeutralVertical.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameNeutralVertical.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFramePortrait.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFramePortrait.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFramePortraitVertical.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFramePortraitVertical.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameRoleIcons.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameRoleIcons.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameSimpleMetal.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameSimpleMetal.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameSimpleMetalVertical.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameSimpleMetalVertical.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/UIFrameVertical.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/UIFrameVertical.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FrameGeneral/_UI-Frame.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FrameGeneral/_UI-Frame.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FriendsFrame/InformationIcon-Highlight.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FriendsFrame/InformationIcon-Highlight.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/FriendsFrame/InformationIcon.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/FriendsFrame/InformationIcon.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/GLUES/CHARACTERCREATE/CharacterCreate-LabelFrame.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/GLUES/CHARACTERCREATE/CharacterCreate-LabelFrame.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/LFGFRAME/LFGROLE.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/LFGFRAME/LFGROLE.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/QUESTFRAME/UI-QuestTitleHighlight.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/QUESTFRAME/UI-QuestTitleHighlight.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Absorb-Edge.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Absorb-Edge.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Absorb-Fill.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Absorb-Fill.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Absorb-Overabsorb.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Absorb-Overabsorb.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-Bar-Hp-Bg.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-Bar-Hp-Bg.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-Bar-Hp-Fill.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-Bar-Hp-Fill.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-Bar-Resource-Background.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-Bar-Resource-Background.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-Bar-Resource-Fill.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-Bar-Resource-Fill.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-FrameHighlights.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-FrameHighlights.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-HSeparator.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-HSeparator.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-Icon-DebuffCurse.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-Icon-DebuffCurse.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-Icon-DebuffDisease.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-Icon-DebuffDisease.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-Icon-DebuffMagic.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-Icon-DebuffMagic.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-Icon-DebuffPoison.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-Icon-DebuffPoison.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-Icon-Rez.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-Icon-Rez.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-Icon-SummonAccepted.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-Icon-SummonAccepted.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-Icon-SummonDeclined.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-Icon-SummonDeclined.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-Icon-SummonPending.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-Icon-SummonPending.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-Move-BottomFade.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-Move-BottomFade.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-Move-Down.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-Move-Down.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-Move-TopFade.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-Move-TopFade.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-Move-Up.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-Move-Up.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-VSeparator.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-VSeparator.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Raid-WorldPing.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Raid-WorldPing.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidBorder-BottomLeft.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidBorder-BottomLeft.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidBorder-BottomMiddle.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidBorder-BottomMiddle.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidBorder-BottomRight.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidBorder-BottomRight.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidBorder-Left.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidBorder-Left.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidBorder-Right.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidBorder-Right.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidBorder-UpperLeft.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidBorder-UpperLeft.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidBorder-UpperMiddle.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidBorder-UpperMiddle.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidBorder-UpperRight.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidBorder-UpperRight.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidFrameSummon.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidFrameSummon.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-BottomLeft.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-BottomLeft.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-BottomMiddle.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-BottomMiddle.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-BottomRight.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-BottomRight.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-Left.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-Left.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-Right.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-Right.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-Toggle.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-Toggle.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-UpperLeft.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-UpperLeft.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-UpperMiddle.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-UpperMiddle.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-UpperRight.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/RaidPanel-UpperRight.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/ReadyCheck-NotReady.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/ReadyCheck-NotReady.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/ReadyCheck-Ready.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/ReadyCheck-Ready.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/ReadyCheck-Waiting.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/ReadyCheck-Waiting.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Shield-Fill.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Shield-Fill.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Shield-Overlay.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Shield-Overlay.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/Shield-Overshield.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/Shield-Overshield.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/UI-RAIDFRAME-ARROW.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/UI-RAIDFRAME-ARROW.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/UI-RAIDFRAME-HEALTHBAR.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/UI-RAIDFRAME-HEALTHBAR.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/UI-RAIDFRAME-MAINASSIST.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/UI-RAIDFRAME-MAINASSIST.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/UI-RAIDFRAME-MAINTANK.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/UI-RAIDFRAME-MAINTANK.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/UI-RAIDINFO-HEADER.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/UI-RAIDINFO-HEADER.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/UI-RaidFrame-GroupBg.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/UI-RaidFrame-GroupBg.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/UI-RaidFrame-GroupButton.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/UI-RaidFrame-GroupButton.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/UI-RaidFrame-GroupOutline.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/UI-RaidFrame-GroupOutline.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/UI-RaidFrame-Pets.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/UI-RaidFrame-Pets.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/UI-RaidFrame-Threat.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/UI-RaidFrame-Threat.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/RAIDFRAME/UI-ReadyCheckFrame.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/RAIDFRAME/UI-ReadyCheckFrame.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Sounds/SOUNDKIT/158565.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Sounds/SOUNDKIT/158565.ogg
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Sounds/SOUNDKIT/158566.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Sounds/SOUNDKIT/158566.ogg
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Sounds/SOUNDKIT/158958.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Sounds/SOUNDKIT/158958.ogg
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Sounds/SOUNDKIT/34468.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Sounds/SOUNDKIT/34468.ogg
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Sounds/SOUNDKIT/852.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Sounds/SOUNDKIT/852.ogg
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/Sounds/SOUNDKIT/856.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/Sounds/SOUNDKIT/856.ogg
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/TARGETINGFRAME/NameplateFill.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/TARGETINGFRAME/NameplateFill.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/TARGETINGFRAME/UI-RaidTargetingIcons.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/TARGETINGFRAME/UI-RaidTargetingIcons.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/TARGETINGFRAME/UI-StatusBar.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/TARGETINGFRAME/UI-StatusBar.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Media/TARGETINGFRAME/UI-TargetingFrame-BarFill.blp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/RomanSpector/CompactRaidFrame/938880e2dea5a6c3af60e2c32c0870992183e0da/CompactRaidFrame/Media/TARGETINGFRAME/UI-TargetingFrame-BarFill.blp
--------------------------------------------------------------------------------
/CompactRaidFrame/Templates/Backdrop.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 | Mixin(self, BackdropTemplateMixin);
9 |
10 |
11 | self:OnBackdropLoaded();
12 | self:OnBackdropSizeChanged();
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Templates/SecureUIPanelTemplates.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
53 |
54 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Templates/SharedUIPanelTemplates.lua:
--------------------------------------------------------------------------------
1 | UIMenuButtonStretchMixin = {}
2 |
3 | function UIMenuButtonStretchMixin:SetTextures(texture)
4 | self.TopLeft:SetTexture(texture);
5 | self.TopRight:SetTexture(texture);
6 | self.BottomLeft:SetTexture(texture);
7 | self.BottomRight:SetTexture(texture);
8 | self.TopMiddle:SetTexture(texture);
9 | self.MiddleLeft:SetTexture(texture);
10 | self.MiddleRight:SetTexture(texture);
11 | self.BottomMiddle:SetTexture(texture);
12 | self.MiddleMiddle:SetTexture(texture);
13 | end
14 |
15 | function UIMenuButtonStretchMixin:OnMouseDown(button)
16 | if ( self:IsEnabled() ) then
17 | self:SetTextures("Interface\\Buttons\\UI-Silver-Button-Down");
18 | if ( self.Icon ) then
19 | if ( not self.Icon.oldPoint ) then
20 | local point, relativeTo, relativePoint, x, y = self.Icon:GetPoint(1);
21 | self.Icon.oldPoint = point;
22 | self.Icon.oldX = x;
23 | self.Icon.oldY = y;
24 | end
25 | self.Icon:SetPoint(self.Icon.oldPoint, self.Icon.oldX + 1, self.Icon.oldY - 1);
26 | end
27 | end
28 | end
29 |
30 | function UIMenuButtonStretchMixin:OnMouseUp(button)
31 | if ( self:IsEnabled() ) then
32 | self:SetTextures("Interface\\Buttons\\UI-Silver-Button-Up");
33 | if ( self.Icon ) then
34 | self.Icon:SetPoint(self.Icon.oldPoint, self.Icon.oldX, self.Icon.oldY);
35 | end
36 | end
37 | end
38 |
39 | function UIMenuButtonStretchMixin:OnShow()
40 | -- we need to reset our textures just in case we were hidden before a mouse up fired
41 | self:SetTextures("Interface\\Buttons\\UI-Silver-Button-Up");
42 | end
43 |
44 | function UIMenuButtonStretchMixin:OnEnable()
45 | self:SetTextures("Interface\\Buttons\\UI-Silver-Button-Up");
46 | end
47 |
48 | function UIMenuButtonStretchMixin:OnEnter()
49 | if(self.tooltipText ~= nil) then
50 | GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
51 | GameTooltip_SetTitle(GameTooltip, self.tooltipText);
52 | GameTooltip:Show();
53 | end
54 | end
55 |
56 | function UIMenuButtonStretchMixin:OnLeave()
57 | if(self.tooltipText ~= nil) then
58 | GameTooltip:Hide();
59 | end
60 | end
61 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Templates/UIDropDownMenu.lua:
--------------------------------------------------------------------------------
1 | local function UIDropDownMenu_CreateUnChecked(object)
2 | local uncheck = _G[object:GetName().."UnCheck"];
3 | if ( uncheck ) then
4 | return;
5 | end
6 |
7 | uncheck = object:CreateTexture("$parentUnCheck", "BORDER");
8 | _G[object:GetName().."UnCheck"] = uncheck;
9 | uncheck:SetSize(16, 16);
10 | uncheck:SetPoint("Left");
11 | end
12 |
13 | hooksecurefunc("UIDropDownMenu_AddButton", function(info, level)
14 | if ( not level ) then
15 | level = 1;
16 | end
17 |
18 | local listFrame = _G["DropDownList"..level];
19 | local index = listFrame and listFrame.numButtons or 1;
20 |
21 | listFrame = listFrame or _G["DropDownList"..level];
22 | local listFrameName = listFrame:GetName();
23 |
24 | local button = _G[listFrameName.."Button"..index];
25 | UIDropDownMenu_CreateUnChecked(button);
26 |
27 | if ( not info.notCheckable ) then
28 | local check = _G[listFrameName.."Button"..index.."Check"];
29 | local uncheck = _G[listFrameName.."Button"..index.."UnCheck"];
30 | if ( info.disabled ) then
31 | check:SetDesaturated(true);
32 | check:SetAlpha(0.5);
33 | uncheck:SetDesaturated(true);
34 | uncheck:SetAlpha(0.5);
35 | else
36 | check:SetDesaturated(false);
37 | check:SetAlpha(1);
38 | uncheck:SetDesaturated(false);
39 | uncheck:SetAlpha(1);
40 | end
41 |
42 | if ( info.isRadio ) then
43 | check:SetTexCoord(0.0, 0.5, 0.5, 1.0);
44 | check:SetTexture("Interface\\AddOns\\CompactRaidFrame\\Media\\COMMON\\UI-DropDownRadioChecks");
45 | uncheck:SetTexCoord(0.5, 1.0, 0.5, 1.0);
46 | uncheck:SetTexture("Interface\\AddOns\\CompactRaidFrame\\Media\\COMMON\\UI-DropDownRadioChecks");
47 | else
48 | check:SetTexCoord(0, 1, 0, 1);
49 | check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check");
50 | end
51 |
52 | -- Checked can be a function now
53 | local checked = info.checked;
54 | if ( type(checked) == "function" ) then
55 | checked = checked(button);
56 | end
57 | -- Show the check if checked
58 | if ( checked ) then
59 | button:LockHighlight();
60 | check:Show();
61 | uncheck:Hide();
62 | else
63 | button:UnlockHighlight();
64 | check:Hide();
65 | uncheck:Show();
66 | end
67 | else
68 | _G[listFrameName.."Button"..index.."Check"]:Hide();
69 | _G[listFrameName.."Button"..index.."UnCheck"]:Hide();
70 | end
71 |
72 | if ( not info.isRadio ) then
73 | _G[listFrameName.."Button"..index.."UnCheck"]:Hide();
74 | end
75 |
76 | button.checked = info.checked;
77 | end)
78 |
--------------------------------------------------------------------------------
/CompactRaidFrame/Templates/load.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/CompactRaidFrame/embeds.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/CompactRaidFrame/locales.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CompactRaidFrame
2 |
3 | ## Backport CompactRaidFrame from retail for 3.3.5a
4 |
5 | ## Open -main folder in zip and copy CompactRaidFrame folder to AddOns
6 |
7 | ## [Download](https://github.com/RomanSpector/CompactRaidFrame/archive/refs/heads/main.zip)
8 |
--------------------------------------------------------------------------------