# HG changeset patch # User Geoff Brock # Date 1477338109 14400 # Node ID 06d2307254485d4ac1797ada2081d30c30f3e0c9 Initial build of WhistleMaster diff -r 000000000000 -r 06d230725448 WhistleMaster.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WhistleMaster.lua Mon Oct 24 15:41:49 2016 -0400 @@ -0,0 +1,88 @@ + +function WM_Debug() + print("debug text") +end + +--indexes corrispond to map IDs that contain valid flight points for the Flight Masters Whistle +local validIDs = { [1014] = true, [1015] = true, [1017] = true, [1018] = true, [1024] = true, [1033] = true, [1096] = true } + +local WhistleLoc = CreateFrame("FRAME", "WhistleLOC", WorldMapPOIFrame) +WhistleLoc:SetSize(64, 64) +WhistleLoc:SetPoint("CENTER", 0, 0) +WhistleLoc:Show() + +--[[local Rotate = WhistleLoc:CreateTexture() +Rotate:SetTexture("Interface\minimap\UI-Minimap-Ping-Rotate") +Rotate:SetPoint("CENTER") +Rotate:SetSize(48, 48) +Rotate:SetVertexColor(0.9, 0.1, 0.1) + +local Ring = WhistleLoc:CreateTexture() +Ring:SetTexture("Interface\minimap\UI-Minimap-Ping-Center") +Ring:SetPoint("CENTER") +Ring:SetSize(32, 32) +Ring:SetVertexColor(0.9, 0.1, 0.1)]] + + + + +local function GetDistance(nX, nY) + local pX, pY = GetPlayerMapPosition("player") + + local dX = pX - nX + local dY = pY - nY + + return math.sqrt( ( dX^2 ) + ( dY^2 ) ) +end + +local function GetNode() + local node + local distance + local index + for k = 1, GetNumMapLandmarks() do + local n = {} + n.type, n.name, n.description, n.textureIndex, n.x, n.y = GetMapLandmarkInfo(k) + if n.type == LE_MAP_LANDMARK_TYPE_TAXINODE then --LE_MAP_LANDMARK_TYPE_TAXINODE is a constant defined by Blizzard + local d = GetDistance(n.x, n.y) + if distance == nil or d < distance then + n.index = k + distance = d + node = n + end + end + end + print("The closest node is... " .. node.name) + return node +end + +local function UpdateWhistleMaster() + if GetCurrentMapContinent() == 8 and validIDs[ select(1, GetCurrentMapAreaID() ) ] then + local closest = GetNode() + WhistleLoc:SetPoint("CENTER", "WorldMapFramePOI" .. closest.index, 0, 0) + WhistleLoc:Show() + WhistlePing.Ping:Play() + else + WhistleLoc:Hide() + WhistlePing.Ping:Stop() + print("wrong continent for whistle master") + end +end + +local mapVisible = false + +local function EventHandler(self, event, ...) + if ( (event == "WORLD_MAP_UPDATE") and WorldMapFrame:IsVisible() ) then + mapVisible = true + UpdateWhistleMaster() + end + if ( (mapVisible) and not WorldMapFrame:IsVisible() ) then + mapVisible = false + end +end + + + +local WhistleMaster = CreateFrame("FRAME", "WhistleMaster", WorldMapPOIFrame) +WhistleMaster:RegisterEvent("WORLD_MAP_UPDATE") +WhistleMaster:SetScript("OnEvent", EventHandler) + diff -r 000000000000 -r 06d230725448 WhistleMaster.toc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WhistleMaster.toc Mon Oct 24 15:41:49 2016 -0400 @@ -0,0 +1,10 @@ +## Interface: 70000 +## Title: WhistleMaster +## Notes: Shows you which flightmaster the Flight Master's Whistle will take you to when used. +## Author: Vynn of Khadgar (US) +## Version: 0.7.0.1 +## X-Email: mischivin@gmail.com +## X-Category: + +WhistleMaster.lua +WhistleMaster.xml diff -r 000000000000 -r 06d230725448 WhistleMaster.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WhistleMaster.xml Mon Oct 24 15:41:49 2016 -0400 @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file