vanilla-wow-addons – Rev 1
?pathlinks?
local MAJOR_VERSION = "Class 1.1"
local MINOR_VERSION = tonumber(string.sub("$Revision: 1537 $", 12, -3))
if BabbleLib and BabbleLib.versions[MAJOR_VERSION] and BabbleLib.versions[MAJOR_VERSION].minor >= MINOR_VERSION then
return
end
local locale = GetLocale and GetLocale() or "enUS"
if locale ~= "frFR" and locale ~= "deDE" and locale ~= "zhCN" then
locale = "enUS"
end
local initClasses, classes
if locale == "enUS" then
function initClasses()
classes = {
WARLOCK = "Warlock",
WARRIOR = "Warrior",
HUNTER = "Hunter",
MAGE = "Mage",
PRIEST = "Priest",
DRUID = "Druid",
PALADIN = "Paladin",
SHAMAN = "Shaman",
ROGUE = "Rogue",
}
end
elseif locale == "deDE" then
function initClasses()
classes = {
WARLOCK = "Hexenmeister",
WARRIOR = "Krieger",
HUNTER = "J\195\164ger",
MAGE = "Magier",
PRIEST = "Priester",
DRUID = "Druide",
PALADIN = "Paladin",
SHAMAN = "Schamane",
ROGUE = "Schurke",
}
end
elseif locale == "frFR" then
function initClasses()
classes = {
WARLOCK = "D\195\169moniste",
WARRIOR = "Guerrier",
HUNTER = "Chasseur",
MAGE = "Mage",
PRIEST = "Pr\195\170tre",
DRUID = "Druide",
PALADIN = "Paladin",
SHAMAN = "Chaman",
ROGUE = "Voleur",
}
end
elseif locale == "zhCN" then
function initClasses()
classes = {
WARLOCK = "\230\156\175\229\163\171",
WARRIOR = "\230\136\152\229\163\171",
HUNTER = "\231\140\142\228\186\186",
MAGE = "\230\179\149\229\184\136",
PRIEST = "\231\137\167\229\184\136",
DRUID = "\229\190\183\233\178\129\228\188\138",
PALADIN = "\229\156\163\233\170\145\229\163\171",
SHAMAN = "\232\144\168\230\187\161\231\165\173\231\165\128",
ROGUE = "\231\155\151\232\180\188",
}
end
end
-------------IRIEL'S-STUB-CODE--------------
local stub = {};
-- Instance replacement method, replace contents of old with that of new
function stub:ReplaceInstance(old, new)
for k,v in pairs(old) do old[k]=nil; end
for k,v in pairs(new) do old[k]=v; end
end
-- Get a new copy of the stub
function stub:NewStub()
local newStub = {};
self:ReplaceInstance(newStub, self);
newStub.lastVersion = '';
newStub.versions = {};
return newStub;
end
-- Get instance version
function stub:GetInstance(version)
if (not version) then version = self.lastVersion; end
local versionData = self.versions[version];
if (not versionData) then
message("Cannot find library instance with version '"
.. version .. "'");
return;
end
return versionData.instance;
end
-- Register new instance
function stub:Register(newInstance)
local version,minor = newInstance:GetLibraryVersion();
self.lastVersion = version;
local versionData = self.versions[version];
if (not versionData) then
-- This one is new!
versionData = { instance = newInstance,
minor = minor,
old = {}
};
self.versions[version] = versionData;
newInstance:LibActivate(self);
return newInstance;
end
if (minor <= versionData.minor) then
-- This one is already obsolete
if (newInstance.LibDiscard) then
newInstance:LibDiscard();
end
return versionData.instance;
end
-- This is an update
local oldInstance = versionData.instance;
local oldList = versionData.old;
versionData.instance = newInstance;
versionData.minor = minor;
local skipCopy = newInstance:LibActivate(self, oldInstance, oldList);
table.insert(oldList, oldInstance);
if (not skipCopy) then
for i, old in ipairs(oldList) do
self:ReplaceInstance(old, newInstance);
end
end
return newInstance;
end
-- Bind stub to global scope if it's not already there
if (not BabbleLib) then
BabbleLib = stub:NewStub();
end
-- Nil stub for garbage collection
stub = nil;
-----------END-IRIEL'S-STUB-CODE------------
local lib = {}
local localClasses
function lib:GetEnglish(class)
return localClasses[class] or class
end
function lib:GetLocalized(class)
return classes[class] or class
end
function lib:GetIterator()
return pairs(classes)
end
function lib:GetReverseIterator()
return pairs(localClasses)
end
function lib:GetColor(class)
class = self:GetEnglish(class)
if class == "WARLOCK" then
return 0.784314, 0.509804, 0.588235
elseif class == "WARRIOR" then
return 0.784314, 0.607843, 0.431373
elseif class == "HUNTER" then
return 0.666667, 0.823529, 0.666667
elseif class == "MAGE" then
return 0.411765, 0.803922, 0.941176
elseif class == "PRIEST" then
return 1, 1, 1
elseif class == "DRUID" then
return 1, 0.490196, 0.039216
elseif class == "PALADIN" or class == "SHAMAN" then
return 0.960784, 0.549020, 0.725490
elseif class == "ROGUE" then
return 1, 0.960784, 0.411765
end
return 0.627451, 0.627451, 0.627451
end
function lib:GetHexColor(class)
local r, g, b = self:GetColor(class)
return format("%02x%02x%02x", r * 255, g * 255, b * 255)
end
function lib:HasClass(class)
return (classes[class] or localClasses[class]) and true or false
end
function lib:GetLibraryVersion()
return MAJOR_VERSION, MINOR_VERSION
end
function lib:LibActivate(stub, oldLib, oldList)
initClasses()
initClasses = nil
localClasses = {}
for english, localized in pairs(classes) do
if string.sub(english, -4) == "_ALT" then
localClasses[localized] = string.sub(english, 0, -5)
elseif string.sub(english, -5, -2) == "_ALT" then
localClasses[localized] = string.sub(english, 0, -6)
else
localClasses[localized] = english
end
end
end
function lib:LibDeactivate()
classes, localClasses, initClasses = nil
end
BabbleLib:Register(lib)
lib = nil