vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 local MAJOR_VERSION = "Class 1.1"
2 local MINOR_VERSION = tonumber(string.sub("$Revision: 1537 $", 12, -3))
3  
4 if BabbleLib and BabbleLib.versions[MAJOR_VERSION] and BabbleLib.versions[MAJOR_VERSION].minor >= MINOR_VERSION then
5 return
6 end
7  
8 local locale = GetLocale and GetLocale() or "enUS"
9 if locale ~= "frFR" and locale ~= "deDE" and locale ~= "zhCN" then
10 locale = "enUS"
11 end
12  
13 local initClasses, classes
14 if locale == "enUS" then
15 function initClasses()
16 classes = {
17 WARLOCK = "Warlock",
18 WARRIOR = "Warrior",
19 HUNTER = "Hunter",
20 MAGE = "Mage",
21 PRIEST = "Priest",
22 DRUID = "Druid",
23 PALADIN = "Paladin",
24 SHAMAN = "Shaman",
25 ROGUE = "Rogue",
26 }
27 end
28 elseif locale == "deDE" then
29 function initClasses()
30 classes = {
31 WARLOCK = "Hexenmeister",
32 WARRIOR = "Krieger",
33 HUNTER = "J\195\164ger",
34 MAGE = "Magier",
35 PRIEST = "Priester",
36 DRUID = "Druide",
37 PALADIN = "Paladin",
38 SHAMAN = "Schamane",
39 ROGUE = "Schurke",
40 }
41 end
42 elseif locale == "frFR" then
43 function initClasses()
44 classes = {
45 WARLOCK = "D\195\169moniste",
46 WARRIOR = "Guerrier",
47 HUNTER = "Chasseur",
48 MAGE = "Mage",
49 PRIEST = "Pr\195\170tre",
50 DRUID = "Druide",
51 PALADIN = "Paladin",
52 SHAMAN = "Chaman",
53 ROGUE = "Voleur",
54 }
55 end
56 elseif locale == "zhCN" then
57 function initClasses()
58 classes = {
59 WARLOCK = "\230\156\175\229\163\171",
60 WARRIOR = "\230\136\152\229\163\171",
61 HUNTER = "\231\140\142\228\186\186",
62 MAGE = "\230\179\149\229\184\136",
63 PRIEST = "\231\137\167\229\184\136",
64 DRUID = "\229\190\183\233\178\129\228\188\138",
65 PALADIN = "\229\156\163\233\170\145\229\163\171",
66 SHAMAN = "\232\144\168\230\187\161\231\165\173\231\165\128",
67 ROGUE = "\231\155\151\232\180\188",
68 }
69 end
70 end
71  
72 -------------IRIEL'S-STUB-CODE--------------
73 local stub = {};
74  
75 -- Instance replacement method, replace contents of old with that of new
76 function stub:ReplaceInstance(old, new)
77 for k,v in pairs(old) do old[k]=nil; end
78 for k,v in pairs(new) do old[k]=v; end
79 end
80  
81 -- Get a new copy of the stub
82 function stub:NewStub()
83 local newStub = {};
84 self:ReplaceInstance(newStub, self);
85 newStub.lastVersion = '';
86 newStub.versions = {};
87 return newStub;
88 end
89  
90 -- Get instance version
91 function stub:GetInstance(version)
92 if (not version) then version = self.lastVersion; end
93 local versionData = self.versions[version];
94 if (not versionData) then
95 message("Cannot find library instance with version '"
96 .. version .. "'");
97 return;
98 end
99 return versionData.instance;
100 end
101  
102 -- Register new instance
103 function stub:Register(newInstance)
104 local version,minor = newInstance:GetLibraryVersion();
105 self.lastVersion = version;
106 local versionData = self.versions[version];
107 if (not versionData) then
108 -- This one is new!
109 versionData = { instance = newInstance,
110 minor = minor,
111 old = {}
112 };
113 self.versions[version] = versionData;
114 newInstance:LibActivate(self);
115 return newInstance;
116 end
117 if (minor <= versionData.minor) then
118 -- This one is already obsolete
119 if (newInstance.LibDiscard) then
120 newInstance:LibDiscard();
121 end
122 return versionData.instance;
123 end
124 -- This is an update
125 local oldInstance = versionData.instance;
126 local oldList = versionData.old;
127 versionData.instance = newInstance;
128 versionData.minor = minor;
129 local skipCopy = newInstance:LibActivate(self, oldInstance, oldList);
130 table.insert(oldList, oldInstance);
131 if (not skipCopy) then
132 for i, old in ipairs(oldList) do
133 self:ReplaceInstance(old, newInstance);
134 end
135 end
136 return newInstance;
137 end
138  
139 -- Bind stub to global scope if it's not already there
140 if (not BabbleLib) then
141 BabbleLib = stub:NewStub();
142 end
143  
144 -- Nil stub for garbage collection
145 stub = nil;
146 -----------END-IRIEL'S-STUB-CODE------------
147  
148 local lib = {}
149 local localClasses
150  
151 function lib:GetEnglish(class)
152 return localClasses[class] or class
153 end
154  
155 function lib:GetLocalized(class)
156 return classes[class] or class
157 end
158  
159 function lib:GetIterator()
160 return pairs(classes)
161 end
162  
163 function lib:GetReverseIterator()
164 return pairs(localClasses)
165 end
166  
167 function lib:GetColor(class)
168 class = self:GetEnglish(class)
169 if class == "WARLOCK" then
170 return 0.784314, 0.509804, 0.588235
171 elseif class == "WARRIOR" then
172 return 0.784314, 0.607843, 0.431373
173 elseif class == "HUNTER" then
174 return 0.666667, 0.823529, 0.666667
175 elseif class == "MAGE" then
176 return 0.411765, 0.803922, 0.941176
177 elseif class == "PRIEST" then
178 return 1, 1, 1
179 elseif class == "DRUID" then
180 return 1, 0.490196, 0.039216
181 elseif class == "PALADIN" or class == "SHAMAN" then
182 return 0.960784, 0.549020, 0.725490
183 elseif class == "ROGUE" then
184 return 1, 0.960784, 0.411765
185 end
186 return 0.627451, 0.627451, 0.627451
187 end
188  
189 function lib:GetHexColor(class)
190 local r, g, b = self:GetColor(class)
191 return format("%02x%02x%02x", r * 255, g * 255, b * 255)
192 end
193  
194 function lib:HasClass(class)
195 return (classes[class] or localClasses[class]) and true or false
196 end
197  
198 function lib:GetLibraryVersion()
199 return MAJOR_VERSION, MINOR_VERSION
200 end
201  
202 function lib:LibActivate(stub, oldLib, oldList)
203 initClasses()
204 initClasses = nil
205  
206 localClasses = {}
207 for english, localized in pairs(classes) do
208 if string.sub(english, -4) == "_ALT" then
209 localClasses[localized] = string.sub(english, 0, -5)
210 elseif string.sub(english, -5, -2) == "_ALT" then
211 localClasses[localized] = string.sub(english, 0, -6)
212 else
213 localClasses[localized] = english
214 end
215 end
216 end
217  
218 function lib:LibDeactivate()
219 classes, localClasses, initClasses = nil
220 end
221  
222 BabbleLib:Register(lib)
223 lib = nil