local _,ns = ...;
local taxinodeinfos = {};
local firstshow = false;
local nextflight = nil;
local buttonsizechange = false;
local side,floc,flocn,flocd,flocdis,orig_taketaxinode;
local activetimers = {};
local nexttimercheck = 0.5;
local lasttaxicount = {0,0,0,0};
local doreminder = false;
local autotake = false;
ns.modules = {"wmc","mfm","ft"};
local L = ns.L;
FlightMapEnhanced_FlightLocations = {};
FlightMapEnhanced_FlightNames = {};
FlightMapEnhanced_Config = {};
FlightMapEnhancedCFrame = {};
function FlightMapEnhanced_OnLoad(self)
self:RegisterEvent("TAXIMAP_OPENED");
self:RegisterEvent("TAXIMAP_CLOSED");
self:RegisterEvent("ADDON_LOADED");
FlightMapEnhancedTaxiChoiceContainerScrollBar.Show =
function (self)
FlightMapEnhancedTaxiChoiceContainer:SetPoint("BOTTOMRIGHT", FlightMapEnhancedTaxiChoice, "BOTTOMRIGHT", -23, 4);
for _, button in next, _G["FlightMapEnhancedTaxiChoiceContainer"].buttons do
button:SetWidth(FlightMapEnhancedTaxiChoice:GetWidth()-22);
end
FlightMapEnhancedTaxiChoiceContainer.scrollChild:SetWidth(FlightMapEnhancedTaxiChoice:GetWidth()-22);
getmetatable(self).__index.Show(self);
end
FlightMapEnhancedTaxiChoiceContainerScrollBar.Hide =
function (self)
FlightMapEnhancedTaxiChoiceContainer:SetPoint("BOTTOMRIGHT", FlightMapEnhancedTaxiChoice, "BOTTOMRIGHT", -4, 4);
for _, button in next, FlightMapEnhancedTaxiChoiceContainer.buttons do
button:SetWidth(FlightMapEnhancedTaxiChoice:GetWidth());
end
FlightMapEnhancedTaxiChoiceContainer.scrollChild:SetWidth(FlightMapEnhancedTaxiChoice:GetWidth());
getmetatable(self).__index.Hide(self);
end
FlightMapEnhancedTaxiChoiceContainer.update = FlightMapEnhancedTaxiChoiceContainer_Update;
_G["FlightMapEnhancedTaxiChoiceCollapseOnShowText"]:SetText(L.ALWAYS_COLLAPSE);
end
StaticPopupDialogs["FLIGHTMAPENHANCED_CONFIRMFLIGHT"] = {
text = L.CONFIRM_FLIGHT,
button1 = L.YES,
button2 = L.NO,
OnAccept = function(self,data)
if(ns.ft) then
ns.ft:taketaxinode(data);
end
orig_taketaxinode(data);
end,
timeout = 0,
hideOnEscape = true,
}
local function taketaxinode(wn)
local showconfirm = false;
if(autotake==true and ns.vconf.ConfirmFlyAuto) then
showconfirm = true;
elseif(autotake==false and ns.vconf.ConfirmFlyManual) then
showconfirm = true;
end
autotake = false;
if(showconfirm==true) then
local confirm = StaticPopup_Show("FLIGHTMAPENHANCED_CONFIRMFLIGHT",TaxiNodeName(wn));
if(confirm) then
confirm.data = wn;
end
else
if(ns.ft) then
ns.ft:taketaxinode(wn);
end
orig_taketaxinode(wn);
end
end
function ns:timer(seconds,command)
if(#activetimers==0) then
FlightMapEnhancedTaxiChoice:SetScript("OnUpdate", function (self,elapsed)
nexttimercheck = nexttimercheck - elapsed;
if(nexttimercheck > 0) then
return;
else
nexttimercheck = 0.5;
end
for i,v in pairs(activetimers) do
v["sleft"] = v["sleft"] - nexttimercheck;
if(v["sleft"] <= 0) then
loadstring(v["command"])();
tremove(activetimers,i);
if(#activetimers==0) then
FlightMapEnhancedTaxiChoice:SetScript("OnUpdate",nil);
end
end
end
end);
end
tinsert(activetimers,{["sleft"]=seconds,["command"] = command});
end
local function CalcFlId(x,y,z)
return tonumber(z..ceil(x*100)..ceil(y*100));
end
local function CalcDist(x1,x2,y1,y2)
xd = x2-x1;
yd = y2-y1;
dist = sqrt(xd*xd + yd*yd)
return dist;
end
function FlightMapEnhancedTaxiChoiceButton_OnLoad(self)
local name = self:GetName();
self.name = _G[name.."Name"];
self.expandIcon = _G[name.."ExpandIcon"];
self.highlight = _G[name.."Highlight"];
self.stripe = _G[name.."Stripe"];
end
function FlightMapEnhanced_Show()
if (not FlightMapEnhancedTaxiChoiceContainer.buttons) then
HybridScrollFrame_CreateButtons(FlightMapEnhancedTaxiChoiceContainer, "FlightMapEnhancedButtonTemplate", 1, -2, "TOPLEFT", "TOPLEFT", 0, 0);
end
FlightMapEnhancedTaxiChoiceContainer_Update();
end
function FlightMapEnhanced_GetFlight(index)
if( taxinodeinfos[index]) then
return taxinodeinfos[index].name,taxinodeinfos[index].isheader,taxinodeinfos[index].flightid,taxinodeinfos[index].isexpanded,taxinodeinfos[index].discovered;
else
return nil;
end
end
function FlightMapEnhancedTaxiChoiceContainer_Update()
if (not FlightMapEnhancedTaxiChoiceContainer.buttons) then
return;
end
local buttons = FlightMapEnhancedTaxiChoiceContainer.buttons;
local button = buttons[1];
local scrollFrame = FlightMapEnhancedTaxiChoiceContainer;
local offset = HybridScrollFrame_GetOffset(scrollFrame);
local buttons = scrollFrame.buttons;
local numButtons = #buttons;
local name, isHeader,flightpathid, isExpanded,discovered;
local button, index;
local hidebuttons = false;
local displayedHeight=0;
for i=1, numButtons do
index = offset+i;
name, isHeader,flightpathid, isExpanded,discovered = FlightMapEnhanced_GetFlight(index);
button = buttons[i];
if ( not name or name == "") then
button:Hide();
else
if ( isHeader ) then
button.categoryLeft:Show();
button.categoryRight:Show();
button.categoryMiddle:Show();
button.expandIcon:Show();
if ( isExpanded ) then
hidebuttons = false;
button.expandIcon:SetTexCoord(0.5625, 1, 0, 0.4375);
else
hidebuttons = true;
button.expandIcon:SetTexCoord(0, 0.4375, 0, 0.4375);
end
button.highlight:SetTexture("Interface\\TokenFrame\\UI-TokenFrame-CategoryButton");
button.highlight:SetPoint("TOPLEFT", button, "TOPLEFT", 3, -2);
button.highlight:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -3, 2);
button.name:SetText(name);
button.name:SetFontObject("GameFontNormal");
button.name:SetPoint("LEFT", 22, 0);
else
button.categoryLeft:Hide();
button.categoryRight:Hide();
button.categoryMiddle:Hide();
button.expandIcon:Hide();
button.highlight:SetTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight");
button.highlight:SetPoint("TOPLEFT", button, "TOPLEFT", 0, 0);
button.highlight:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", 0, 0);
if(discovered==true) then
button.name:SetText(name);
else
button.name:SetText("|c00FF0000"..name);
end
button.name:SetPoint("LEFT", 11, 0);
button.flightpath = flightpathid;
button.name:SetFontObject("GameFontHighlight");
end
button.isHeader = isHeader;
button.isExpanded = isExpanded;
button.flightpathname = name;
button:Show();
end
displayedHeight = displayedHeight + button:GetHeight();
end
local totalHeight = #taxinodeinfos * (button:GetHeight())+5;
HybridScrollFrame_Update(scrollFrame, totalHeight, displayedHeight);
end
function FlightMapEnhancedTaxiChoiceButton_OnEnter(self)
if not(self.isHeader) then
TaxiNodeOnButtonEnter(_G["TaxiButton"..self.flightpath]);
end
end
function FlightMapEnhancedTaxiChoiceButton_OnLeave(self)
GameTooltip:Hide();
end
function FlightMapEnhancedTaxiChoiceButton_OnClick(self, button, down)
if ( self.isHeader ) then
if ( self.isExpanded ) then
FlightMapEnhanced_Config.notexpanded[self.flightpathname] = true;
else
FlightMapEnhanced_Config.notexpanded[self.flightpathname] = nil;
end
FlightMapEnhanced_CreateFlyPathTable();
FlightMapEnhancedTaxiChoiceContainer_Update();
else
TakeTaxiNode(self.flightpath);
end
end
local function pairsByKeys (t, f)
local a = {}
for n in pairs(t) do table.insert(a, n) end
table.sort(a, f)
local i = 0 -- iterator variable
local iter = function () -- iterator function
i = i + 1
if a[i] == nil then return nil
else return a[i], t[a[i]]
end
end
return iter
end
--to be removed after alpha
local function checkifdiscovered(fid)
for index,value in pairs(floc) do
for index2,value2 in pairs(value) do
if(index2==fid) then
return true;
end
end
end
return false;
end
function ns:GetPlayerData()
local oldmapid = GetCurrentMapAreaID();
local oldlevel = GetCurrentMapDungeonLevel();
SetMapToCurrentZone();
local cont,mapid,maplevel,px,py;
cont = GetCurrentMapContinent();
mapid = GetCurrentMapAreaID();
maplevel = GetCurrentMapDungeonLevel();
px,py = GetPlayerMapPosition("player");
SetMapByID(oldmapid);
SetDungeonMapLevel(oldlevel);
return cont,mapid,maplevel,px,py;
end
local function tcount(tab)
local n = #tab
if (n == 0) then
for _ in pairs(tab) do
n = n + 1
end
end
return n
end
function FlightMapEnhanced_CreateFlyPathTable()
local takeflight=0;
local tmptaxinode={};
taxinodeinfos = {};
local numtaxis = NumTaxiNodes();
local curcont,curmapid = ns:GetPlayerData();
local updatenames = false;
local updatediscovered = false;
if(doreminder) then
if(tcount(FlightMapEnhanced_FlightTimes)>0 or tcount(FlightMapEnhanced_FlightLocations)>0) then
print("|c0000FF00Flight Map Enhanced|r:"..L.NEW_FLIGHT_PATH_DISCOVERED_HELP);
doreminder = false;
ns.gconf.lastcheck = time();
end
end
--this need overwork due diff chars know diff locations
--workarround for now having a table which saves the number of flight points
--so it update only once per session/continent
if(numtaxis ~= lasttaxicount[curcont]) then
updatenames = true;
lasttaxicount[curcont] = numtaxis;
--print("updating names");
end
if(flocdis["count"][curcont] ~= numtaxis) then
updatediscovered = true;
--print("updating known flight path locations");
end
for i=1,numtaxis do
local match1,match2 = strmatch(TaxiNodeName(i),"^(.*),(.*)");
if(match2 == nil) then --zone and subzone same name kinda in captials
match1 = TaxiNodeName(i);
match2 = TaxiNodeName(i);
end
match1=strtrim(match1);
match2=strtrim(match2);
if(updatenames == true or updatediscovered== true) then
local tx,ty = TaxiNodePosition(i);
local flid = CalcFlId(tx,ty,curcont);
if(updatenames == true) then
if not(flocn[flid]) then
flocn[flid] = match1;
flocn["count"][curcont] = flocn["count"][curcont] +1;
end
end
if(updatediscovered==true) then
if not(flocdis[flid]) then
flocdis[flid] = 1;
end
end
end
if(TaxiNodeGetType(i)=="REACHABLE") then
if(match1==nextflight) then
takeflight = i;
end
if not (taxinodeinfos[match2]) then
taxinodeinfos[match2] = {};
end
taxinodeinfos[match2][match1] = i;
elseif(TaxiNodeGetType(i)=="CURRENT") then
if not(floc[curmapid]) then
floc[curmapid] = {};
end
--CalcFlId
ns.current = i;
local tx,ty = TaxiNodePosition(i);
local flid = CalcFlId(tx,ty,curcont);
if not(floc[curmapid][flid]) then
floc[curmapid][flid] = {};
floc[curmapid][flid].cont = curcont;
local x,y = GetPlayerMapPosition("player");
floc[curmapid][flid].x = ceil(x*1000)/1000;
floc[curmapid][flid].y = ceil(y*1000)/1000;
local curfaction = UnitFactionGroup("target");
if(curfaction == "Horde" or curfaction == "Alliance") then
floc[curmapid][flid]["faction"] = curfaction;
else
floc[curmapid][flid]["faction"] = "Neutral";
end
--temporary add it also to the saved variables
if not(FlightMapEnhanced_FlightLocations[curmapid]) then
FlightMapEnhanced_FlightLocations[curmapid] = {};
end
FlightMapEnhanced_FlightLocations[curmapid][flid] = floc[curmapid][flid];
-- removed due new optionprint("|c0000FF00Flight Map Enhanced|r:"..L.NEW_FLIGHT_PATH_DISCOVERED_HELP);
--temporary
end
--end
end
end
if(updatediscovered==true) then
flocdis["count"][curcont] = numtaxis;
end
local runs = 1;
for key, val in pairsByKeys(taxinodeinfos) do
tmptaxinode[runs] = {};
tmptaxinode[runs].name = key;
tmptaxinode[runs].isheader = true;
tmptaxinode[runs].flightid = 0;
if (not FlightMapEnhanced_Config.notexpanded[key] and (FlightMapEnhanced_Config.alwayscollapse==nil or firstshow == false)) then
tmptaxinode[runs].isexpanded = true;
runs=runs+1;
for key2, val2 in pairsByKeys(val) do
tmptaxinode[runs] = {};
tmptaxinode[runs].name = key2;
tmptaxinode[runs].isheader = false;
tmptaxinode[runs].flightid = val2;
local tx,ty = TaxiNodePosition(val2);
local flid = CalcFlId(tx,ty,curcont);
if (checkifdiscovered(flid)==true) then
tmptaxinode[runs].discovered = true;
else
tmptaxinode[runs].discovered = false;
end
tmptaxinode[runs].isexpanded = true;
runs=runs+1
end
else
if(FlightMapEnhanced_Config.alwayscollapse==1) then
FlightMapEnhanced_Config.notexpanded[key] = true;
end
tmptaxinode[runs].isexpanded = false;
runs=runs+1;
end
end
taxinodeinfos = tmptaxinode;
firstshow = false;
if(takeflight~=0) then
nextflight=nil;
if(ns.wmc) then
ns.wmc:FlightTaken();
end
autotake=true;
ns:timer(1,"TakeTaxiNode("..takeflight..")");
end
end
--redudant code clean up at some time
function FlightMapEnhanced_AlterFlightPaths()
local a = ns:GetPlayerData();
if(FlightMapEnhanced_Config.fps[a] ) then
if(NumTaxiNodes()==FlightMapEnhanced_Config.fps[a].total) then
return
end
end
local tmptaxinode,tmptaxinode2 = {},{};
FlightMapEnhanced_Config.fps[a] = {};
for i=1,NumTaxiNodes() do
local match1,match2 = strmatch(TaxiNodeName(i),"^(.*),(.*)");
if(match2 == nil) then --zone and subzone same name kinda in captials
match1 = TaxiNodeName(i);
match2 = TaxiNodeName(i);
end
match1=strtrim(match1);
match2=strtrim(match2);
if not (tmptaxinode2[match2]) then
tmptaxinode2[match2] = {};
end
tmptaxinode2[match2][match1] = i;
end
FlightMapEnhanced_Config.fps[a] = tmptaxinode2;
FlightMapEnhanced_Config.fps[a].total = tcount;
end
--this could be used by other addon if wanted
function FlightMapEnhanced_SetNextFly(flyto)
nextflight = flyto;
print("|c0000FF00Flight Map Enhanced|r: "..L.NEXT_FLIGHT_GOTO.." "..flyto);
end
--this could be used by other addon if wanted
--todo with calculation now over all zones per continent may should changed the format of FlightMapEnhancedLocations.lua
function FlightMapEnhanced_GetClosestFlightPath(mapcont,mapareaid,coordx,coordy)
--if not (floc[mapareaid]) then
-- print(L.NO_FLIGHT_LOCATIONS_KNOWN);
if(flocdis["count"][mapcont] == 0) then
print(L.NEED_VISIT_FLIGHT_MASTER);
else
local closest = 100000;
local flyto={};
--old for index,value in pairs(floc[mapareaid]) do
for index,value in pairs(floc) do
for i2,v2 in pairs(value) do
if((v2["faction"]==side or v2["faction"]=="Neutral") and v2["cont"]==mapcont and flocdis[i2]==1 ) then
--print(ns.Astrolabe:ComputeDistance(mapareaid,0,coordx,coordy,index,0,v2.x,v2.y));
--old local dist = CalcDist(coordx,value.x,coordy,value.y);
local dist = ns.Astrolabe:ComputeDistance(mapareaid,0,coordx,coordy,index,0,v2.x,v2.y);
if(dist<closest) then
closest = dist;
flyto={["name"]=flocn[i2],["mapid"]=index,["x"]=v2.x,["y"]=v2.y};
end
end
end
end
if(flyto~="") then
return flyto;
else
print(L.NO_FLIGHT_LOCATIONS_KNOWN);
end
end
end
function FlightMapEnhanced_OnEvent(self,event,...)
if(event=="TAXIMAP_OPENED") then
if(NumTaxiNodes()==0) then return; end
firstshow = true;
FlightMapEnhanced_CreateFlyPathTable();
if(FlightMapEnhanced_Config.TaxiFramePoints) then
TaxiFrame:ClearAllPoints();
TaxiFrame:SetPoint(unpack(FlightMapEnhanced_Config.TaxiFramePoints));
end
if(FlightMapEnhanced_Config.TaxiFrameSize) then
TaxiFrame:SetHeight(FlightMapEnhanced_Config.TaxiFrameSize[1]);
TaxiFrame:SetWidth(FlightMapEnhanced_Config.TaxiFrameSize[2]);
TAXI_MAP_WIDTH = TaxiFrame:GetWidth()-10;
TAXI_MAP_HEIGHT = TaxiFrame:GetHeight()-28;
TaxiFrame_OnEvent(TaxiFrame,"TAXIMAP_OPENED");
DrawOneHopLines();
end
if( not FlightMapEnhanced_Config.vconf.DetachAddon or not FlightMapEnhanced_Config.FlightMapEnhancedTaxiChoicePoints or not FlightMapEnhanced_Config.FlightMapEnhancedTaxiChoiceSize) then
FlightMapEnhancedTaxiChoice:SetHeight(TaxiFrame:GetHeight());
FlightMapEnhancedTaxiChoice:SetWidth(250);
FlightMapEnhancedTaxiChoice:ClearAllPoints();
FlightMapEnhancedTaxiChoice:SetPoint("TOPLEFT",TaxiFrame,"BOTTOMRIGHT",0,TaxiFrame:GetHeight());
else
FlightMapEnhancedTaxiChoice:SetHeight( FlightMapEnhanced_Config.FlightMapEnhancedTaxiChoiceSize[1]);
FlightMapEnhancedTaxiChoice:SetWidth(FlightMapEnhanced_Config.FlightMapEnhancedTaxiChoiceSize[2]);
FlightMapEnhancedTaxiChoice:ClearAllPoints();
FlightMapEnhancedTaxiChoice:SetPoint(unpack(FlightMapEnhanced_Config.FlightMapEnhancedTaxiChoicePoints));
buttonsizechange=true;
end
FlightMapEnhancedTaxiChoice:Show();
FlightMapEnhanced_AlterFlightPaths();
elseif(event=="TAXIMAP_CLOSED") then
FlightMapEnhancedTaxiChoice:Hide();
taxinodeinfos = {};
elseif(event=="ADDON_LOADED") then
ns.Astrolabe = DongleStub("Astrolabe-1.0");
local arg1 = ...;
if(arg1 == "FlightMapEnhanced") then
--FlightMapEnhanced_GlobalConf = nil;
orig_taketaxinode = TakeTaxiNode;
TakeTaxiNode = taketaxinode;
if not(FlightMapEnhanced_GlobalConf) then
FlightMapEnhanced_GlobalConf = {};
FlightMapEnhanced_GlobalConf["version"] = 1;
FlightMapEnhanced_GlobalConf["lastcheck"] = time();
ns.gconf = FlightMapEnhanced_GlobalConf;
else
ns.gconf = FlightMapEnhanced_GlobalConf;
if(time()-ns.gconf.lastcheck>604800) then
doreminder = true;
end
end
if not(FlightMapEnhanced_Config.notexpanded) then
FlightMapEnhanced_Config.notexpanded = {};
end
if not(FlightMapEnhanced_Config.discovery) then
FlightMapEnhanced_Config.discovery = {};
end
flocdis = FlightMapEnhanced_Config.discovery;
ns.flocdis = flocdis;
floc = ns.floc;
local delete=true;
--temporary add new discovered flightpath from the saved config to the known one and remove any of the saved which are known
for flocdi,flocdv in pairs(FlightMapEnhanced_FlightLocations) do
if not(floc[flocdi]) then
floc[flocdi] = {};
end
for flocdi2,flocdv2 in pairs(flocdv) do
if not(floc[flocdi][flocdi2]) then
floc[flocdi][flocdi2] = flocdv2;
delete=false;
--print("not found");
else
FlightMapEnhanced_FlightLocations[flocdi][flocdi2] = nil;
--print("found");
end
end
if(delete==true) then
--print("delete");
FlightMapEnhanced_FlightLocations[flocdi] = nil;
end
delete=true;
end
--temporary
--flocd = FlightMapEnhanced_FlightLocations;
flocn = FlightMapEnhanced_FlightNames;
--FlightMapEnhanced_FlightNames = {};
--print("c"..tcount(FlightMapEnhanced_FlightLocations));
if not(flocn["count"]) then
flocn["count"] = {};
flocn["count"][1] = 0;
flocn["count"][2] = 0;
flocn["count"][3] = 0;
flocn["count"][4] = 0;
end
ns.flocn = flocn;
if not(flocdis["count"]) then
flocdis["count"] = {};
flocdis["count"][1] = 0;
flocdis["count"][2] = 0;
flocdis["count"][3] = 0;
flocdis["count"][4] = 0;
end
--FlightMapEnhanced_FlightLocations = {};
side = UnitFactionGroup("player");
FlightMapEnhancedTaxiChoiceCollapseOnShow:SetChecked(FlightMapEnhanced_Config.alwayscollapse);
FlightMapEnhancedTaxiChoice:UnregisterEvent("ADDON_LOADED");
if not (FlightMapEnhanced_Config.minimap) then
FlightMapEnhanced_Config.minimap = 45;
end
FlightMapEnhancedMiniMap_Reposition();
if not (FlightMapEnhanced_Config.fps) then
FlightMapEnhanced_Config.fps = {};
end
FlightMapEnhancedCFrame:Init();
if not(FlightMapEnhanced_Config.vconf.module) then
FlightMapEnhanced_Config.vconf.module = {};
end
ns:LoadModules();
if not(FlightMapEnhanced_Config.vconf.version) then
ns:configchange(0,9);
elseif(FlightMapEnhanced_Config.vconf.version<9) then
ns:configchange(FlightMapEnhanced_Config.vconf.version,9);
end
ns.configchange = nil;
if(ns.gconf.version < 5) then
ns:gconfigchange(5);
end
ns.gconfigchange = nil;
collectgarbage();
end
end
end
function FlightMapEnhanced_SavePosSize(frame)
local a,b,c,d,e = _G[frame]:GetPoint(); if(b~=nil) then b=b:GetName(); end;
FlightMapEnhanced_Config[frame.."Points"] = {a,b,c,d,e}
FlightMapEnhanced_Config[frame.."Size"] = {_G[frame]:GetHeight(),_G[frame]:GetWidth()};
if(frame=="FlightMapEnhancedTaxiChoiceContainer") then
buttonsizechange = true;
end
end
function FlightMapEnhancedMiniMap_Reposition()
FlightMapEnhancedMinimapButton:SetPoint("TOPLEFT","Minimap","TOPLEFT",52-(80*cos(FlightMapEnhanced_Config.minimap)),(80*sin(FlightMapEnhanced_Config.minimap))-52)
end
function FlightMapEnhanced_MinimapButton_DraggingFrame_OnUpdate()
local xpos,ypos = GetCursorPosition()
local xmin,ymin = Minimap:GetLeft(), Minimap:GetBottom()
xpos = xmin-xpos/UIParent:GetScale()+70 -- get coordinates as differences from the center of the minimap
ypos = ypos/UIParent:GetScale()-ymin-70
FlightMapEnhanced_Config.minimap = math.deg(math.atan2(ypos,xpos)) -- save the degrees we are relative to the minimap center
FlightMapEnhancedMiniMap_Reposition() -- move the button
end
function FlightMapEnhancedMinimapButton_OnClick()
local a = ns:GetPlayerData();
if not(FlightMapEnhanced_Config.fps[a]) then
print(L.NEED_VISIT_FLIGHT_MASTER_MINIMAP);
return;
end
local menu = {};
menu[1] = { text = "none", func = function() nextflight=nil;if(ns.wmc) then ns.wmc:FlightTaken(); end end,checked=true }
local round = 2;
for key, val in pairsByKeys(FlightMapEnhanced_Config.fps[a]) do
if(key~="total") then
local tmpmenu = {};
--tinsert(tmpmenu,{ text = key, hasArrow = true,menuList= {}});
tmpmenu.text = key;
tmpmenu.hasArrow=true;
tmpmenu.menuList = {};
--local menulist = {};
--menulist.menuList = {};
for key2,val2 in pairsByKeys(val) do
if(key2==nextflight) then
tinsert(tmpmenu.menuList, { text = key2,checked=true});
tmpmenu.checked = true;
menu[1].checked = false;
else
tinsert(tmpmenu.menuList, { text = key2, func = function() nextflight=key2;DropDownList1:Hide(); end});
end
end
menu[round]=tmpmenu;
round=round+1;
end
end
FlightMapEnhanced_menuFrame = FlightMapEnhanced_menuFrame or CreateFrame("Frame", "FlightMapEnhanced_menuFrame", UIParent, "UIDropDownMenuTemplate")
EasyMenu(menu, FlightMapEnhanced_menuFrame, "cursor", 0 , 0, "MENU");
end
function FlightMapEnhancedShowToolTip(self,which)
if(which=="minimap") then
GameTooltip:SetOwner(self, "ANCHOR_LEFT");
GameTooltip:SetText("Flight Map Enhanced");
GameTooltip:AddLine(L.TOOLTIP_LINE1_MINIMAP);
GameTooltip:AddLine(L.TOOLTIP_LINE2_MINIMAP);
GameTooltip:Show();
elseif(which=="flightmapcollapse") then
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
GameTooltip:SetText(L.TOOLTIP_FLIGHTMAP_COLLAPSE, nil, nil, nil, nil, 1);
end
GameTooltip:Show();
end
TaxiFrame:SetResizable(true);
TaxiFrame:SetScript("OnDragStart", function () TaxiFrame:StartMoving(); end);
TaxiFrame:SetScript("OnDragStop", function () TaxiFrame:StopMovingOrSizing();FlightMapEnhanced_SavePosSize("TaxiFrame") end);
function ns:LoadModules()
for key, val in pairs(ns.modules) do
if(FlightMapEnhanced_Config.vconf.modules[val]==1) then
ns["init"..val]();
end
ns["init"..val] = nil;
end
end