Mercurial > wow > breuesk
view Core.lua @ 37:6362fe301d43
Storing class name in the persons so we can color them in later
Exposing some data lists, but this will likely be retracted later in favor of interface functions
author | John@Yosemite-PC |
---|---|
date | Tue, 13 Mar 2012 23:17:18 -0400 |
parents | ecd37523ae04 |
children | 7bfbff27a3d7 |
line wrap: on
line source
-- ideas: last attended data and/or remove people who haven't attended in X days -- order of implementation -- (*) lists fully functional (/script interface) -- (*) lists single-user functional via command line interface -- (*) all actions should reference the player list rather than player names -- (?) player entries should persist as long as any list or change references -- (*) lists store number slots rather than flat indexing -- ( ) database and comm versioning -- ( ) limited communication - everyone trusts the loot master -- ( ) single user + admin gui (manual suicides) -- ( ) single user + admin gui (master loot) -- ( ) communication and list merging/trimming -- ( ) admins -- ( ) players gui -- ( ) undo -- ( ) crypto / protection against tampering -- ( ) alt tracking -- (_) reserves local pkgrev = " @project-revision@ " -- important things to remember: -- 1) ipairs iterates from 1 until the first missing int index -> no gaps if int -- indexing -- 2) a.x === a["x"] -- 3) a["1"] =/= a[1] -- 4) table.remove() works ok if reverse iterating, terrible at anything else -- 5) pairs() does not have a guaranteed iteration order bsk = LibStub("AceAddon-3.0"):NewAddon("bsk","AceConsole-3.0", "AceHook-3.0", "AceComm-3.0", "AceSerializer-3.0") local L = LibStub("AceLocale-3.0"):GetLocale("bsk", false) local AceGUI = LibStub("AceGUI-3.0") function bsk:OnInitialize() self.db = LibStub("AceDB-3.0"):New("BskDB", self.defaults, "Default") self.options.args.profile = LibStub("AceDBOptions-3.0"):GetOptionsTable(self.db) LibStub("AceConfig-3.0"):RegisterOptionsTable("bsk", self.options) self.optionsFrame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("bsk", "bsk") self:RegisterChatCommand("bsk", "HandleCommand") end function bsk:OnEnable() bsk:CreateWorkingStateFromChanges(self.db.profile.changes) end function bsk:HandleCommand(paramIn) local param = { strsplit(" ", paramIn) } local FixPersonName = function(p) p = p:lower() -- next two lines from sylvanaar local MULTIBYTE_FIRST_CHAR = "^([\192-\255]?%a?[\128-\191]*)" return string.gsub(p, MULTIBYTE_FIRST_CHAR, string.upper, 1) end if param[1] == nil or param[1] == "" then bsk:Print("need args") return end if param[1] == "persons" then bsk:PrintPersons() elseif param[1] == "changes" then bsk:PrintChanges() elseif param[1] == "delete" then if param[2] == nil or param[2] == "" or param[3] == nil or param[3] == "" then bsk:PrintTable(param) return end if param[2] == "list" then bsk:DeleteList(param[3]) elseif param[2] == "personfromlist" then if param[4] == nil or param[4] == "" then bsk:PrintTable(param) return end local person = FixPersonName(param[3]) bsk:RemovePersonFromList(person, param[4]) elseif param[2] == "person" then local person = FixPersonName(param[3]) bsk:RemovePerson(person) else bsk:Print(sformat("Deleting anything of type %s is not supported",param[2])) end elseif param[1] == "nuke" then if param[2] == nil or param[2] == "" then bsk:PrintTable(param) return end local person = FixPersonName(param[2]) bsk:NukePerson(person) elseif param[1] == "add" then if param[2] == nil or param[2] == "" then bsk:PrintTable(param) return end if param[3] == nil or param[3] == "" then bsk:PrintTable(param) return end if param[2] == "person" then if param[3] == "all" then bsk:AddMissingPersons() else local person = FixPersonName(param[3]) bsk:AddPerson(person) end elseif param[2] == "list" then bsk:CreateList(param[3]) elseif param[2] == "tolist" then if param[4] == nil or param[4] == "" then bsk:PrintTable(param) return end local person = FixPersonName(param[3]) bsk:AddPersonToListEnd(person,param[4]) elseif param[2] == "tolistrandom" then if param[4] == nil or param[4] == "" then bsk:PrintTable(param) return end local person = FixPersonName(param[3]) bsk:AddPersonToListRandom(person,param[4]) end elseif param[1] == "populate" then if param[2] == nil or param[2] == "" or param[3] == nil or param[3] == "" then bsk:PrintTable(param) return end -- list = p2 local index = bsk:GetListIndex(param[2]) if param[3] == "random" then bsk:PopulateListRandom(index) end elseif param[1] == "suicide" then if param[2] == nil or param[2] == "" or param[3] == nil or param[3] == "" then bsk:PrintTable(param) return end local person = FixPersonName(param[2]) bsk:SuicidePerson(person,param[3]) elseif param[1] == "lists" then if param[2] == nil or param[2] == "" then bsk:PrettyPrintLists() return else local listIndex = bsk:GetListIndex(param[2]) bsk:PrettyPrintList(listIndex) end elseif param[1] == "reserve" then if param[2] == nil or param[2] == "" then bsk:printtable(param) return end local person = FixPersonName(param[2]) bsk:AddReserve(person) elseif param[1] == "trim" then if param[2] == nil or param[2] == "" then bsk:printtable(param) return end bsk:TrimLists(param[2]) elseif param[1] == "rename" then if param[2] == nil or param[2] == "" or param[3] == nil or param[3] == "" then bsk:printtable(param) return end bsk:RenameList(param[2],param[3]) elseif param[1] == "selfdestruct" then bsk:SelfDestruct() end --if self.frame == nil then --self:CreateGUI() --self:ShowGUI() --else --self:ShowGUI() --end end bsk.defaults = { profile = { persons = {}, changes = {}, lists = {} } }