vanilla-wow-addons – Rev 1
?pathlinks?
simpleMinimap_Movers = simpleMinimap:NewModule("movers")
local L = AceLibrary("AceLocale-2.1"):GetInstance("simpleMinimap_Movers", true)
--
function simpleMinimap_Movers:OnInitialize()
self.db = simpleMinimap:AcquireDBNamespace("movers")
self.movers = {
QuestWatchFrame = "smmQuestMover",
DurabilityFrame = "smmDollMover",
QuestTimerFrame = "smmTimerMover",
smmCaptureMover = "smmCaptureMover"
}
self.framesDefault = {
QuestWatchFrame = { anchor=MinimapCluster, point="TOPRIGHT", rpoint="BOTTOMRIGHT", x=0, y=10 },
DurabilityFrame = { anchor=MinimapCluster, point="TOPRIGHT", rpoint="BOTTOMRIGHT", x=40, y=15 },
QuestTimerFrame = { anchor=MinimapCluster, point="TOPRIGHT", rpoint="BOTTOMRIGHT", x=10, y=0 },
smmCaptureMover = { anchor=MinimapCluster, point="TOPRIGHT", rpoint="BOTTOMRIGHT", x=10, y=15 }
}
self.defaults = { enabled=true, framePos={} }
self.options = {
type="group", name=L.movers, desc=L.movers_desc,
args={
title={
type="header", order=1, name="simpleMinimap |cFFFFFFCC"..L.movers
},
spacer1={
type="header", order=2
},
enabled={
type="toggle", order=3, name=L.enabled, desc=L.enabled_desc,
get=function() return(self.db.profile.enabled) end,
set=function(x) self.db.profile.enabled=x simpleMinimap:ToggleModuleActive(self,x) end
},
spacer2={
type="header", order=4, name="---"
},
hide={
type="toggle", order=10, name=L.hide, desc=L.hide_desc,
get=function() return(self.db.profile.hide) end,
set=function(x) self.db.profile.hide=x self:UpdateScreen() end
}
}
}
simpleMinimap.options.args.modules.args.movers = self.options
simpleMinimap:RegisterDefaults("movers", "profile", self.defaults)
for n, f in pairs(self.movers) do
local movee, mover = getglobal(n), getglobal(f)
mover:SetScript("OnDragStart", function() self:FrameDrag(true) end)
mover:SetScript("OnDragStop", function() self:FrameDrag(false) end)
mover:RegisterForDrag("LeftButton")
mover.smmMover = n
mover:SetScript("OnEnter", function() GameTooltip:SetOwner(this, "ANCHOR_CURSOR") GameTooltip:SetText(L.drag.." |cFFFFFF99"..this.smmMover) end)
mover:SetScript("OnLeave", function() GameTooltip:Hide() end)
mover:SetAlpha(0.4)
movee:SetMovable(true)
end
end
--
function simpleMinimap_Movers:OnEnable()
if(self.db.profile.enabled) then
self:RegisterEvent("UPDATE_WORLD_STATES")
self:UpdateScreen()
else
simpleMinimap:ToggleModuleActive(self, false)
end
end
--
function simpleMinimap_Movers:OnDisable()
self:UpdateScreen()
end
--
function simpleMinimap_Movers:FrameDrag(kick)
local f = getglobal(this.smmMover)
if(kick and not simpleMinimap.db.profile.lock) then
f.isMoving = true
f:StartMoving()
GameTooltip:Hide()
elseif(f.isMoving) then
f.isMoving = false
f:StopMovingOrSizing()
self.db.profile.framePos[this.smmMover] = {}
self.db.profile.framePos[this.smmMover].x, self.db.profile.framePos[this.smmMover].y = f:GetCenter()
end
end
--
function simpleMinimap_Movers:UpdateScreen()
for n, f in pairs(self.movers) do
local movee, mover = getglobal(n), getglobal(f)
if(simpleMinimap:IsModuleActive(self) and self.db.profile.framePos[n]) then
simpleMinimap:LockFrame(movee)
movee:smm_ClearAllPoints()
movee:smm_SetPoint("CENTER", UIParent, "BOTTOMLEFT", self.db.profile.framePos[n].x, self.db.profile.framePos[n].y)
elseif(movee.smmTouched) then
simpleMinimap:UnlockFrame(movee)
movee:ClearAllPoints()
movee:SetPoint(self.framesDefault[n].point, self.framesDefault[n].anchor, self.framesDefault[n].rpoint, self.framesDefault[n].x, self.framesDefault[n].y)
movee:SetUserPlaced(false)
end
if(simpleMinimap:IsModuleActive(self) and not self.db.profile.hide and not simpleMinimap.db.profile.lock) then
mover:Show()
else
mover:Hide()
end
end
end
--
function simpleMinimap_Movers:UPDATE_WORLD_STATES()
for i = 1, NUM_EXTENDED_UI_FRAMES do
local frame = getglobal("WorldStateCaptureBar"..i)
if(frame) then
if(simpleMinimap:IsModuleActive(self)) then
if(not frame.smmTouched) then
simpleMinimap:LockFrame(frame)
frame:smm_ClearAllPoints()
frame:smm_SetPoint("Center", smmCaptureMover)
end
elseif(frame.smmTouched) then
simpleMinimap:UnlockFrame(frame)
end
end
end
end
Generated by GNU Enscript 1.6.5.90.