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