Kyle@3: --[[ Kyle@3: Title: Suicide Kings Kyle@3: Author: Brom Kyle@3: Version: 0.1 Kyle@3: ]] Kyle@3: Kyle@3: local ADDON_NAME = ... Kyle@3: local ADDON_VERSION = "0.1" Kyle@3: Kyle@3: -- create addon Kyle@3: SuicideKings = LibStub("AceAddon-3.0") : NewAddon("SuicideKings", "AceConsole-3.0") Kyle@3: Kyle@3: -- library objects Kyle@3: local libS = LibStub:GetLibrary("AceSerializer-3.0") Kyle@3: local libC = LibStub:GetLibrary("LibCompress") Kyle@3: local libCE = libC:GetAddonEncodeTable() Kyle@3: Kyle@3: -- creating a database object Kyle@3: local db; Kyle@3: Kyle@3: --[[ Kyle@3: Ace3 Addon Object Kyle@3: ]] Kyle@3: Kyle@3: function SuicideKings:OnInitialize() Kyle@3: Kyle@3: -- Greetings Kyle@3: local loadingMessage = "version " .. ADDON_VERSION .. " loaded" Kyle@3: local optionsMessage = "type /sk for options" Kyle@3: SuicideKings:Print( loadingMessage ) Kyle@3: SuicideKings:Print( optionsMessage ) Kyle@3: Kyle@3: -- Slash commands Kyle@3: SuicideKings:RegisterChatCommand( "sk", "SlashProcessor" ) Kyle@3: Kyle@3: -- Database defaults Kyle@3: self.db = LibStub("AceDB-3.0"):New("SuicideKingsDB", { profile = {} }, 'Default') Kyle@3: Kyle@3: -- Options Kyle@3: LibStub("AceConfig-3.0"): RegisterOptionsTable("SuicideKingsOptions", { Kyle@3: name = "Brohm's Suicide Kings Configuration", Kyle@3: type = "group", Kyle@3: args = { Kyle@3: roster = { Kyle@3: name = "View Roster", Kyle@3: desc = "Prints the SK Roster", Kyle@3: type = "execute", Kyle@3: func = function() SuicideKings:PrintRoster() end, Kyle@3: }, Kyle@3: list = { Kyle@3: name = "View Lists", Kyle@3: desc = "Prints the SK Lists", Kyle@3: type = "execute", Kyle@3: func = function() SuicideKings:PrintLists() end, Kyle@3: }, Kyle@3: Kyle@3: utilities = { Kyle@3: name = "utilities", Kyle@3: desc = "Utility functions", Kyle@3: type = "group", Kyle@3: args = { Kyle@3: import = { Kyle@3: name = "Import from KSK", Kyle@3: desc = "Import data from Konfer Suicide Kings", Kyle@3: type = "execute", Kyle@3: func = function() SuicideKings:ImportFromKSK() end, Kyle@3: }, Kyle@3: reset = { Kyle@3: name = "Reset Everything", Kyle@3: desc = "Resets the database", Kyle@3: type = "execute", Kyle@3: func = function() self.db:ResetProfile() end, Kyle@3: }, Kyle@3: } Kyle@3: } Kyle@3: } Kyle@3: }) Kyle@3: Kyle@3: end Kyle@3: Kyle@3: function SuicideKings:OnEnable() Kyle@3: -- Do more initialization here, that really enables the use of your addon. Kyle@3: -- Register Events, Hook functions, Create Frames, Get information from Kyle@3: -- the game that wasn't available in OnInitialize Kyle@3: end Kyle@3: Kyle@3: function SuicideKings:OnDisable() Kyle@3: -- Unhook, Unregister Events, Hide frames that you created. Kyle@3: -- You would probably only use an OnDisable if you want to Kyle@3: -- build a "standby" mode, or be able to toggle modules on/off. Kyle@3: end Kyle@3: Kyle@3: --[[ Kyle@3: Slash Handler Kyle@3: ]] Kyle@3: Kyle@3: function SuicideKings:SlashProcessor(input) Kyle@3: Kyle@3: if not input or input:trim() == "" then Kyle@3: LibStub("AceConfigDialog-3.0"):Open("SuicideKingsOptions") Kyle@3: else Kyle@3: LibStub("AceConfigCmd-3.0").HandleCommand(MyAddon, "sk", "SuicideKingsOptions", input) Kyle@3: end Kyle@3: Kyle@3: end Kyle@3: Kyle@3: --[[ Kyle@3: Roster Functions Kyle@3: ]] Kyle@3: Kyle@3: function SuicideKings:PrintHelp() Kyle@3: Kyle@3: SuicideKings:Print("usage: /sk") Kyle@3: Kyle@3: end Kyle@3: Kyle@3: function SuicideKings:PrintRoster() Kyle@3: Kyle@3: local one = libS:Serialize( self.db.profile.roster ) Kyle@3: local two = LibSyncC:CompressHuffman(one) Kyle@3: local final = LibSyncCE:Encode(two) Kyle@3: Kyle@3: end Kyle@3: Kyle@3: function SuicideKings:PrintLists() Kyle@3: Kyle@3: end Kyle@3: