comparison Main.lua @ 20:dae28edbbd61

Record NPC factions when applicable.
author James D. Callahan III <jcallahan@curse.com>
date Tue, 08 May 2012 14:55:35 -0500
parents 6a0c96063003
children a82c5d1134db
comparison
equal deleted inserted replaced
19:6a0c96063003 20:dae28edbbd61
64 ----------------------------------------------------------------------- 64 -----------------------------------------------------------------------
65 local db 65 local db
66 local durability_timer_handle 66 local durability_timer_handle
67 local target_location_timer_handle 67 local target_location_timer_handle
68 local action_data = {} 68 local action_data = {}
69 local faction_names = {}
69 70
70 71
71 ----------------------------------------------------------------------- 72 -----------------------------------------------------------------------
72 -- Helper Functions. 73 -- Helper Functions.
73 ----------------------------------------------------------------------- 74 -----------------------------------------------------------------------
200 end 201 end
201 end 202 end
202 end 203 end
203 204
204 205
206 local function UpdateFactionNames()
207 for faction_index = 1, 1000 do
208 local faction_name, _, _, _, _, _, _, _, is_header = _G.GetFactionInfo(faction_index)
209
210 if faction_name and not is_header then
211 faction_names[faction_name] = true
212 elseif not faction_name then
213 break
214 end
215 end
216 end
217
218
205 ----------------------------------------------------------------------- 219 -----------------------------------------------------------------------
206 -- Methods. 220 -- Methods.
207 ----------------------------------------------------------------------- 221 -----------------------------------------------------------------------
208 function WDP:OnInitialize() 222 function WDP:OnInitialize()
209 db = LibStub("AceDB-3.0"):New("WoWDBProfilerData", DATABASE_DEFAULTS, "Default").global 223 db = LibStub("AceDB-3.0"):New("WoWDBProfilerData", DATABASE_DEFAULTS, "Default").global
233 _G.hooksecurefunc("UseContainerItem", function(bag_index, slot_index, target_unit) 247 _G.hooksecurefunc("UseContainerItem", function(bag_index, slot_index, target_unit)
234 if target_unit then 248 if target_unit then
235 return 249 return
236 end 250 end
237 HandleItemUse(_G.GetContainerItemLink(bag_index, slot_index), bag_index, slot_index) 251 HandleItemUse(_G.GetContainerItemLink(bag_index, slot_index), bag_index, slot_index)
238
239 end) 252 end)
240 253
241 _G.hooksecurefunc("UseItemByName", function(identifier, target_unit) 254 _G.hooksecurefunc("UseItemByName", function(identifier, target_unit)
242 if target_unit then 255 if target_unit then
243 return 256 return
629 table.wipe(action_data) 642 table.wipe(action_data)
630 643
631 local npc = DBEntry("npcs", unit_idnum) 644 local npc = DBEntry("npcs", unit_idnum)
632 local _, class_token = _G.UnitClass("target") 645 local _, class_token = _G.UnitClass("target")
633 npc.class = class_token 646 npc.class = class_token
634 -- TODO: Add faction here 647
648 UpdateFactionNames()
649 DatamineTT:ClearLines()
650 DatamineTT:SetUnit("target")
651
652 for line_index = 1, DatamineTT:NumLines() do
653 local current_line = _G["WDPDatamineTTTextLeft" .. line_index]
654
655 if not current_line then
656 break
657 end
658 local line_text = current_line:GetText()
659
660 if faction_names[line_text] then
661 npc.faction = line_text
662 break
663 end
664 end
635 npc.gender = GENDER_NAMES[_G.UnitSex("target")] or "UNDEFINED" 665 npc.gender = GENDER_NAMES[_G.UnitSex("target")] or "UNDEFINED"
636 npc.is_pvp = _G.UnitIsPVP("target") and true or nil 666 npc.is_pvp = _G.UnitIsPVP("target") and true or nil
637 npc.reaction = ("%s:%s:%s"):format(_G.UnitLevel("player"), _G.UnitFactionGroup("player"), REACTION_NAMES[_G.UnitReaction("player", "target")]) 667 npc.reaction = ("%s:%s:%s"):format(_G.UnitLevel("player"), _G.UnitFactionGroup("player"), REACTION_NAMES[_G.UnitReaction("player", "target")])
638 npc.stats = npc.stats or {} 668 npc.stats = npc.stats or {}
639 669