Files
pfUI/modules/farmmode.lua
T

145 lines
4.2 KiB
Lua

pfUI:RegisterModule("farmmode", "vanilla:tbc", function ()
local function ToggleFarmMode()
if pfUI.farmmap:IsShown() then
pfUI.farmmap:Hide()
else
pfUI.farmmap:Show()
end
end
local function MoveNodes(layer)
-- pfMap entries (pfQuest / pfDB)
if pfMap and pfMap.drawlayer then
pfMap.drawlayer = layer
for id, pin in pairs(pfMap.mpins) do
pin:SetParent(layer)
end
pfMap:UpdateMinimap()
end
end
local function UpdateMinimap()
-- haven't found anything better to
-- force update the map textures
Minimap_ZoomIn()
Minimap_ZoomOut()
end
_G.SLASH_PFFARMMAP1, _G.SLASH_PFFARMMAP2 = "/farm", "/farmmode"
_G.SlashCmdList.PFFARMMAP = ToggleFarmMode
pfUI.farmmap = CreateFrame("Minimap", "pfFarmMap", UIParent)
pfUI.farmmap:Hide()
pfUI.farmmap:SetFrameStrata("LOW")
pfUI.farmmap:SetWidth(300)
pfUI.farmmap:SetHeight(300)
pfUI.farmmap:SetClampedToScreen(1)
pfUI.farmmap:SetPoint("TOPLEFT", UIParent, "TOPLEFT", 200, -200)
pfUI.farmmap:SetAlpha(.8)
pfUI.farmmap:SetMovable(1)
pfUI.farmmap:EnableMouse(1)
pfUI.farmmap:EnableMouseWheel(1)
pfUI.farmmap:RegisterForDrag("LeftButton")
pfUI.farmmap:SetScript("OnMouseWheel", function()
if IsControlKeyDown() then
this:SetWidth(this:GetWidth() + (arg1 > 0 and 10 or -10))
this:SetHeight(this:GetHeight() + (arg1 > 0 and 10 or -10))
Minimap_ZoomIn()
Minimap_ZoomOut()
elseif IsShiftKeyDown() then
this:SetAlpha(this:GetAlpha() + (arg1 > 0 and 0.1 or (this:GetAlpha() > 0.1 and -0.1 or 0)))
SaveMovable(this)
else
if(arg1 > 0) then Minimap_ZoomIn() else Minimap_ZoomOut() end
end
end)
pfUI.farmmap:SetScript("OnDragStart", function()
this:StartMoving()
end)
pfUI.farmmap:SetScript("OnDragStop", function()
this:StopMovingOrSizing()
SaveMovable(this)
end)
pfUI.farmmap:SetScript("OnUpdate", function()
if not Minimap:IsShown() then return end
Minimap:Hide()
-- move existing nodes to new minimap
MoveNodes(pfUI.farmmap)
-- move tracking frame
if pfUI.tracking then
pfUI.tracking:ClearAllPoints()
pfUI.tracking:SetPoint("TOPLEFT", pfUI.farmmap, -10, -10)
end
-- move pvp icon
if pfUI.minimap and pfUI.minimap.pvpicon then
pfUI.minimap.pvpicon:ClearAllPoints()
pfUI.minimap.pvpicon:SetPoint("BOTTOMRIGHT", pfUI.farmmap, "BOTTOMRIGHT", -5, 5)
end
-- save old minimap height
if pfUI.minimap then
this.mmoldsize = pfUI.minimap:GetHeight()
pfUI.minimap:SetHeight(16)
pfUI.minimap:SetAlpha(1)
pfUI.farmmap.button:Show()
end
-- refresh minimap content
UpdateMinimap()
end)
pfUI.farmmap:SetScript("OnHide", function()
ShowUIPanel(Minimap)
-- move existing nodes to new minimap
MoveNodes(Minimap)
-- move tracking frame
if pfUI.tracking then
pfUI.tracking:ClearAllPoints()
pfUI.tracking:SetPoint("TOPLEFT", pfUI.minimap or Minimap, -10, -10)
UpdateMovable(pfUI.tracking)
end
-- move pvp icon
if pfUI.minimap and pfUI.minimap.pvpicon then
pfUI.minimap.pvpicon:ClearAllPoints()
pfUI.minimap.pvpicon:SetPoint("BOTTOMRIGHT", pfUI.minimap, "BOTTOMRIGHT", -5, 5)
end
-- save old minimap height
if pfUI.minimap then
pfUI.minimap:SetHeight(140)
pfUI.minimap:SetAlpha(1)
pfUI.farmmap.button:Hide()
end
-- refresh minimap content
UpdateMinimap()
end)
if pfUI.minimap then
pfUI.farmmap.button = CreateFrame("Button", "pfFarmMapButton", pfUI.minimap)
pfUI.farmmap.button:Hide()
pfUI.farmmap.button:SetPoint("TOPLEFT", pfUI.minimap, "TOPLEFT", 0, 0)
pfUI.farmmap.button:SetPoint("BOTTOMRIGHT", pfUI.minimap, "BOTTOMRIGHT", 0, 0)
pfUI.farmmap.button:SetFrameStrata("MEDIUM")
pfUI.farmmap.button:SetScript("OnClick", ToggleFarmMode)
pfUI.farmmap.button.txt = pfUI.farmmap.button:CreateFontString("pfFarmMapText", "LOW", "GameFontWhite")
pfUI.farmmap.button.txt:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE")
pfUI.farmmap.button.txt:SetPoint("CENTER", 0, 0)
pfUI.farmmap.button.txt:SetText("|cff33ffcc FARM MODE")
end
CreateBackdrop(pfUI.farmmap)
LoadMovable(pfUI.farmmap)
end)