annotate 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
rev   line source
John@0 1 -- ideas: last attended data and/or remove people who haven't attended in X days
John@0 2
John@0 3 -- order of implementation
John@31 4 -- (*) lists fully functional (/script interface)
John@31 5 -- (*) lists single-user functional via command line interface
John@27 6 -- (*) all actions should reference the player list rather than player names
John@27 7 -- (?) player entries should persist as long as any list or change references
John@18 8 -- (*) lists store number slots rather than flat indexing
John@33 9 -- ( ) database and comm versioning
John@18 10 -- ( ) limited communication - everyone trusts the loot master
John@0 11 -- ( ) single user + admin gui (manual suicides)
John@0 12 -- ( ) single user + admin gui (master loot)
John@18 13 -- ( ) communication and list merging/trimming
John@0 14 -- ( ) admins
John@0 15 -- ( ) players gui
John@35 16 -- ( ) undo
John@0 17 -- ( ) crypto / protection against tampering
John@0 18 -- ( ) alt tracking
John@32 19 -- (_) reserves
John@32 20
John@34 21 local pkgrev = " @project-revision@ "
John@0 22
John@0 23 -- important things to remember:
John@1 24 -- 1) ipairs iterates from 1 until the first missing int index -> no gaps if int
John@1 25 -- indexing
John@0 26 -- 2) a.x === a["x"]
John@0 27 -- 3) a["1"] =/= a[1]
John@5 28 -- 4) table.remove() works ok if reverse iterating, terrible at anything else
John@5 29 -- 5) pairs() does not have a guaranteed iteration order
John@0 30
John@0 31 bsk = LibStub("AceAddon-3.0"):NewAddon("bsk","AceConsole-3.0", "AceHook-3.0", "AceComm-3.0", "AceSerializer-3.0")
John@0 32 local L = LibStub("AceLocale-3.0"):GetLocale("bsk", false)
John@0 33
John@0 34 local AceGUI = LibStub("AceGUI-3.0")
John@0 35
John@0 36 function bsk:OnInitialize()
John@0 37
John@0 38 self.db = LibStub("AceDB-3.0"):New("BskDB", self.defaults, "Default")
John@0 39
John@0 40 self.options.args.profile = LibStub("AceDBOptions-3.0"):GetOptionsTable(self.db)
John@0 41 LibStub("AceConfig-3.0"):RegisterOptionsTable("bsk", self.options)
John@0 42 self.optionsFrame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("bsk", "bsk")
John@0 43
John@0 44 self:RegisterChatCommand("bsk", "HandleCommand")
John@0 45 end
John@0 46
John@0 47 function bsk:OnEnable()
John@5 48 bsk:CreateWorkingStateFromChanges(self.db.profile.changes)
John@0 49 end
John@0 50
John@0 51 function bsk:HandleCommand(paramIn)
John@0 52 local param = { strsplit(" ", paramIn) }
John@8 53 local FixPersonName = function(p)
John@0 54 p = p:lower()
John@0 55 -- next two lines from sylvanaar
John@0 56 local MULTIBYTE_FIRST_CHAR = "^([\192-\255]?%a?[\128-\191]*)"
John@0 57 return string.gsub(p, MULTIBYTE_FIRST_CHAR, string.upper, 1)
John@0 58 end
John@0 59
John@0 60 if param[1] == nil or param[1] == "" then
John@0 61 bsk:Print("need args")
John@0 62 return
John@0 63 end
John@8 64 if param[1] == "persons" then
John@8 65 bsk:PrintPersons()
John@8 66 elseif param[1] == "changes" then
John@8 67 bsk:PrintChanges()
John@21 68 elseif param[1] == "delete" then
John@21 69 if param[2] == nil or param[2] == "" or param[3] == nil or param[3] == "" then
John@21 70 bsk:PrintTable(param)
John@21 71 return
John@21 72 end
John@21 73 if param[2] == "list" then
John@21 74 bsk:DeleteList(param[3])
John@22 75 elseif param[2] == "personfromlist" then
John@22 76 if param[4] == nil or param[4] == "" then
John@22 77 bsk:PrintTable(param)
John@22 78 return
John@22 79 end
John@22 80 local person = FixPersonName(param[3])
John@22 81 bsk:RemovePersonFromList(person, param[4])
John@28 82 elseif param[2] == "person" then
John@28 83 local person = FixPersonName(param[3])
John@28 84 bsk:RemovePerson(person)
John@21 85 else
John@21 86 bsk:Print(sformat("Deleting anything of type %s is not supported",param[2]))
John@21 87 end
John@30 88 elseif param[1] == "nuke" then
John@30 89 if param[2] == nil or param[2] == "" then
John@30 90 bsk:PrintTable(param)
John@30 91 return
John@30 92 end
John@30 93 local person = FixPersonName(param[2])
John@30 94 bsk:NukePerson(person)
John@0 95 elseif param[1] == "add" then
John@0 96 if param[2] == nil or param[2] == "" then
John@0 97 bsk:PrintTable(param)
John@0 98 return
John@0 99 end
John@0 100 if param[3] == nil or param[3] == "" then
John@0 101 bsk:PrintTable(param)
John@0 102 return
John@0 103 end
John@8 104 if param[2] == "person" then
John@1 105 if param[3] == "all" then
John@8 106 bsk:AddMissingPersons()
John@1 107 else
John@8 108 local person = FixPersonName(param[3])
John@8 109 bsk:AddPerson(person)
John@1 110 end
John@0 111 elseif param[2] == "list" then
John@0 112 bsk:CreateList(param[3])
John@11 113 elseif param[2] == "tolist" then
John@9 114 if param[4] == nil or param[4] == "" then
John@9 115 bsk:PrintTable(param)
John@9 116 return
John@9 117 end
John@9 118 local person = FixPersonName(param[3])
John@11 119 bsk:AddPersonToListEnd(person,param[4])
John@11 120 elseif param[2] == "tolistrandom" then
John@11 121 if param[4] == nil or param[4] == "" then
John@11 122 bsk:PrintTable(param)
John@11 123 return
John@11 124 end
John@11 125 local person = FixPersonName(param[3])
John@11 126 bsk:AddPersonToListRandom(person,param[4])
John@0 127 end
John@3 128 elseif param[1] == "populate" then
John@3 129 if param[2] == nil or param[2] == "" or param[3] == nil or param[3] == "" then
John@3 130 bsk:PrintTable(param)
John@3 131 return
John@3 132 end
John@3 133 -- list = p2
John@3 134 local index = bsk:GetListIndex(param[2])
John@3 135 if param[3] == "random" then
John@3 136 bsk:PopulateListRandom(index)
John@3 137 end
John@0 138 elseif param[1] == "suicide" then
John@0 139 if param[2] == nil or param[2] == "" or param[3] == nil or param[3] == "" then
John@0 140 bsk:PrintTable(param)
John@0 141 return
John@0 142 end
John@8 143 local person = FixPersonName(param[2])
John@8 144 bsk:SuicidePerson(person,param[3])
John@14 145 elseif param[1] == "lists" then
John@0 146 if param[2] == nil or param[2] == "" then
John@14 147 bsk:PrettyPrintLists()
John@14 148 return
John@14 149 else
John@14 150 local listIndex = bsk:GetListIndex(param[2])
John@14 151 bsk:PrettyPrintList(listIndex)
John@14 152 end
John@14 153 elseif param[1] == "reserve" then
John@14 154 if param[2] == nil or param[2] == "" then
John@14 155 bsk:printtable(param)
John@0 156 return
John@0 157 end
John@14 158 local person = FixPersonName(param[2])
John@14 159 bsk:AddReserve(person)
John@5 160 elseif param[1] == "trim" then
John@5 161 if param[2] == nil or param[2] == "" then
John@14 162 bsk:printtable(param)
John@5 163 return
John@5 164 end
John@5 165 bsk:TrimLists(param[2])
John@20 166 elseif param[1] == "rename" then
John@20 167 if param[2] == nil or param[2] == "" or param[3] == nil or param[3] == "" then
John@20 168 bsk:printtable(param)
John@20 169 return
John@20 170 end
John@20 171 bsk:RenameList(param[2],param[3])
John@17 172 elseif param[1] == "selfdestruct" then
John@17 173 bsk:SelfDestruct()
John@0 174 end
John@0 175
John@0 176 --if self.frame == nil then
John@0 177 --self:CreateGUI()
John@0 178 --self:ShowGUI()
John@0 179 --else
John@0 180 --self:ShowGUI()
John@0 181 --end
John@0 182
John@0 183 end
John@0 184
John@0 185 bsk.defaults = {
John@0 186 profile = {
John@8 187 persons = {},
John@0 188 changes = {},
John@34 189 lists = {}
John@0 190 }
John@0 191 }
John@0 192
John@0 193