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
|