/
"GuildInstanceDifficulty", |
"MiniMapChallengeMode", |
"GarrisonLandingPageMinimapButton", |
"WorldStateAlwaysUpFrame", |
} |
local stratae = {"BACKGROUND", "LOW", "MEDIUM", "HIGH", "DIALOG"} |
local allshapes = { "3-Corner BL", |
"3-Corner TR", |
"Circle", |
"Compass", |
--"Faded Circle", --<-- Test these more |
--"Faded Edges", |
--"Faded Square", |
"Faded Circle", |
"Faded Edges", |
"Faded Square", |
"Fancy Frame", |
"Flower", |
"Half Round B", |
["3-Corner BR"] = "CORNER-TOPLEFT", |
["3-Corner TL"] = "CORNER-BOTTOMRIGHT", |
["3-Corner TR"] = "CORNER-BOTTOMLEFT", |
["Faded Circle"] = "CIRCLE", |
["Faded Edges"] = "SQUARE", |
["Faded Square"] = "SQUARE", |
["Fancy Frame"] = "SQUARE", |
["Half Round B"] = "SIDE-TOP", |
["Half Round L"] = "SIDE-RIGHT", |
["Zigzag Round"] = "ROUND", |
} |
local minimapButtonPaths = PocketPlot.minimapButtonPaths |
local fontFlags = {"None", "Outline", "Monochrome Outline"} --, "Monochrome"} |
local fontFlags = {"None", "Outline", "Monochrome Outline", "Monochrome"} |
local defaults = { |
shape = "Square", |
insets = 4, |
strata = "BACKGROUND", |
level = 2, |
hideNorth = true, |
} |
local function SetPosition(frame) |
local f = _G[frame] |
if mover and mover:IsShown() then |
local r,_,a,x,y = mover:GetPoint() |
db[frame] = {["r"]=r, --["p"]=UIParent, |
db[frame] = {["r"]=r, |
["a"]=a,["x"]=x,["y"]=y} |
end |
local fdata = db[frame] |
moverText:SetParent(mover) |
moverText:SetPoint("CENTER") |
mover:SetScript("OnMouseDown", function() mover:StartMoving() end) |
mover:SetScript("OnMouseUp", function() mover:StopMovingOrSizing() print(movershown) SetPosition(movershown) end) |
mover:SetScript("OnMouseUp", function() mover:StopMovingOrSizing() SetPosition(movershown) end) |
end |
if frame == "None" then |
mover:SetScale(1) |
desc = "Select a color for the minimap's border.", |
type = "color", |
disabled = function() return db.classbg end, |
-- hasAlpha = true, |
get = function() return db.bg.r, db.bg.g, db.bg.b end, |
set = function(_,r,g,b) |
db.bg.r, db.bg.g, db.bg.b = r,g,b |
end, |
order = 5, |
}, |
hideNorth = { |
name = "Hide North Tag", |
desc = "Hide the North marker on the minimap.\n\nThis will also hide the compass textures when the Rotate Minimap setting is enabled (in the game's Display settings).", |
type = "toggle", |
get = function() return db.hideNorth end, |
set = function() |
db.hideNorth = not db.hideNorth |
if db.hideNorth then |
MinimapNorthTag:SetAlpha(0) |
MinimapCompassTexture:SetAlpha(0) |
else |
MinimapNorthTag:SetAlpha(1) |
MinimapCompassTexture:SetAlpha(1) |
end |
end, |
order = 6, |
} |
}, |
}, |
text = { |
local _, class = UnitClass("player") |
local Minimap = Minimap |
local GameTooltip = GameTooltip |
local GetPlayerMapPosition = GetPlayerMapPosition |
local GetPlayerMapPosition = C_Map.GetPlayerMapPosition |
local GetBestMapForUnit = C_Map.GetBestMapForUnit |
local db, clockBG, clockTime, classColor, coords, coordframe, wasIndoors |
PocketPlot.bg = CreateFrame("Frame", "PocketPlotBG", Minimap) |
local bg = PocketPlot.bg |
PocketPlot.bgTex = bg:CreateTexture("PocketPlotBGTexture") |
local bgTex = PocketPlot.bgTex |
local f = CreateFrame("Frame") --events frame |
PocketPlot.SetShape = function() |
Minimap:SetMaskTexture("Interface\\AddOns\\PocketPlot\\media\\"..db.shape) |
bg:SetBackdrop({ bgFile = "Interface\\AddOns\\PocketPlot\\media\\"..db.shape }) |
if db.shape == "Faded Circle" then |
bgTex:SetTexture("Interface\\AddOns\\PocketPlot\\media\\Circle") |
elseif db.shape == "Faded Edges" or db.shape == "Faded Square" then |
bgTex:SetTexture("Interface\\AddOns\\PocketPlot\\media\\Square") |
else |
bgTex:SetTexture("Interface\\AddOns\\PocketPlot\\media\\"..db.shape) |
end |
--so minimap buttons follow the border of the map, for any addons that support it |
GetMinimapShape = function() return PocketPlot.minimapButtonPaths[db.shape] or "ROUND" end |
end |
PocketPlot.ClassColors = function() |
if db.classbg then |
bg:SetBackdropColor(classColor.r, classColor.g, classColor.b, db.alpha) |
bgTex:SetVertexColor(classColor.r, classColor.g, classColor.b, db.alpha) |
else |
bg:SetBackdropColor(db.bg.r, db.bg.g, db.bg.b, db.alpha) |
bgTex:SetVertexColor(db.bg.r, db.bg.g, db.bg.b, db.alpha) |
end |
if db.classfont then |
clockTime:SetTextColor(classColor.r, classColor.g, classColor.b) |
coordframe:ClearAllPoints() |
if not db.top then |
if clockshown and not coordshown then |
clockTime:SetJustifyH("CENTER") |
TimeManagerClockButton:SetPoint("TOP", Minimap, "BOTTOM", 0, 0 + db.textOffset) |
clockTime:SetJustifyH("CENTER") |
end |
if coordshown and not clockshown then |
coords:SetJustifyH("CENTER") |
coordframe:SetPoint("TOP", Minimap, "BOTTOM", 0, 0 + db.textOffset) |
end |
if clockshown and coordshown then |
clockTime:SetJustifyH("LEFT") |
TimeManagerClockButton:SetPoint("TOPLEFT", Minimap, "BOTTOMLEFT", 2, 0 + db.textOffset) |
clockTime:SetJustifyH("LEFT") |
coords:SetJustifyH("RIGHT") |
coordframe:SetPoint("TOPRIGHT", Minimap, "BOTTOMRIGHT", 0, 0 + db.textOffset) |
end |
else |
if clockshown and not coordshown then |
clockTime:SetJustifyH("CENTER") |
TimeManagerClockButton:SetPoint("BOTTOM", Minimap, "TOP", 2, 0 + db.textOffset) |
clockTime:SetJustifyH("CENTER") |
end |
if coordshown and not clockshown then |
coords:SetJustifyH("CENTER") |
coordframe:SetPoint("BOTTOM", Minimap, "TOP", 0, 0 + db.textOffset) |
end |
if clockshown and coordshown then |
clockTime:SetJustifyH("LEFT") |
TimeManagerClockButton:SetPoint("BOTTOMLEFT", Minimap, "TOPLEFT", 0, 0 + db.textOffset) |
clockTime:SetJustifyH("LEFT") |
coords:SetJustifyH("RIGHT") |
coordframe:SetPoint("BOTTOMRIGHT", Minimap, "TOPRIGHT", 0, 0 + db.textOffset) |
end |
end |
end |
local throttle, coordx, coordy = 0 |
local throttle, posData = 0 |
local function UpdateCoords(self, elapsed) |
throttle = throttle + elapsed |
if throttle >= .3 then |
coordx,coordy = GetPlayerMapPosition("player") |
if coordx then |
coords:SetFormattedText("%.1f/%.1f", coordx*100, coordy*100) |
local mapID = GetBestMapForUnit("player") |
posData = GetPlayerMapPosition(mapID, "player") --posData:GetXY() ? |
if posData then |
coords:SetFormattedText("%.1f/%.1f", posData.x*100, posData.y*100) |
else |
coords:SetText("--/--") |
end |
--BORDER/SIZE |
MinimapBorder:Hide() |
MinimapBorderTop:Hide() |
PocketPlot.SetShape() |
bg:SetFrameLevel(db.level - 1) |
bg:SetPoint("CENTER", Minimap, "CENTER") |
bgTex:SetAllPoints() |
local size = Minimap:GetWidth() + db.insets |
bg:SetHeight(size) |
bg:SetWidth(size) |
MiniMapMailFrame:ClearAllPoints() |
MiniMapMailFrame:SetPoint("BOTTOMRIGHT", Minimap, "BOTTOMRIGHT", 4, -5) |
MiniMapMailIcon:SetTexture("Interface\\Minimap\\Tracking\\Mailbox.blp") |
--VOICE CHAT ICON |
MiniMapVoiceChatFrameBorder:Hide() |
MiniMapVoiceChatFrameBackground:Hide() |
MiniMapVoiceChatFrame:ClearAllPoints() |
MiniMapVoiceChatFrame:SetPoint("BOTTOMRIGHT", Minimap, "BOTTOMRIGHT", -25, -5) |
--COORDINATES |
coordframe = CreateFrame("Frame", nil, Minimap) |
PocketPlot.coordframe = coordframe |
coordframe:Hide() --prevent OnUpdate from running until we're ready |
SetMapToCurrentZone() --force update for GetPlayerMapPosition() |
coordframe:SetScript("OnUpdate", UpdateCoords) |
if db.coords then |
coordframe:Show() |
end |
--CALENDAR BUTTON |
GameTimeFrame:SetAlpha(0) --Set alpha to 0 so that it's still hidden, but we'll see the ? flash for new invites |
--FINISHING TOUCHES |
MiniMapWorldMapButton:Hide() |
MinimapNorthTag:SetAlpha(0) --using SetAlpha because it reappears when toggling rotate minimap setting |
MinimapBorderTop:Hide() |
if db.hideNorth then |
MinimapNorthTag:SetAlpha(0) --using SetAlpha because it reappears when toggling rotate minimap setting |
MinimapCompassTexture:SetAlpha(0) |
end |
MinimapCluster:EnableMouse(false) |
if db.coords then |
coordframe:Show() |
end |
end |
local function PlayerLogin() |
## Interface: 70200 |
## Interface: 80000 |
## Title: PocketPlot |
## Author: Seerah |
## Notes: Minimap customization |
## Version: 3.0.1 |
## Version: 3.1 |
## OptionalDeps: Ace3, LibSharedMedia-3.0, AceGUI-3.0-SharedMediaWidgets |
## SavedVariables: PocketPlotDB |
## SavedVariablesPerCharacter: PocketPlotPCDB |
--[[----------------------------------------------------------------------------- |
EditBox Widget |
-------------------------------------------------------------------------------]] |
local Type, Version = "EditBox", 26 |
local Type, Version = "EditBox", 27 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
local value = frame:GetText() |
local cancel = self:Fire("OnEnterPressed", value) |
if not cancel then |
PlaySound("igMainMenuOptionCheckBoxOn") |
PlaySound(PlaySoundKitID and "igMainMenuOptionCheckBoxOn" or 856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON |
HideButton(self) |
end |
end |
]] |
do |
local Type = "Window" |
local Version = 5 |
local Version = 6 |
local function frameOnShow(this) |
this.obj:Fire("OnShow") |
end |
local function closeOnClick(this) |
PlaySound("gsTitleOptionExit") |
PlaySound(PlaySoundKitID and "gsTitleOptionExit" or 799) -- SOUNDKIT.GS_TITLE_OPTION_EXIT |
this.obj:Hide() |
end |
--[[ $Id: AceGUIWidget-DropDown-Items.lua 1153 2016-11-20 09:57:15Z nevcairiel $ ]]-- |
--[[ $Id: AceGUIWidget-DropDown-Items.lua 1161 2017-08-12 14:30:16Z funkydude $ ]]-- |
local AceGUI = LibStub("AceGUI-3.0") |
-- Does not close the pullout on click. |
do |
local widgetType = "Dropdown-Item-Toggle" |
local widgetVersion = 3 |
local widgetVersion = 4 |
local function UpdateToggle(self) |
if self.value then |
if self.disabled then return end |
self.value = not self.value |
if self.value then |
PlaySound("igMainMenuOptionCheckBoxOn") |
PlaySound(PlaySoundKitID and "igMainMenuOptionCheckBoxOn" or 856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON |
else |
PlaySound("igMainMenuOptionCheckBoxOff") |
PlaySound(PlaySoundKitID and "igMainMenuOptionCheckBoxOff" or 857) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_OFF |
end |
UpdateToggle(self) |
self:Fire("OnValueChanged", self.value) |
Button Widget |
Graphical Button. |
-------------------------------------------------------------------------------]] |
local Type, Version = "Button", 23 |
local Type, Version = "Button", 24 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
-------------------------------------------------------------------------------]] |
local function Button_OnClick(frame, ...) |
AceGUI:ClearFocus() |
PlaySound("igMainMenuOption") |
PlaySound(PlaySoundKitID and "igMainMenuOption" or 852) -- SOUNDKIT.IG_MAINMENU_OPTION |
frame.obj:Fire("OnClick", ...) |
end |
Slider Widget |
Graphical Slider, like, for Range values. |
-------------------------------------------------------------------------------]] |
local Type, Version = "Slider", 21 |
local Type, Version = "Slider", 22 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
end |
if value then |
PlaySound("igMainMenuOptionCheckBoxOn") |
PlaySound(PlaySoundKitID and "igMainMenuOptionCheckBoxOn" or 856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON |
self.slider:SetValue(value) |
self:Fire("OnMouseUp", value) |
end |
TabGroup Container |
Container that uses tabs on top to switch between groups. |
-------------------------------------------------------------------------------]] |
local Type, Version = "TabGroup", 35 |
local Type, Version = "TabGroup", 36 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
-------------------------------------------------------------------------------]] |
local function Tab_OnClick(frame) |
if not (frame.selected or frame.disabled) then |
PlaySound("igCharacterInfoTab") |
PlaySound(PlaySoundKitID and "igCharacterInfoTab" or 841) -- SOUNDKIT.IG_CHARACTER_INFO_TAB |
frame.obj:SelectTab(frame.value) |
end |
end |
--[[----------------------------------------------------------------------------- |
Checkbox Widget |
-------------------------------------------------------------------------------]] |
local Type, Version = "CheckBox", 22 |
local Type, Version = "CheckBox", 23 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
self:ToggleChecked() |
if self.checked then |
PlaySound("igMainMenuOptionCheckBoxOn") |
PlaySound(PlaySoundKitID and "igMainMenuOptionCheckBoxOn" or 856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON |
else -- for both nil and false (tristate) |
PlaySound("igMainMenuOptionCheckBoxOff") |
PlaySound(PlaySoundKitID and "igMainMenuOptionCheckBoxOff" or 857) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_OFF |
end |
self:Fire("OnValueChanged", self.checked) |
--[[----------------------------------------------------------------------------- |
Frame Container |
-------------------------------------------------------------------------------]] |
local Type, Version = "Frame", 25 |
local Type, Version = "Frame", 26 |
local AceGUI = LibStub and LibStub("AceGUI-3.0", true) |
if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end |
Scripts |
-------------------------------------------------------------------------------]] |
local function Button_OnClick(frame) |
PlaySound("gsTitleOptionExit") |
PlaySound(PlaySoundKitID and "gsTitleOptionExit" or 799) -- SOUNDKIT.GS_TITLE_OPTION_EXIT |
frame.obj:Hide() |
end |
--[[ $Id: AceGUIWidget-DropDown.lua 1116 2014-10-12 08:15:46Z nevcairiel $ ]]-- |
--[[ $Id: AceGUIWidget-DropDown.lua 1161 2017-08-12 14:30:16Z funkydude $ ]]-- |
local AceGUI = LibStub("AceGUI-3.0") |
-- Lua APIs |
do |
local widgetType = "Dropdown" |
local widgetVersion = 30 |
local widgetVersion = 31 |
--[[ Static data ]]-- |
local function Dropdown_TogglePullout(this) |
local self = this.obj |
PlaySound("igMainMenuOptionCheckBoxOn") -- missleading name, but the Blizzard code uses this sound |
PlaySound(PlaySoundKitID and "igMainMenuOptionCheckBoxOn" or 856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON |
if self.open then |
self.open = nil |
self.pullout:Close() |
-- :IterateOptionsTables() (and :GetOptionsTable() if only given one argument) return a function reference that the requesting config handling addon must call with valid "uiType", "uiName". |
-- @class file |
-- @name AceConfigRegistry-3.0 |
-- @release $Id: AceConfigRegistry-3.0.lua 1139 2016-07-03 07:43:51Z nevcairiel $ |
local MAJOR, MINOR = "AceConfigRegistry-3.0", 16 |
-- @release $Id: AceConfigRegistry-3.0.lua 1161 2017-08-12 14:30:16Z funkydude $ |
local CallbackHandler = LibStub("CallbackHandler-1.0") |
local MAJOR, MINOR = "AceConfigRegistry-3.0", 17 |
local AceConfigRegistry = LibStub:NewLibrary(MAJOR, MINOR) |
if not AceConfigRegistry then return end |
AceConfigRegistry.tables = AceConfigRegistry.tables or {} |
local CallbackHandler = LibStub:GetLibrary("CallbackHandler-1.0") |
if not AceConfigRegistry.callbacks then |
AceConfigRegistry.callbacks = CallbackHandler:New(AceConfigRegistry) |
end |
-- as well as associate it with a slash command. |
-- @class file |
-- @name AceConfig-3.0 |
-- @release $Id: AceConfig-3.0.lua 969 2010-10-07 02:11:48Z shefki $ |
-- @release $Id: AceConfig-3.0.lua 1161 2017-08-12 14:30:16Z funkydude $ |
--[[ |
AceConfig-3.0 |
]] |
local MAJOR, MINOR = "AceConfig-3.0", 2 |
local cfgreg = LibStub("AceConfigRegistry-3.0") |
local cfgcmd = LibStub("AceConfigCmd-3.0") |
local MAJOR, MINOR = "AceConfig-3.0", 3 |
local AceConfig = LibStub:NewLibrary(MAJOR, MINOR) |
if not AceConfig then return end |
local cfgreg = LibStub("AceConfigRegistry-3.0") |
local cfgcmd = LibStub("AceConfigCmd-3.0") |
--TODO: local cfgdlg = LibStub("AceConfigDialog-3.0", true) |
--TODO: local cfgdrp = LibStub("AceConfigDropdown-3.0", true) |
--- AceConfigDialog-3.0 generates AceGUI-3.0 based windows based on option tables. |
-- @class file |
-- @name AceConfigDialog-3.0 |
-- @release $Id: AceConfigDialog-3.0.lua 1139 2016-07-03 07:43:51Z nevcairiel $ |
-- @release $Id: AceConfigDialog-3.0.lua 1163 2017-08-14 14:04:39Z nevcairiel $ |
local LibStub = LibStub |
local MAJOR, MINOR = "AceConfigDialog-3.0", 61 |
local gui = LibStub("AceGUI-3.0") |
local reg = LibStub("AceConfigRegistry-3.0") |
local MAJOR, MINOR = "AceConfigDialog-3.0", 64 |
local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR) |
if not AceConfigDialog then return end |
AceConfigDialog.frame.closing = AceConfigDialog.frame.closing or {} |
AceConfigDialog.frame.closeAllOverride = AceConfigDialog.frame.closeAllOverride or {} |
local gui = LibStub("AceGUI-3.0") |
local reg = LibStub("AceConfigRegistry-3.0") |
-- Lua APIs |
local tconcat, tinsert, tsort, tremove, tsort = table.concat, table.insert, table.sort, table.remove, table.sort |
local strmatch, format = string.match, string.format |
end |
end |
local function validationErrorPopup(message) |
if not StaticPopupDialogs["ACECONFIGDIALOG30_VALIDATION_ERROR_DIALOG"] then |
StaticPopupDialogs["ACECONFIGDIALOG30_VALIDATION_ERROR_DIALOG"] = {} |
end |
local t = StaticPopupDialogs["ACECONFIGDIALOG30_VALIDATION_ERROR_DIALOG"] |
t.text = message |
t.button1 = OKAY |
t.preferredIndex = STATICPOPUP_NUMDIALOGS |
local dialog, oldstrata |
t.OnAccept = function() |
if dialog and oldstrata then |
dialog:SetFrameStrata(oldstrata) |
end |
end |
t.timeout = 0 |
t.whileDead = 1 |
t.hideOnEscape = 1 |
dialog = StaticPopup_Show("ACECONFIGDIALOG30_VALIDATION_ERROR_DIALOG") |
if dialog then |
oldstrata = dialog:GetFrameStrata() |
dialog:SetFrameStrata("TOOLTIP") |
end |
end |
local function ActivateControl(widget, event, ...) |
--This function will call the set / execute handler for the widget |
--widget:GetUserDataTable() contains the needed info |
end |
local rootframe = user.rootframe |
if type(validated) == "string" then |
--validate function returned a message to display |
if rootframe.SetStatusText then |
rootframe:SetStatusText(validated) |
else |
-- TODO: do something else. |
end |
PlaySound("igPlayerInviteDecline") |
del(info) |
return true |
elseif not validated then |
--validate returned false |
if rootframe.SetStatusText then |
if not validated or type(validated) == "string" then |
if not validated then |
if usage then |
rootframe:SetStatusText(name..": "..usage) |
validated = name..": "..usage |
else |
if pattern then |
rootframe:SetStatusText(name..": Expected "..pattern) |
validated = name..": Expected "..pattern |
else |
rootframe:SetStatusText(name..": Invalid Value") |
validated = name..": Invalid Value" |
end |
end |
end |
-- show validate message |
if rootframe.SetStatusText then |
rootframe:SetStatusText(validated) |
else |
-- TODO: do something else |
validationErrorPopup(validated) |
end |
PlaySound("igPlayerInviteDecline") |
PlaySound(PlaySoundKitID and "igPlayerInviteDecline" or 882) -- SOUNDKIT.IG_PLAYER_INVITE_DECLINE || XXX _DECLINE is actually missing from the table |
del(info) |
return true |
else |
--- AceConfigCmd-3.0 handles access to an options table through the "command line" interface via the ChatFrames. |
-- @class file |
-- @name AceConfigCmd-3.0 |
-- @release $Id: AceConfigCmd-3.0.lua 1045 2011-12-09 17:58:40Z nevcairiel $ |
-- @release $Id: AceConfigCmd-3.0.lua 1161 2017-08-12 14:30:16Z funkydude $ |
--[[ |
AceConfigCmd-3.0 |
-- TODO: plugin args |
local cfgreg = LibStub("AceConfigRegistry-3.0") |
local MAJOR, MINOR = "AceConfigCmd-3.0", 13 |
local MAJOR, MINOR = "AceConfigCmd-3.0", 14 |
local AceConfigCmd = LibStub:NewLibrary(MAJOR, MINOR) |
if not AceConfigCmd then return end |
AceConfigCmd.commands = AceConfigCmd.commands or {} |
local commands = AceConfigCmd.commands |
local cfgreg = LibStub("AceConfigRegistry-3.0") |
local AceConsole -- LoD |
local AceConsoleName = "AceConsole-3.0" |