# HG changeset patch # User James D. Callahan III # Date 1348751024 18000 # Node ID 2c2b7d91ca1969d71880c1a23fcd7c3ec3bf9296 # Parent f45ff137cf8ff72c293d7394a6ca8ae1378f79ca Record fishing coordinates based on the direction the character is facing. Minor cleanups. diff -r f45ff137cf8f -r 2c2b7d91ca19 .pkgmeta --- a/.pkgmeta Thu Sep 27 06:39:41 2012 -0500 +++ b/.pkgmeta Thu Sep 27 08:03:44 2012 -0500 @@ -19,3 +19,6 @@ url: git://git.wowace.com/wow/libdeformat-3-0/mainline.git Libs/LibPetJournal-2.0: url: http://hg.curseforge.net/wow/libpetjournal-2-0/mainline + Libs/LibMapData-1.0: + url: svn://svn.wowace.com/wow/libmapdata-1-0/mainline/trunk + tag: latest diff -r f45ff137cf8f -r 2c2b7d91ca19 Main.lua --- a/Main.lua Thu Sep 27 06:39:41 2012 -0500 +++ b/Main.lua Thu Sep 27 08:03:44 2012 -0500 @@ -23,6 +23,7 @@ local deformat = LibStub("LibDeformat-3.0") local LPJ = LibStub("LibPetJournal-2.0") +local MapData = LibStub("LibMapData-1.0") local DatamineTT = _G.CreateFrame("GameTooltip", "WDPDatamineTT", _G.UIParent, "GameTooltipTemplate") DatamineTT:SetOwner(_G.WorldFrame, "ANCHOR_NONE") @@ -320,26 +321,55 @@ end -local function UpdateDBEntryLocation(entry_type, identifier) - if not identifier then - return +local UpdateDBEntryLocation +do + local pi = math.pi + + -- Fishing node coordinate code based on code in GatherMate2 with permission from Kagaro. + local function FishingCoordinates(x, y, yard_width, yard_height) + local facing = _G.GetPlayerFacing() + + if not facing then + return x, y + end + local rad = facing + pi + return x + math.sin(rad) * 15 / yard_width, y + math.cos(rad) * 15 / yard_height end - local zone_name, area_id, x, y, map_level, difficulty_token = CurrentLocationData() - local entry = DBEntry(entry_type, identifier) - entry[difficulty_token] = entry[difficulty_token] or {} - entry[difficulty_token].locations = entry[difficulty_token].locations or {} - local zone_token = ("%s:%d"):format(zone_name, area_id) - local zone_data = entry[difficulty_token].locations[zone_token] - if not zone_data then - zone_data = {} - entry[difficulty_token].locations[zone_token] = zone_data + function UpdateDBEntryLocation(entry_type, identifier) + if not identifier then + return + end + local zone_name, area_id, x, y, map_level, difficulty_token = CurrentLocationData() + local entry = DBEntry(entry_type, identifier) + entry[difficulty_token] = entry[difficulty_token] or {} + entry[difficulty_token].locations = entry[difficulty_token].locations or {} + + local zone_token = ("%s:%d"):format(zone_name, area_id) + local zone_data = entry[difficulty_token].locations[zone_token] + + if not zone_data then + zone_data = {} + entry[difficulty_token].locations[zone_token] = zone_data + end + + -- Special case for Fishing. + if current_action.spell_label == "FISHING" then + local yard_width, yard_height = MapData:MapArea(area_id, map_level) + + if yard_width > 0 and yard_height > 0 then + x, y = FishingCoordinates(x, y, yard_width, yard_height) + current_action.x = x + current_action.y = y + end + end + local location_token = ("%d:%d:%d"):format(map_level, x, y) + + zone_data[location_token] = zone_data[location_token] or true + return zone_data end - local location_token = ("%s:%s:%s"):format(map_level, x, y) - zone_data[location_token] = zone_data[location_token] or true - return zone_data -end +end -- do-block local function HandleItemUse(item_link, bag_index, slot_index) @@ -757,7 +787,7 @@ return end end - zone_data[("%s:%s:%s"):format(map_level, x, y)] = true + zone_data[("%d:%d:%d"):format(map_level, x, y)] = true end end -- do-block @@ -1031,7 +1061,7 @@ function WDP:CURSOR_UPDATE(event_name) - if current_action.fishing_target or _G.Minimap:IsMouseOver() or not private.SPELL_FLAGS_BY_LABEL[current_action.spell_label] then + if current_action.fishing_target or _G.Minimap:IsMouseOver() or current_action.spell_label ~= "FISHING" then return end local text = _G["GameTooltipTextLeft1"]:GetText() @@ -1167,7 +1197,7 @@ GenericLootUpdate("objects", InstanceDifficultyToken()) end, [AF.ZONE] = function() - local location_token = ("%s:%s:%s"):format(current_loot.map_level, current_loot.x, current_loot.y) + local location_token = ("%d:%d:%d"):format(current_loot.map_level, current_loot.x, current_loot.y) -- This will start life as a boolean true. if _G.type(current_loot.zone_data[location_token]) ~= "table" then diff -r f45ff137cf8f -r 2c2b7d91ca19 libs.xml --- a/libs.xml Thu Sep 27 06:39:41 2012 -0500 +++ b/libs.xml Thu Sep 27 08:03:44 2012 -0500 @@ -10,5 +10,6 @@