This repository was archived by the owner on Nov 28, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Library Examples
Jay Reardon edited this page Jun 2, 2015
·
5 revisions
-----------------------------------------------------------------------------------------------
-- EmbeddedLibrary Module Definition
-----------------------------------------------------------------------------------------------
local PackageName, Major, Minor, Patch = "EmbededLibrary", 1, 0, 0
local PkgMajor, PkgMinor = sting.format("%s-%d.%d", PackageName, Major, Minor), Patch
local Pkg = Apollo.GetPackage(PkgMajor)
if Pkg and (Pkg.nVersion or 0) >= PkgMinor then
return -- no upgrade needed
end
-- Set a reference to the actual package or create an empty table
local EmbededLibrary = Pkg and Pkg.tPackage or {}
EmbededLibrary.embeded = EmbededLibrary.embeded or {}
-- upgrading of embeded is done at the bottom of the file
local mixins = {
"EmbeddedLibraryFunction"
}
function EmbeddedLibrary:EmbeddedLibraryFunction()
-- Do something interesting
end
-----------------------------------------------------------------------------------------------
-- EmbeddedLibrary Constructor
-----------------------------------------------------------------------------------------------
function EmbeddedLibrary:new(args)
local new = { }
if args then
for key, val in pairs(args) do
new[key] = val
end
end
return setmetatable(new, EmbeddedLibrary)
end
-----------------------------------------------------------------------------------------------
-- EmbeddedLibrary Library / Apollo Routines
-----------------------------------------------------------------------------------------------
function EmbeddedLibrary:Embed( target )
for k, v in pairs( mixins ) do
target[v] = self[v]
end
self.embeded[target] = true
return target
end
function EmbeddedLibrary:OnLoad()
Event_FireGenericEvent("OneVersion_ReportAddonInfo", "EmbeddedLibrary", Major, Minor, Patch, 0, true)
end
-- No dependencies
function EmbeddedLibrary:OnDependencyError(strDep, strError) return false
end
-----------------------------------------------------------------------------------------------
-- EmbeddedLibrary Instantiation/ Registration
-----------------------------------------------------------------------------------------------
--- Upgrade our old embeded
for target, v in pairs( EmbeddedLibrary.embeded ) do
EmbeddedLibrary:Embed( target )
end
Apollo.RegisterPackage(EmbeddedLibrary, PkgMajor, PkgMinor, {})function SomeAddon:OnLoad()
-- Library Embeds
Apollo.GetPackage("EmbededLibrary-1.0").tPackage:Embed(self)
self:EmbeddedLibraryFunction()
endlocal PackageName, Major, Minor, Patch = "LoadedLibrary", 1, 0, 0
local PkgMajor, PkgMinor = sting.format("%s-%d.%d", PackageName, Major, Minor), Patch
local Pkg = Apollo.GetPackage(PkgMajor)
if Pkg and (Pkg.nVersion or 0) >= PkgMinor then
return -- no upgrade needed
end
function LoadedLibrary:new(args)
local new = { }
if args then
for key, val in pairs(args) do
new[key] = val
end
end
return setmetatable(new, LoadedLibrary)
end
function LoadedLibrary:OnLoad()
Event_FireGenericEvent("OneVersion_ReportAddonInfo", "LoadedLibrary", Major, Minor, Patch, 0, true)
end
function LoadedLibrary:LibraryFunction()
end
Apollo.RegisterPackage(LoadedLibrary, PkgMajor, PkgMinor, {})local Library = Apollo.GetPackage("LoadedLibrary-1.0").tPackage
Library:LibraryFunction()####Home ####Supported Addons ####FAQ ####Adding OneVersion Support ####OneVersion Events API ####Feature Roadmap