local ns = select( 2, ... ); function ns:initwmc() ns.wmc = {}; local module = ns.wmc; local config = CreateFrame("Frame"); local L = ns.L; local minimappointer; function module:init() WorldMapButton:HookScript("OnMouseDown",module.WorldMapClickHandler); config:init(); minimappointer=CreateFrame("Button", nil,UIParent ); minimappointer:SetWidth(18); minimappointer:SetHeight(18); minimappointer.icon = minimappointer:CreateTexture("ARTWORK"); minimappointer.icon:SetAllPoints(); minimappointer.icon:SetTexture("Interface\\MINIMAP\\TRACKING\\FlightMaster"); minimappointer:SetFrameLevel(10000); end function module:GetCursorPos() local left, top = WorldMapDetailFrame:GetLeft(), WorldMapDetailFrame:GetTop() local width, height = WorldMapDetailFrame:GetWidth(), WorldMapDetailFrame:GetHeight() local scale = WorldMapDetailFrame:GetEffectiveScale() local x, y = GetCursorPosition() local cx = (x/scale - left) / width local cy = (top - y/scale) / height if cx < 0 or cx > 1 or cy < 0 or cy > 1 then return end return cx, cy end function module:FlightTaken() minimappointer:Hide(); end function module:WorldMapClickHandler(mouseButton) --need check if continent is same local modcheck="return true"; if(FlightMapEnhanced_Config.vconf.module.wmc.MapModifierKey~="None") then modcheck = "return Is"..FlightMapEnhanced_Config.vconf.module.wmc.MapModifierKey.."KeyDown()"; end if (mouseButton == FlightMapEnhanced_Config.vconf.module.wmc.MapMouseButton and loadstring(modcheck)()) then local curcont = GetCurrentMapContinent(); local curmapid=GetCurrentMapAreaID(); local togox,togoy = module:GetCursorPos(); local nextflight=FlightMapEnhanced_GetClosestFlightPath(curcont,curmapid,togox,togoy); if(nextflight.name) then FlightMapEnhanced_SetNextFly(nextflight.name); if(FlightMapEnhanced_Config.vconf.module.wmc.minimap) then local curcont,curmapid,curmaplevel,posX,posY = ns:GetPlayerData(); local closestfp = FlightMapEnhanced_GetClosestFlightPath(curcont,curmapid,posX,posY); if(closestfp.name) then ns.Astrolabe:PlaceIconOnMinimap(minimappointer, closestfp.mapid,curmaplevel, closestfp.x, closestfp.y ); minimappointer:Show(); end end end end end function config:init() config.name = "World Map Click"; config.parent = "Flight Map Enhanced"; local WorlMapFeatureLabel = config:CreateFontString( nil, "ARTWORK", "GameFontHighlightSmall" ); config.WorlMapFeatureLabel = WorlMapFeatureLabel; WorlMapFeatureLabel:SetPoint( "TOPLEFT", 16, -16); WorlMapFeatureLabel:SetWidth(InterfaceOptionsFramePanelContainer:GetRight() - InterfaceOptionsFramePanelContainer:GetLeft() - 30); WorlMapFeatureLabel:SetHeight(0); WorlMapFeatureLabel:SetJustifyH("LEFT"); WorlMapFeatureLabel:SetText( L.WMC_MODIFIER_SETTINGS ); WorlMapFeatureLabel:Show(); local MapModifierKeyLabel = config:CreateFontString( nil, "ARTWORK", "GameFontHighlight" ); config.MapModifierKeyLabel = MapModifierKeyLabel; MapModifierKeyLabel:SetPoint( "BOTTOMLEFT" , WorlMapFeatureLabel,0,-25); MapModifierKeyLabel:SetText(L.MODIFIER_KEY); MapModifierKeyLabel:Show(); local MapModifierKey = CreateFrame("Frame", "FlightMapEnhancedMapModifierKeyFrame", config, "UIDropDownMenuTemplate") config.MapModifierKey = MapModifierKey; MapModifierKey:SetPoint("RIGHT", MapModifierKeyLabel,30, 0) MapModifierKey.initialize = function () local info; info = UIDropDownMenu_CreateInfo() info.text = L.ALT_KEY; info.func = config.ChangeModifierKey info.value = "Alt"; UIDropDownMenu_AddButton(info) info = UIDropDownMenu_CreateInfo() info.text = L.CTRL_KEY; info.func = config.ChangeModifierKey info.value = "Control"; UIDropDownMenu_AddButton(info) info = UIDropDownMenu_CreateInfo() info.text = L.SHIFT_KEY; info.func = config.ChangeModifierKey info.value = "Shift"; UIDropDownMenu_AddButton(info) info = UIDropDownMenu_CreateInfo() info.text = L.NONE; info.func = config.ChangeModifierKey info.value = "None"; UIDropDownMenu_AddButton(info) end; local MapMouseButtonLabel = config:CreateFontString( nil, "ARTWORK", "GameFontHighlight" ); config.MapMouseButtonLabel = MapMouseButtonLabel; MapMouseButtonLabel:SetPoint( "RIGHT" , MapModifierKeyLabel,0,-16); MapMouseButtonLabel:SetText( L.MOUSEBUTTON ); MapMouseButtonLabel:Show(); local MapMouseButton = CreateFrame("Frame", "FlightMapEnhancedMapMapMouseButtonFrame", config, "UIDropDownMenuTemplate") config.MapMouseButton = MapMouseButton; MapMouseButton:SetPoint("RIGHT", MapMouseButtonLabel,30, 0) MapMouseButton.initialize = function () local info; info = UIDropDownMenu_CreateInfo() info.text = L.LEFT_BUTTON; info.func = config.ChangeMouseButton info.value = "LeftButton"; UIDropDownMenu_AddButton(info) info = UIDropDownMenu_CreateInfo() info.text = L.RIGHT_BUTTON; info.func = config.ChangeMouseButton info.value = "RightButton"; UIDropDownMenu_AddButton(info) info = UIDropDownMenu_CreateInfo() info.text = L.MIDDLE_BUTTON; info.func = config.ChangeMouseButton info.value = "MiddleButton"; UIDropDownMenu_AddButton(info) end; local showminimap = CreateFrame( "CheckButton", "FlightMapEnhanced_Module_wmc_minimap", config, "InterfaceOptionsCheckButtonTemplate" ); config.showminimap = showminimap; showminimap.id = "minimap"; showminimap:SetPoint( "TOPLEFT", MapMouseButtonLabel, "BOTTOMLEFT", 0, -16); showminimap:SetScript("onClick",config.ChangeState); _G[ showminimap:GetName().."Text" ]:SetText( L.WMC_SHOW_ON_MINIMAP ); _G[ showminimap:GetName().."Text" ]:SetWidth(InterfaceOptionsFramePanelContainer:GetRight() - InterfaceOptionsFramePanelContainer:GetLeft() - 30); _G[ showminimap:GetName().."Text" ]:SetJustifyH("LEFT"); InterfaceOptions_AddCategory(config); if not (FlightMapEnhanced_Config.vconf.module.wmc) then FlightMapEnhanced_Config.vconf.module.wmc = {}; config:SetDefaultConfig(); end config:InitDropDowns(); showminimap:SetChecked(FlightMapEnhanced_Config.vconf.module.wmc.minimap); end function config:ChangeState() FlightMapEnhanced_Config.vconf.module.wmc[self.id] = self:GetChecked(); end function config:ChangeModifierKey() FlightMapEnhanced_Config.vconf.module.wmc.MapModifierKey=self.value; UIDropDownMenu_SetSelectedValue(config.MapModifierKey,self.value,self.text); end function config:ChangeMouseButton() FlightMapEnhanced_Config.vconf.module.wmc.MapMouseButton=self.value; UIDropDownMenu_SetSelectedValue(config.MapMouseButton,self.value,self.text); end function config:SetDefaultConfig() FlightMapEnhanced_Config.vconf.module.wmc = {["MapMouseButton"]="LeftButton",["MapModifierKey"]="Control",["minimap"]=1}; end function config:InitDropDowns() UIDropDownMenu_Initialize(config.MapModifierKey, config.MapModifierKey.initialize) UIDropDownMenu_SetSelectedValue(config.MapModifierKey,FlightMapEnhanced_Config.vconf.module.wmc.MapModifierKey); UIDropDownMenu_Initialize(config.MapMouseButton, config.MapMouseButton.initialize) UIDropDownMenu_SetSelectedValue(config.MapMouseButton,FlightMapEnhanced_Config.vconf.module.wmc.MapMouseButton); end module:init(); end