annotate Main.lua @ 0:2e4d83460542

Initial commit, with support for recording durability of items in equipment and inventory.
author James D. Callahan III <jcallahan@curse.com>
date Thu, 26 Apr 2012 13:03:54 -0500
parents
children d9375a473042
rev   line source
jcallahan@0 1 -----------------------------------------------------------------------
jcallahan@0 2 -- Upvalued Lua API.
jcallahan@0 3 -----------------------------------------------------------------------
jcallahan@0 4 local _G = getfenv(0)
jcallahan@0 5
jcallahan@0 6 local pairs = _G.pairs
jcallahan@0 7
jcallahan@0 8 -----------------------------------------------------------------------
jcallahan@0 9 -- AddOn namespace.
jcallahan@0 10 -----------------------------------------------------------------------
jcallahan@0 11 local ADDON_NAME, private = ...
jcallahan@0 12
jcallahan@0 13 local LibStub = _G.LibStub
jcallahan@0 14 local WDP = LibStub("AceAddon-3.0"):NewAddon(ADDON_NAME, "AceEvent-3.0", "AceTimer-3.0")
jcallahan@0 15
jcallahan@0 16 -----------------------------------------------------------------------
jcallahan@0 17 -- Function declarations.
jcallahan@0 18 -----------------------------------------------------------------------
jcallahan@0 19 local HandleSpellFailure
jcallahan@0 20 local HandleZoneChange
jcallahan@0 21
jcallahan@0 22 -----------------------------------------------------------------------
jcallahan@0 23 -- Local constants.
jcallahan@0 24 -----------------------------------------------------------------------
jcallahan@0 25 local DATABASE_DEFAULTS = {
jcallahan@0 26 global = {
jcallahan@0 27 items = {},
jcallahan@0 28 npcs = {},
jcallahan@0 29 objects = {},
jcallahan@0 30 quests = {},
jcallahan@0 31 }
jcallahan@0 32 }
jcallahan@0 33
jcallahan@0 34
jcallahan@0 35 local EVENT_MAPPING = {-- ARTIFACT_COMPLETE = true,
jcallahan@0 36 -- ARTIFACT_HISTORY_READY = true,
jcallahan@0 37 -- AUCTION_HOUSE_SHOW = true,
jcallahan@0 38 -- BANKFRAME_OPENED = true,
jcallahan@0 39 -- BATTLEFIELDS_SHOW = true,
jcallahan@0 40 -- CHAT_MSG_ADDON = true,
jcallahan@0 41 -- CHAT_MSG_MONSTER_EMOTE = true,
jcallahan@0 42 -- CHAT_MSG_MONSTER_SAY = true,
jcallahan@0 43 -- CHAT_MSG_MONSTER_WHISPER = true,
jcallahan@0 44 -- CHAT_MSG_MONSTER_YELL = true,
jcallahan@0 45 -- CHAT_MSG_SYSTEM = true,
jcallahan@0 46 -- COMBAT_LOG_EVENT_UNFILTERED = true,
jcallahan@0 47 -- COMBAT_TEXT_UPDATE = true,
jcallahan@0 48 -- CONFIRM_BINDER = true,
jcallahan@0 49 -- CONFIRM_PET_UNLEARN = true,
jcallahan@0 50 -- CONFIRM_TALENT_WIPE = true,
jcallahan@0 51 -- CURRENCY_DISPLAY_UPDATE = true,
jcallahan@0 52 -- GOSSIP_ENTER_CODE = true,
jcallahan@0 53 -- GOSSIP_SHOW = true,
jcallahan@0 54 -- ITEM_TEXT_BEGIN = true,
jcallahan@0 55 -- LOCALPLAYER_PET_RENAMED = true,
jcallahan@0 56 -- LOOT_CLOSED = true,
jcallahan@0 57 -- LOOT_OPENED = true,
jcallahan@0 58 -- MAIL_SHOW = true,
jcallahan@0 59 -- MERCHANT_SHOW = true,
jcallahan@0 60 -- MERCHANT_UPDATE = true,
jcallahan@0 61 -- OPEN_TABARD_FRAME = true,
jcallahan@0 62 -- PET_BAR_UPDATE = true,
jcallahan@0 63 -- PET_STABLE_SHOW = true,
jcallahan@0 64 -- PLAYER_ALIVE = true,
jcallahan@0 65 -- PLAYER_ENTERING_WORLD = HandleZoneChange,
jcallahan@0 66 -- PLAYER_LOGIN = true,
jcallahan@0 67 -- PLAYER_LOGOUT = true,
jcallahan@0 68 -- PLAYER_TARGET_CHANGED = true,
jcallahan@0 69 -- QUEST_COMPLETE = true,
jcallahan@0 70 -- QUEST_DETAIL = true,
jcallahan@0 71 -- QUEST_LOG_UPDATE = true,
jcallahan@0 72 -- QUEST_PROGRESS = true,
jcallahan@0 73 -- TAXIMAP_OPENED = true,
jcallahan@0 74 -- TRADE_SKILL_SHOW = true,
jcallahan@0 75 -- TRADE_SKILL_UPDATE = true,
jcallahan@0 76 -- TRAINER_SHOW = true,
jcallahan@0 77 -- UNIT_QUEST_LOG_CHANGED = true,
jcallahan@0 78 -- UNIT_SPELLCAST_FAILED = HandleSpellFailure,
jcallahan@0 79 -- UNIT_SPELLCAST_FAILED_QUIET = HandleSpellFailure,
jcallahan@0 80 -- UNIT_SPELLCAST_INTERRUPTED = HandleSpellFailure,
jcallahan@0 81 -- UNIT_SPELLCAST_SENT = true,
jcallahan@0 82 -- UNIT_SPELLCAST_SUCCEEDED = true,
jcallahan@0 83 -- ZONE_CHANGED = HandleZoneChange,
jcallahan@0 84 -- ZONE_CHANGED_NEW_AREA = HandleZoneChange,
jcallahan@0 85 }
jcallahan@0 86
jcallahan@0 87
jcallahan@0 88 -----------------------------------------------------------------------
jcallahan@0 89 -- Local variables.
jcallahan@0 90 -----------------------------------------------------------------------
jcallahan@0 91 local db
jcallahan@0 92 local durability_timer_handle
jcallahan@0 93
jcallahan@0 94
jcallahan@0 95 -----------------------------------------------------------------------
jcallahan@0 96 -- Methods.
jcallahan@0 97 -----------------------------------------------------------------------
jcallahan@0 98 function WDP:OnInitialize()
jcallahan@0 99 db = LibStub("AceDB-3.0"):New("WoWDBProfilerData", DATABASE_DEFAULTS, "Default").global
jcallahan@0 100 end
jcallahan@0 101
jcallahan@0 102
jcallahan@0 103 function WDP:OnEnable()
jcallahan@0 104 for event_name, mapping in pairs(EVENT_MAPPING) do
jcallahan@0 105 self:RegisterEvent(event_name, (type(mapping) ~= "boolean") and mapping or nil)
jcallahan@0 106 end
jcallahan@0 107 durability_timer_handle = self:ScheduleRepeatingTimer("ProcessDurability", 30)
jcallahan@0 108 end
jcallahan@0 109
jcallahan@0 110
jcallahan@0 111 local function RecordDurability(item_id, durability)
jcallahan@0 112 if not durability or durability <= 0 then
jcallahan@0 113 return
jcallahan@0 114 end
jcallahan@0 115
jcallahan@0 116 if not db.items[item_id] then
jcallahan@0 117 db.items[item_id] = {}
jcallahan@0 118 end
jcallahan@0 119 db.items[item_id].durability = durability
jcallahan@0 120 end
jcallahan@0 121
jcallahan@0 122
jcallahan@0 123 function WDP:ProcessDurability()
jcallahan@0 124 for slot_index = 0, _G.INVSLOT_LAST_EQUIPPED do
jcallahan@0 125 local item_id = _G.GetInventoryItemID("player", slot_index);
jcallahan@0 126
jcallahan@0 127 if item_id and item_id > 0 then
jcallahan@0 128 local _, max_durability = _G.GetInventoryItemDurability(slot_index);
jcallahan@0 129 RecordDurability(item_id, max_durability)
jcallahan@0 130 end
jcallahan@0 131 end
jcallahan@0 132
jcallahan@0 133 for bag_index = 0, _G.NUM_BAG_SLOTS do
jcallahan@0 134 for slot_index = 1, _G.GetContainerNumSlots(bag_index) do
jcallahan@0 135 local item_id = _G.GetContainerItemID(bag_index, slot_index);
jcallahan@0 136
jcallahan@0 137 if item_id and item_id > 0 then
jcallahan@0 138 local _, max_durability = _G.GetContainerItemDurability(bag_index, slot_index);
jcallahan@0 139 RecordDurability(item_id, max_durability)
jcallahan@0 140 end
jcallahan@0 141 end
jcallahan@0 142 end
jcallahan@0 143 end
jcallahan@0 144
jcallahan@0 145
jcallahan@0 146 -----------------------------------------------------------------------
jcallahan@0 147 -- Event handlers.
jcallahan@0 148 -----------------------------------------------------------------------
jcallahan@0 149 function WDP:AUCTION_HOUSE_SHOW()
jcallahan@0 150 end
jcallahan@0 151
jcallahan@0 152
jcallahan@0 153 function WDP:CHAT_MSG_MONSTER_EMOTE()
jcallahan@0 154 end
jcallahan@0 155
jcallahan@0 156
jcallahan@0 157 function WDP:CHAT_MSG_MONSTER_SAY()
jcallahan@0 158 end
jcallahan@0 159
jcallahan@0 160
jcallahan@0 161 function WDP:CHAT_MSG_MONSTER_WHISPER()
jcallahan@0 162 end
jcallahan@0 163
jcallahan@0 164
jcallahan@0 165 function WDP:CHAT_MSG_MONSTER_YELL()
jcallahan@0 166 end
jcallahan@0 167
jcallahan@0 168
jcallahan@0 169 function WDP:CHAT_MSG_SYSTEM(event, message, sender_name, language)
jcallahan@0 170 end
jcallahan@0 171
jcallahan@0 172
jcallahan@0 173 function WDP:GOSSIP_SHOW()
jcallahan@0 174 end
jcallahan@0 175
jcallahan@0 176
jcallahan@0 177 function WDP:ADDON_ALIVE()
jcallahan@0 178 end
jcallahan@0 179
jcallahan@0 180
jcallahan@0 181 function WDP:PLAYER_LOGIN()
jcallahan@0 182 end
jcallahan@0 183
jcallahan@0 184
jcallahan@0 185 function WDP:PLAYER_LOGOUT()
jcallahan@0 186 end
jcallahan@0 187
jcallahan@0 188
jcallahan@0 189 function WDP:PLAYER_TARGET_CHANGED()
jcallahan@0 190 end
jcallahan@0 191
jcallahan@0 192
jcallahan@0 193 function WDP:QUEST_LOG_UPDATE()
jcallahan@0 194 end
jcallahan@0 195
jcallahan@0 196
jcallahan@0 197 function WDP:TRADE_SKILL_UPDATE()
jcallahan@0 198 end