annotate Core.lua @ 5:2ce0f4db1a3e

Changelist trimming
author John@Yosemite-PC
date Mon, 05 Mar 2012 23:11:45 -0500
parents 431ddc8bdb4a
children 6d460ff2135c
rev   line source
John@0 1 -- ideas: last attended data and/or remove people who haven't attended in X days
John@0 2 -- and/or just a "remove from all lists" option
John@0 3
John@0 4
John@0 5 -- order of implementation
John@1 6 -- (_) lists fully functional (/script interface)
John@1 7 -- (_) lists single-user functional via command line interface
John@1 8 -- ( ) all actions should reference the player list
John@0 9 -- ( ) single user + admin gui (manual suicides)
John@0 10 -- ( ) single user + admin gui (master loot)
John@0 11 -- ( ) communication and list trimming
John@0 12 -- ( ) admins
John@0 13 -- ( ) players gui
John@0 14 -- ( ) crypto / protection against tampering
John@0 15 -- ( ) alt tracking
John@0 16 -- ( ) reserves
John@0 17
John@0 18 -- important things to remember:
John@1 19 -- 1) ipairs iterates from 1 until the first missing int index -> no gaps if int
John@1 20 -- indexing
John@0 21 -- 2) a.x === a["x"]
John@0 22 -- 3) a["1"] =/= a[1]
John@5 23 -- 4) table.remove() works ok if reverse iterating, terrible at anything else
John@5 24 -- 5) pairs() does not have a guaranteed iteration order
John@0 25
John@0 26 bsk = LibStub("AceAddon-3.0"):NewAddon("bsk","AceConsole-3.0", "AceHook-3.0", "AceComm-3.0", "AceSerializer-3.0")
John@0 27 local L = LibStub("AceLocale-3.0"):GetLocale("bsk", false)
John@0 28
John@0 29 local AceGUI = LibStub("AceGUI-3.0")
John@0 30
John@0 31 function bsk:OnInitialize()
John@0 32
John@0 33 self.db = LibStub("AceDB-3.0"):New("BskDB", self.defaults, "Default")
John@0 34
John@0 35 self.options.args.profile = LibStub("AceDBOptions-3.0"):GetOptionsTable(self.db)
John@0 36 LibStub("AceConfig-3.0"):RegisterOptionsTable("bsk", self.options)
John@0 37 self.optionsFrame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("bsk", "bsk")
John@0 38
John@0 39 self:RegisterChatCommand("bsk", "HandleCommand")
John@0 40 end
John@0 41
John@0 42 function bsk:OnEnable()
John@5 43 bsk:CreateWorkingStateFromChanges(self.db.profile.changes)
John@0 44 --self:HandleCommand()
John@0 45 end
John@0 46
John@0 47 function bsk:HandleCommand(paramIn)
John@0 48 local param = { strsplit(" ", paramIn) }
John@0 49 local FixPlayerName = function(p)
John@0 50 p = p:lower()
John@0 51 -- next two lines from sylvanaar
John@0 52 local MULTIBYTE_FIRST_CHAR = "^([\192-\255]?%a?[\128-\191]*)"
John@0 53 return string.gsub(p, MULTIBYTE_FIRST_CHAR, string.upper, 1)
John@0 54 end
John@0 55
John@0 56 if param[1] == nil or param[1] == "" then
John@0 57 bsk:Print("need args")
John@0 58 return
John@0 59 end
John@0 60 if param[1] == "players" then
John@0 61 bsk:PrintPlayers()
John@0 62 elseif param[1] == "add" then
John@0 63 if param[2] == nil or param[2] == "" then
John@0 64 bsk:PrintTable(param)
John@0 65 return
John@0 66 end
John@0 67 if param[3] == nil or param[3] == "" then
John@0 68 bsk:PrintTable(param)
John@0 69 return
John@0 70 end
John@0 71 if param[2] == "player" then
John@1 72 if param[3] == "all" then
John@1 73 bsk:AddMissingPlayers()
John@1 74 else
John@0 75 local player = FixPlayerName(param[3])
John@0 76 bsk:AddPlayer(player)
John@1 77 end
John@0 78 elseif param[2] == "list" then
John@0 79 bsk:CreateList(param[3])
John@0 80 end
John@3 81 elseif param[1] == "populate" then
John@3 82 if param[2] == nil or param[2] == "" or param[3] == nil or param[3] == "" then
John@3 83 bsk:PrintTable(param)
John@3 84 return
John@3 85 end
John@3 86 -- list = p2
John@3 87 local index = bsk:GetListIndex(param[2])
John@3 88 if param[3] == "random" then
John@3 89 bsk:PopulateListRandom(index)
John@3 90 end
John@0 91 elseif param[1] == "suicide" then
John@0 92 if param[2] == nil or param[2] == "" or param[3] == nil or param[3] == "" then
John@0 93 bsk:PrintTable(param)
John@0 94 return
John@0 95 end
John@0 96 local player = FixPlayerName(param[2])
John@0 97 bsk:Print(string.format("Fixed player name %s to %s",param[2],player))
John@0 98 bsk:SuicidePlayer(player,param[3])
John@0 99 elseif param[1] == "show" then
John@0 100 if param[2] == nil or param[2] == "" then
John@0 101 bsk:PrintTable(param)
John@0 102 return
John@0 103 end
John@0 104 bsk:PrintLists(param[2])
John@5 105 elseif param[1] == "trim" then
John@5 106 if param[2] == nil or param[2] == "" then
John@5 107 bsk:PrintTable(param)
John@5 108 return
John@5 109 end
John@5 110 bsk:TrimLists(param[2])
John@0 111 end
John@0 112
John@0 113 --if self.frame == nil then
John@0 114 --self:CreateGUI()
John@0 115 --self:ShowGUI()
John@0 116 --else
John@0 117 --self:ShowGUI()
John@0 118 --end
John@0 119
John@0 120 end
John@0 121
John@0 122 bsk.defaults = {
John@0 123 profile = {
John@0 124 players = {},
John@0 125 changes = {},
John@0 126 listBase = {}
John@0 127 }
John@0 128 }
John@0 129
John@0 130