vanilla-wow-addons – Blame information for rev 1
?pathlinks?
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 |