comparison Main.lua @ 38:934022ee6e52

Record fishing pools; changed non-pool data format to align with this, but have "NONE" instead of the pool's name.
author James D. Callahan III <jcallahan@curse.com>
date Mon, 11 Jun 2012 14:42:13 -0500
parents d9333f3e0c7a
children 938abe259516
comparison
equal deleted inserted replaced
37:d9333f3e0c7a 38:934022ee6e52
208 zone_data[("%s:%s:%s"):format(map_level, x, y)] = true 208 zone_data[("%s:%s:%s"):format(map_level, x, y)] = true
209 end 209 end
210 end -- do-block 210 end -- do-block
211 211
212 212
213 local function UpdateObjectLocation(identifier) 213 local function UpdateDBEntryLocation(entry_type, identifier)
214 if not identifier then 214 if not identifier then
215 return 215 return
216 end 216 end
217 local zone_name, area_id, x, y, map_level, difficulty_token = CurrentLocationData() 217 local zone_name, area_id, x, y, map_level, difficulty_token = CurrentLocationData()
218 local object = DBEntry("objects", identifier) 218 local object = DBEntry(entry_type, identifier)
219 object[difficulty_token] = object[difficulty_token] or {} 219 object[difficulty_token] = object[difficulty_token] or {}
220 object[difficulty_token].locations = object[difficulty_token].locations or {} 220 object[difficulty_token].locations = object[difficulty_token].locations or {}
221 221
222 local zone_token = ("%s:%d"):format(zone_name, area_id) 222 local zone_token = ("%s:%d"):format(zone_name, area_id)
223 local zone_data = object[difficulty_token].locations[zone_token] 223 local zone_data = object[difficulty_token].locations[zone_token]
531 action_data.identifier = id_num 531 action_data.identifier = id_num
532 return true 532 return true
533 end, 533 end,
534 [AF.OBJECT] = true, 534 [AF.OBJECT] = true,
535 [AF.ZONE] = function() 535 [AF.ZONE] = function()
536 return action_data.label and _G.IsFishingLoot() 536 return _G.IsFishingLoot()
537 end, 537 end,
538 } 538 }
539 539
540 540
541 local function GenericLootUpdate(data_type, top_field) 541 local function GenericLootUpdate(data_type, top_field)
584 end, 584 end,
585 [AF.OBJECT] = function() 585 [AF.OBJECT] = function()
586 GenericLootUpdate("objects", InstanceDifficultyToken()) 586 GenericLootUpdate("objects", InstanceDifficultyToken())
587 end, 587 end,
588 [AF.ZONE] = function() 588 [AF.ZONE] = function()
589 local loot_type = action_data.label or "drops" 589 GenericLootUpdate("zones", InstanceDifficultyToken())
590 local zone = DBEntry("zones", action_data.zone)
591 zone[action_data.instance_token] = zone[action_data.instance_token] or {}
592 zone[action_data.instance_token][loot_type] = zone[action_data.instance_token][loot_type] or {}
593
594 local location_data = ("%s:%s:%s"):format(action_data.map_level, action_data.x, action_data.y)
595 local loot_data = zone[action_data.instance_token][loot_type][location_data]
596
597 if not loot_data then
598 zone[action_data.instance_token][loot_type][location_data] = {}
599 loot_data = zone[action_data.instance_token][loot_type][location_data]
600 end
601
602 for index = 1, #action_data.loot_list do
603 table.insert(loot_data, action_data.loot_list[index])
604 end
605 end, 590 end,
606 } 591 }
607 592
608 593
609 function WDP:LOOT_OPENED() 594 function WDP:LOOT_OPENED()
864 return 849 return
865 end 850 end
866 local unit_type, unit_id = ParseGUID(_G.UnitGUID("questnpc")) 851 local unit_type, unit_id = ParseGUID(_G.UnitGUID("questnpc"))
867 852
868 if unit_type == private.UNIT_TYPES.OBJECT then 853 if unit_type == private.UNIT_TYPES.OBJECT then
869 UpdateObjectLocation(unit_id) 854 UpdateDBEntryLocation("objects", unit_id)
870 end 855 end
871 local quest = DBEntry("quests", _G.GetQuestID()) 856 local quest = DBEntry("quests", _G.GetQuestID())
872 quest[point] = quest[point] or {} 857 quest[point] = quest[point] or {}
873 quest[point][("%s:%d"):format(private.UNIT_TYPE_NAMES[unit_type + 1], unit_id)] = true 858 quest[point][("%s:%d"):format(private.UNIT_TYPE_NAMES[unit_type + 1], unit_id)] = true
874 859
893 end 878 end
894 end -- do-block 879 end -- do-block
895 880
896 881
897 function WDP:QUEST_LOG_UPDATE() 882 function WDP:QUEST_LOG_UPDATE()
898 local selected_quest = _G.GetQuestLogSelection() -- Save current selection to be restored when we're done. 883 local selected_quest = _G.GetQuestLogSelection() -- Save current selection to be restored when we're done.
899 local entry_index, processed_quests = 1, 0 884 local entry_index, processed_quests = 1, 0
900 local _, num_quests = _G.GetNumQuestLogEntries() 885 local _, num_quests = _G.GetNumQuestLogEntries()
901 886
902 while processed_quests <= num_quests do 887 while processed_quests <= num_quests do
903 local _, _, _, _, is_header, _, _, _, quest_id = _G.GetQuestLogTitle(entry_index) 888 local _, _, _, _, is_header, _, _, _, quest_id = _G.GetQuestLogTitle(entry_index)
1028 if bit.band(spell_flags, AF.OBJECT) == AF.OBJECT then 1013 if bit.band(spell_flags, AF.OBJECT) == AF.OBJECT then
1029 if target_name == "" then 1014 if target_name == "" then
1030 return 1015 return
1031 end 1016 end
1032 local identifier = ("%s:%s"):format(spell_label, target_name) 1017 local identifier = ("%s:%s"):format(spell_label, target_name)
1033 UpdateObjectLocation(identifier) 1018 UpdateDBEntryLocation("objects", identifier)
1034 1019
1035 action_data.type = AF.OBJECT 1020 action_data.type = AF.OBJECT
1036 action_data.identifier = identifier 1021 action_data.identifier = identifier
1037 elseif bit.band(spell_flags, AF.ZONE) == AF.ZONE then 1022 elseif bit.band(spell_flags, AF.ZONE) == AF.ZONE then
1023 local identifier = ("%s:%s"):format(spell_label, _G["GameTooltipTextLeft1"]:GetText() or "NONE") -- Possible fishing pool name.
1024 UpdateDBEntryLocation("zones", identifier)
1025
1038 action_data.type = AF.ZONE 1026 action_data.type = AF.ZONE
1039 action_data.label = spell_label:lower() 1027 action_data.identifier = identifier
1040 end 1028 end
1041 end 1029 end
1042 private.tracked_line = spell_line 1030 private.tracked_line = spell_line
1043 end 1031 end
1044 1032