D2Minimap = true D2MinimapSettings = { ["Frames"] = { ["MinimapBorderTop"] = { ["Alpha"] = 1, ["Point"] = { }, }, ["MinimapZoneTextButton"] = { ["Alpha"] = 0.3, ["Point"] = { }, }, ["MiniMapWorldMapButton"] = { ["Alpha"] = 0.8, ["Point"] = { }, }, ["MiniMapTracking"] = { ["Alpha"] = 0.2, ["Point"] = { }, }, ["GarrisonLandingPageMinimapButton"] = { ["Alpha"] = 0.2, ["Point"] = { ["yOfs"] = 0, ["xOfs"] = 0, ["point"] = "TOPRIGHT", ["relativePoint"] = "TOPRIGHT", }, }, ["MiniMapMailFrame"] = { ["Alpha"] = 0.5, ["Point"] = { }, }, ["TimeManagerClockButton"] = { ["Alpha"] = 0.3, ["Point"] = { }, }, ["Minimap"] = { ["Zoom"] = 5, ["Point"] = { }, ["Shown"] = true, ["PlayerArrow"] = false, ["Alpha"] = 0.1, ["MaskSquare"] = false, }, }, } function D2Minimap_load() for frame, ftable in pairs(D2MinimapSettings["Frames"]) do pcall(function() _G[frame]:SetAlpha(ftable["Alpha"]) end) pcall(function() p = ftable["Point"] _G[frame]:ClearAllPoints() _G[frame]:SetPoint(p.point, p.relativeTo, p.relativePoint, p.xOfs, p.yOfs) end) end end function D2Minimap_save() for frame, ftable in pairs(D2MinimapSettings["Frames"]) do if frame ~= "" then ftable["Alpha"] = _G[frame]:GetAlpha() pcall(function() p = {} p.point, p.relativeTo, p.relativePoint, p.xOfs, p.yOfs = _G[frame]:GetPoint() pcall(function() p.relativeFrame = p.relativeTo:GetName() end) ftable["Point"] = p end) end end D2MinimapSettings["Frames"]["Minimap"]["Shown"] = Minimap:IsShown() D2MinimapSettings["Frames"]["Minimap"]["Zoom"] = Minimap:GetZoom() end local function D2Minimap_init(self, event, addon, ...) if (event == "PLAYER_ENTERING_WORLD") then Minimap:ClearAllPoints() Minimap:SetParent(UIParent) Minimap:SetAlpha(D2MinimapSettings["Frames"]["Minimap"]["Alpha"]) Minimap:SetFrameStrata("BACKGROUND") Minimap:SetPoint("CENTER", UIParent, "CENTER", 0, 0); Minimap:SetHeight(1200) Minimap:SetWidth(1200) Minimap:SetScale(1.5) Minimap:SetScript("OnMouseDown", nil) -- Remove Player-Arrow if D2MinimapSettings["Frames"]["Minimap"]["PlayerArrow"] then Minimap:SetPlayerTexture("Interface\\MINIMAP\\MinimapArrow") -- Minimap:SetPlayerTexture("Interface\\Minimap\\Vehicle-SilvershardMines-Arrow") else Minimap:SetPlayerTexture("") end -- Square the Map if D2MinimapSettings["Frames"]["Minimap"]["MaskSquare"] then Minimap:SetMaskTexture("Interface\\Buttons\\WHITE8X8") end Minimap:EnableMouse(false) Minimap:SetZoom(D2MinimapSettings["Frames"]["Minimap"]["Zoom"]) SetCVar("rotateMinimap", true) -- MinimapZoneTextButton and MinimapBorderTop MinimapZoneTextButton:SetParent(UIParent) MinimapZoneTextButton:SetPoint("TOP", UIParent, "TOP", 0, 0) MinimapZoneTextButton:SetAlpha(D2MinimapSettings["Frames"]["MinimapZoneTextButton"]["Alpha"]) MinimapBorderTop:SetParent(MinimapZoneTextButton) MinimapBorderTop:ClearAllPoints() MinimapBorderTop:SetPoint("TOP", MinimapZoneTextButton, "CENTER", 0, 15) -- TimeManagerClockButton TimeManagerClockButton:SetParent(UIParent) TimeManagerClockButton:SetPoint("TOP", MinimapZoneTextButton, "BOTTOM", 0, 3); TimeManagerClockButton:SetAlpha(D2MinimapSettings["Frames"]["TimeManagerClockButton"]["Alpha"]) TimeManagerClockButton:SetMovable(true) TimeManagerClockButton:EnableMouse(true) TimeManagerClockButton:RegisterForDrag("LeftButton") TimeManagerClockButton:SetScript("OnDragStart", TimeManagerClockButton.StartMoving) TimeManagerClockButton:SetScript("OnDragStop", TimeManagerClockButton.StopMovingOrSizing) -- MiniMapWorldMapButton MiniMapWorldMapButton:SetParent(MinimapZoneTextButton) MiniMapWorldMapButton:ClearAllPoints() MiniMapWorldMapButton:SetPoint("TOP", MinimapZoneTextButton, "RIGHT", 28, 15) MiniMapWorldMapButton:SetAlpha(D2MinimapSettings["Frames"]["MiniMapWorldMapButton"]["Alpha"]) -- MiniMapTracking MiniMapTracking:SetParent(UIParent) MiniMapTracking:SetPoint("TOPLEFT", UIParent, "TOPLEFT", 0, 0); MiniMapTracking:SetAlpha(D2MinimapSettings["Frames"]["MiniMapTracking"]["Alpha"]) -- MiniMapMailFrame MiniMapMailFrame:SetParent(UIParent) MiniMapMailFrame:ClearAllPoints() MiniMapMailFrame:SetPoint("TOPRIGHT", UIParent, "TOPRIGHT", -50, 50); MiniMapMailFrame:SetAlpha(D2MinimapSettings["Frames"]["MiniMapMailFrame"]["Alpha"]) MiniMapMailFrame:SetMovable(true) MiniMapMailFrame:EnableMouse(true) MiniMapMailFrame:RegisterForDrag("LeftButton") MiniMapMailFrame:SetScript("OnDragStart", MiniMapMailFrame.StartMoving) MiniMapMailFrame:SetScript("OnDragStop", MiniMapMailFrame.StopMovingOrSizing) -- GarrisonLandingPageMinimapButton GarrisonLandingPageMinimapButton:SetParent(UIParent) GarrisonLandingPageMinimapButton:ClearAllPoints() GarrisonLandingPageMinimapButton:SetPoint("TOPRIGHT", UIParent, "TOPRIGHT", 0, 0); GarrisonLandingPageMinimapButton:SetAlpha(D2MinimapSettings["Frames"]["GarrisonLandingPageMinimapButton"]["Alpha"]) GarrisonLandingPageMinimapButton:SetMovable(true) GarrisonLandingPageMinimapButton:EnableMouse(true) GarrisonLandingPageMinimapButton:RegisterForDrag("LeftButton") GarrisonLandingPageMinimapButton:SetScript("OnDragStart", GarrisonLandingPageMinimapButton.StartMoving) GarrisonLandingPageMinimapButton:SetScript("OnDragStop", GarrisonLandingPageMinimapButton.StopMovingOrSizing) MinimapBorder:Hide() MinimapZoomIn:Hide() MinimapZoomOut:Hide() MinimapCluster:Hide() if not D2MinimapSettings["Frames"]["Minimap"]["Shown"] then Minimap:Hide() end end if (event == "ADDON_LOADED") then D2Minimap_load() end if (event == "PLAYER_LOGOUT") then D2Minimap_save() end end local D2MinimapFrame = CreateFrame("Frame", "D2MinimapFrame", UIParent, "SecureHandlerStateTemplate") D2MinimapFrame:SetScript("OnEvent", D2Minimap_init) D2MinimapFrame:RegisterEvent("ADDON_LOADED") D2MinimapFrame:RegisterEvent("PLAYER_ENTERING_WORLD") D2MinimapFrame:RegisterEvent("PLAYER_LOGIN") D2MinimapFrame:RegisterEvent("PLAYER_LOGOUT") -- Ingame Configuration configui = {} configui = CreateFrame( "Frame", "D2Minimap", UIParent ) configui.name = "D2Minimap" configui.okay = nil configui.cancel = nil configui.default = nil InterfaceOptions_AddCategory(configui)