Mercurial > wow > breuesk
view Core.lua @ 21:ffcea2f51663
Delete a list
author | John@Yosemite-PC |
---|---|
date | Fri, 09 Mar 2012 23:33:46 -0500 |
parents | 3fedb912c088 |
children | 27cf1355cd6f |
line wrap: on
line source
-- ideas: last attended data and/or remove people who haven't attended in X days -- and/or just a "remove from all lists" option -- 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 -- ( ) convert slist entries down to a delimited string - much smaller -- (*) lists store number slots rather than flat indexing -- ( ) 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 -- ( ) crypto / protection against tampering -- ( ) alt tracking -- ( ) reserves -- 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) --self:HandleCommand() 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]) else bsk:Print(sformat("Deleting anything of type %s is not supported",param[2])) end 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 = {}, listBase = {} } }