jcallahan@0: ----------------------------------------------------------------------- jcallahan@0: -- Upvalued Lua API. jcallahan@0: ----------------------------------------------------------------------- jcallahan@0: local _G = getfenv(0) jcallahan@0: jcallahan@0: local pairs = _G.pairs jcallahan@0: jcallahan@0: ----------------------------------------------------------------------- jcallahan@0: -- AddOn namespace. jcallahan@0: ----------------------------------------------------------------------- jcallahan@0: local ADDON_NAME, private = ... jcallahan@0: jcallahan@0: local LibStub = _G.LibStub jcallahan@0: local WDP = LibStub("AceAddon-3.0"):NewAddon(ADDON_NAME, "AceEvent-3.0", "AceTimer-3.0") jcallahan@0: jcallahan@0: ----------------------------------------------------------------------- jcallahan@0: -- Function declarations. jcallahan@0: ----------------------------------------------------------------------- jcallahan@0: local HandleSpellFailure jcallahan@0: local HandleZoneChange jcallahan@0: jcallahan@0: ----------------------------------------------------------------------- jcallahan@0: -- Local constants. jcallahan@0: ----------------------------------------------------------------------- jcallahan@0: local DATABASE_DEFAULTS = { jcallahan@0: global = { jcallahan@0: items = {}, jcallahan@0: npcs = {}, jcallahan@0: objects = {}, jcallahan@0: quests = {}, jcallahan@0: } jcallahan@0: } jcallahan@0: jcallahan@0: jcallahan@0: local EVENT_MAPPING = {-- ARTIFACT_COMPLETE = true, jcallahan@0: -- ARTIFACT_HISTORY_READY = true, jcallahan@0: -- AUCTION_HOUSE_SHOW = true, jcallahan@0: -- BANKFRAME_OPENED = true, jcallahan@0: -- BATTLEFIELDS_SHOW = true, jcallahan@0: -- CHAT_MSG_ADDON = true, jcallahan@0: -- CHAT_MSG_MONSTER_EMOTE = true, jcallahan@0: -- CHAT_MSG_MONSTER_SAY = true, jcallahan@0: -- CHAT_MSG_MONSTER_WHISPER = true, jcallahan@0: -- CHAT_MSG_MONSTER_YELL = true, jcallahan@0: -- CHAT_MSG_SYSTEM = true, jcallahan@0: -- COMBAT_LOG_EVENT_UNFILTERED = true, jcallahan@0: -- COMBAT_TEXT_UPDATE = true, jcallahan@0: -- CONFIRM_BINDER = true, jcallahan@0: -- CONFIRM_PET_UNLEARN = true, jcallahan@0: -- CONFIRM_TALENT_WIPE = true, jcallahan@0: -- CURRENCY_DISPLAY_UPDATE = true, jcallahan@0: -- GOSSIP_ENTER_CODE = true, jcallahan@0: -- GOSSIP_SHOW = true, jcallahan@0: -- ITEM_TEXT_BEGIN = true, jcallahan@0: -- LOCALPLAYER_PET_RENAMED = true, jcallahan@0: -- LOOT_CLOSED = true, jcallahan@0: -- LOOT_OPENED = true, jcallahan@0: -- MAIL_SHOW = true, jcallahan@0: -- MERCHANT_SHOW = true, jcallahan@0: -- MERCHANT_UPDATE = true, jcallahan@0: -- OPEN_TABARD_FRAME = true, jcallahan@0: -- PET_BAR_UPDATE = true, jcallahan@0: -- PET_STABLE_SHOW = true, jcallahan@0: -- PLAYER_ALIVE = true, jcallahan@0: -- PLAYER_ENTERING_WORLD = HandleZoneChange, jcallahan@0: -- PLAYER_LOGIN = true, jcallahan@0: -- PLAYER_LOGOUT = true, jcallahan@0: -- PLAYER_TARGET_CHANGED = true, jcallahan@0: -- QUEST_COMPLETE = true, jcallahan@0: -- QUEST_DETAIL = true, jcallahan@0: -- QUEST_LOG_UPDATE = true, jcallahan@0: -- QUEST_PROGRESS = true, jcallahan@0: -- TAXIMAP_OPENED = true, jcallahan@0: -- TRADE_SKILL_SHOW = true, jcallahan@0: -- TRADE_SKILL_UPDATE = true, jcallahan@0: -- TRAINER_SHOW = true, jcallahan@0: -- UNIT_QUEST_LOG_CHANGED = true, jcallahan@0: -- UNIT_SPELLCAST_FAILED = HandleSpellFailure, jcallahan@0: -- UNIT_SPELLCAST_FAILED_QUIET = HandleSpellFailure, jcallahan@0: -- UNIT_SPELLCAST_INTERRUPTED = HandleSpellFailure, jcallahan@0: -- UNIT_SPELLCAST_SENT = true, jcallahan@0: -- UNIT_SPELLCAST_SUCCEEDED = true, jcallahan@0: -- ZONE_CHANGED = HandleZoneChange, jcallahan@0: -- ZONE_CHANGED_NEW_AREA = HandleZoneChange, jcallahan@0: } jcallahan@0: jcallahan@0: jcallahan@0: ----------------------------------------------------------------------- jcallahan@0: -- Local variables. jcallahan@0: ----------------------------------------------------------------------- jcallahan@0: local db jcallahan@0: local durability_timer_handle jcallahan@0: jcallahan@0: jcallahan@0: ----------------------------------------------------------------------- jcallahan@0: -- Methods. jcallahan@0: ----------------------------------------------------------------------- jcallahan@0: function WDP:OnInitialize() jcallahan@0: db = LibStub("AceDB-3.0"):New("WoWDBProfilerData", DATABASE_DEFAULTS, "Default").global jcallahan@0: end jcallahan@0: jcallahan@0: jcallahan@0: function WDP:OnEnable() jcallahan@0: for event_name, mapping in pairs(EVENT_MAPPING) do jcallahan@0: self:RegisterEvent(event_name, (type(mapping) ~= "boolean") and mapping or nil) jcallahan@0: end jcallahan@0: durability_timer_handle = self:ScheduleRepeatingTimer("ProcessDurability", 30) jcallahan@0: end jcallahan@0: jcallahan@0: jcallahan@0: local function RecordDurability(item_id, durability) jcallahan@0: if not durability or durability <= 0 then jcallahan@0: return jcallahan@0: end jcallahan@0: jcallahan@0: if not db.items[item_id] then jcallahan@0: db.items[item_id] = {} jcallahan@0: end jcallahan@0: db.items[item_id].durability = durability jcallahan@0: end jcallahan@0: jcallahan@0: jcallahan@0: function WDP:ProcessDurability() jcallahan@0: for slot_index = 0, _G.INVSLOT_LAST_EQUIPPED do jcallahan@0: local item_id = _G.GetInventoryItemID("player", slot_index); jcallahan@0: jcallahan@0: if item_id and item_id > 0 then jcallahan@0: local _, max_durability = _G.GetInventoryItemDurability(slot_index); jcallahan@0: RecordDurability(item_id, max_durability) jcallahan@0: end jcallahan@0: end jcallahan@0: jcallahan@0: for bag_index = 0, _G.NUM_BAG_SLOTS do jcallahan@0: for slot_index = 1, _G.GetContainerNumSlots(bag_index) do jcallahan@0: local item_id = _G.GetContainerItemID(bag_index, slot_index); jcallahan@0: jcallahan@0: if item_id and item_id > 0 then jcallahan@0: local _, max_durability = _G.GetContainerItemDurability(bag_index, slot_index); jcallahan@0: RecordDurability(item_id, max_durability) jcallahan@0: end jcallahan@0: end jcallahan@0: end jcallahan@0: end jcallahan@0: jcallahan@0: jcallahan@0: ----------------------------------------------------------------------- jcallahan@0: -- Event handlers. jcallahan@0: ----------------------------------------------------------------------- jcallahan@0: function WDP:AUCTION_HOUSE_SHOW() jcallahan@0: end jcallahan@0: jcallahan@0: jcallahan@0: function WDP:CHAT_MSG_MONSTER_EMOTE() jcallahan@0: end jcallahan@0: jcallahan@0: jcallahan@0: function WDP:CHAT_MSG_MONSTER_SAY() jcallahan@0: end jcallahan@0: jcallahan@0: jcallahan@0: function WDP:CHAT_MSG_MONSTER_WHISPER() jcallahan@0: end jcallahan@0: jcallahan@0: jcallahan@0: function WDP:CHAT_MSG_MONSTER_YELL() jcallahan@0: end jcallahan@0: jcallahan@0: jcallahan@0: function WDP:CHAT_MSG_SYSTEM(event, message, sender_name, language) jcallahan@0: end jcallahan@0: jcallahan@0: jcallahan@0: function WDP:GOSSIP_SHOW() jcallahan@0: end jcallahan@0: jcallahan@0: jcallahan@0: function WDP:ADDON_ALIVE() jcallahan@0: end jcallahan@0: jcallahan@0: jcallahan@0: function WDP:PLAYER_LOGIN() jcallahan@0: end jcallahan@0: jcallahan@0: jcallahan@0: function WDP:PLAYER_LOGOUT() jcallahan@0: end jcallahan@0: jcallahan@0: jcallahan@0: function WDP:PLAYER_TARGET_CHANGED() jcallahan@0: end jcallahan@0: jcallahan@0: jcallahan@0: function WDP:QUEST_LOG_UPDATE() jcallahan@0: end jcallahan@0: jcallahan@0: jcallahan@0: function WDP:TRADE_SKILL_UPDATE() jcallahan@0: end